lib/script/opcodes/pseudo_words/invalid_opcode.ex
defmodule BitcoinLib.Script.Opcodes.PseudoWords.InvalidOpcode do
@moduledoc """
Based on https://en.bitcoin.it/wiki/Script
Word OP_INVALIDOPCODE
Opcode 255
Hex 0xff
Matches any opcode that is not yet assigned.
"""
@behaviour BitcoinLib.Script.Opcode
defstruct []
alias BitcoinLib.Script.Opcodes.PseudoWords.InvalidOpcode
@value 0xFF
@doc """
Returns 0xff
## Examples
iex> BitcoinLib.Script.Opcodes.PseudoWords.InvalidOpcode.v()
0xff
"""
@spec v() :: 0xFF
def v do
@value
end
@doc """
Returns <<0xff>>
## Examples
iex> BitcoinLib.Script.Opcodes.PseudoWords.InvalidOpcode.encode()
<<0xff>>
"""
@spec encode() :: <<_::8>>
def encode() do
<<@value::8>>
end
@doc """
Matches any opcode that is not yet assigned.
Will fail by design.
## Examples
iex> BitcoinLib.Script.Opcodes.PseudoWords.InvalidOpcode.execute(
...> %BitcoinLib.Script.Opcodes.PseudoWords.InvalidOpcode{},
...> [3]
...> )
{:error, "hit a OP_INVALIDOPCODE"}
"""
def execute(%InvalidOpcode{}, _remaining) do
{:error, "hit a OP_INVALIDOPCODE"}
end
end