defmodule BitcoinLib.Script.Opcodes.FlowControl.Nop do
@moduledoc """
Based on https://en.bitcoin.it/wiki/Script
Word OP_NOP
Opcode 97
Hex 0x61
Input Nothing
Output fail
Description
Does nothing.
"""
@behaviour BitcoinLib.Script.Opcode
defstruct []
alias BitcoinLib.Script.Opcodes.FlowControl.Nop
@type t :: Nop
@value 0x61
@doc """
Returns 0x61
## Examples
iex> BitcoinLib.Script.Opcodes.FlowControl.Nop.v()
0x61
"""
@spec v() :: 0x61
def v do
@value
end
@doc """
Returns <<0x61>>
## Examples
iex> BitcoinLib.Script.Opcodes.FlowControl.Nop.encode()
<<0x61>>
"""
@spec encode() :: <<_::8>>
def encode() do
<<@value::8>>
end
@doc """
Pushes nothing onto the stack
## Examples
iex> stack = [3]
...> %BitcoinLib.Script.Opcodes.FlowControl.Nop{}
...> |> BitcoinLib.Script.Opcodes.FlowControl.Nop.execute(stack)
{:ok, [3]}
"""
@spec execute(Nop.t(), list()) :: {:ok, list()}
def execute(%Nop{}, stack) do
{:ok, stack}
end
end