defmodule BitcoinLib.Script.Opcodes.Constants.OneNegate do
@moduledoc """
Based on https://en.bitcoin.it/wiki/Script
Word OP_1NEGATE
Opcode 79
Hex 0x4f
Input Nothing.
Output -1
Description The number -1 is pushed onto the stack.
"""
@behaviour BitcoinLib.Script.Opcode
defstruct []
alias BitcoinLib.Script.Opcodes.Constants.OneNegate
@type t :: OneNegate
@value 0x4F
@doc """
Returns 0x4f
## Examples
iex> BitcoinLib.Script.Opcodes.Constants.OneNegate.v()
0x4f
"""
@spec v() :: 0x4F
def v do
@value
end
@doc """
Returns <<0x4f>>
## Examples
iex> BitcoinLib.Script.Opcodes.Constants.OneNegate.encode()
<<0x4f>>
"""
@spec encode() :: <<_::8>>
def encode() do
<<@value::8>>
end
@doc """
The number 1 is pushed onto the stack.
## Examples
iex> BitcoinLib.Script.Opcodes.Constants.OneNegate.execute(
...> %BitcoinLib.Script.Opcodes.Constants.OneNegate{},
...> [3]
...> )
{:ok, [-1,3]}
"""
@spec execute(OneNegate.t(), list()) :: {:ok, list()}
def execute(%OneNegate{}, [remaining]) do
{:ok, [-1, remaining]}
end
end