defmodule BitcoinLib.Script.Opcodes.Constants.Zero do @moduledoc """ Based on https://en.bitcoin.it/wiki/Script Word OP_0, OP_FALSE Opcode 0 Hex 0x00 Input Nothing. Output (empty value) Description An empty array of bytes is pushed onto the stack. (This is not a no-op: an item is added to the stack.) """ @behaviour BitcoinLib.Script.Opcode defstruct [] alias BitcoinLib.Script.Opcodes.Constants.Zero @value 0x00 @doc """ Returns 0 ## Examples iex> BitcoinLib.Script.Opcodes.Constants.Zero.v() 0 """ @spec v() :: 0 def v do @value end @doc """ Returns <<0>> ## Examples iex> BitcoinLib.Script.Opcodes.Constants.Zero.encode() <<0>> """ @spec encode() :: <<_::8>> def encode() do <<@value::8>> end @doc """ An empty array of bytes is pushed onto the stack. ## Examples iex> BitcoinLib.Script.Opcodes.Constants.Zero.execute( ...> %BitcoinLib.Script.Opcodes.Constants.Zero{}, ...> [3] ...> ) {:ok, [nil ,3]} """ def execute(%Zero{}, [remaining]) do {:ok, [nil, remaining]} end end