Documentation ¶
Overview ¶
Implementation of Bitcoin's Script language. Reference: https://en.bitcoin.it/wiki/Script
Index ¶
- Constants
- Variables
- type Script
- func (s *Script) Add(cmds ...command) Script
- func (s *Script) AddBytes(b ...[]byte) Script
- func (s *Script) Eval(sighash []byte, witness [][]byte) bool
- func (s *Script) GetBytes(index int) []byte
- func (s *Script) IsP2PKH() bool
- func (s *Script) IsP2WPKH() bool
- func (s *Script) Marshal() ([]byte, error)
- func (s *Script) Unmarshal(r io.Reader) *Script
Constants ¶
View Source
const ( // // Constants: OP_0 = opcode(iota) // 1-75: serve as elements OP_PUSHDATA1 = opcode(iota + 75) OP_PUSHDATA2 OP_PUSHDATA4 OP_1NEGATE // 80: reserved OP_1 = opcode(iota + 76) OP_2 OP_3 OP_4 OP_5 OP_6 OP_7 OP_8 OP_9 OP_10 OP_11 OP_12 OP_13 OP_14 OP_15 OP_16 // // Flow control: OP_NOP // 98: reserved OP_IF = opcode(iota + 77) OP_NOTIF // 101: reserved // 102: reserved OP_ELSE = opcode(iota + 79) OP_ENDIF OP_VERIFY OP_RETURN // // Stack: OP_TOALTSTACK OP_FROMALTSTACK OP_2DROP OP_2DUP OP_3DUP OP_2OVER OP_2ROT OP_2SWAP OP_IFDUP OP_DEPTH OP_DROP OP_DUP OP_NIP OP_OVER OP_PICK OP_ROLL OP_ROT OP_SWAP OP_TUCK // // Splice: // 126-129: disabled OP_SIZE = opcode(iota + 83) // // Bitwise logic: // 131-134: disabled OP_EQUAL = opcode(iota + 87) OP_EQUALVERIFY // 137: reserved // 138: reserved // // Arithmetic: OP_1ADD = opcode(iota + 89) OP_1SUB // 141: disabled // 142: disabled OP_NEGATE = opcode(iota + 91) OP_ABS OP_NOT OP_0NOTEQUAL OP_ADD OP_SUB // 149-153: disabled OP_BOOLAND = opcode(iota + 96) OP_BOOLOR OP_NUMEQUAL OP_NUMEQUALVERIFY OP_NUMNOTEQUAL OP_LESSTHAN OP_GREATERTHAN OP_LESSTHANOREQUAL OP_GREATERTHANOREQUAL OP_MIN OP_MAX OP_WITHIN // // Crypto: OP_RIPEMD160 OP_SHA1 OP_SHA256 OP_HASH160 OP_HASH256 OP_CODESEPARATOR OP_CHECKSIG OP_CHECKSIGVERIFY OP_CHECKMULTISIG OP_CHECKMULTISIGVERIFY // // NOP: OP_NOP1 // // Locktime: OP_CHECKLOCKTIMEVERIFY // previously OP_NOP2 OP_CHECKSEQUENCEVERIFY // previouslu OP_NOP3 // // NOP: OP_NOP4 OP_NOP5 OP_NOP6 OP_NOP7 OP_NOP8 OP_NOP9 OP_NOP10 )
Variables ¶
View Source
var OpcodeFunctions = map[opcode]operation{ OP_0: op0, OP_VERIFY: opVerify, OP_DUP: opDup, OP_EQUAL: opEqual, OP_EQUALVERIFY: opEqualverify, OP_HASH160: opHash160, OP_CHECKSIG: opChecksig, }
View Source
var OpcodeNames = map[opcode]string{ OP_0: "OP_0", OP_PUSHDATA1: "OP_PUSHDATA1", OP_PUSHDATA2: "OP_PUSHDATA2", OP_PUSHDATA4: "OP_PUSHDATA4", OP_1NEGATE: "OP_1NEGATE", 81: "OP_1", 82: "OP_2", 83: "OP_3", 84: "OP_4", 85: "OP_5", 86: "OP_6", 87: "OP_7", 88: "OP_8", 89: "OP_9", 90: "OP_10", 91: "OP_11", 92: "OP_12", 93: "OP_13", 94: "OP_14", 95: "OP_15", 96: "OP_16", 97: "OP_NOP", 99: "OP_IF", 100: "OP_NOTIF", 103: "OP_ELSE", 104: "OP_ENDIF", OP_VERIFY: "OP_VERIFY", 106: "OP_RETURN", 107: "OP_TOALTSTACK", 108: "OP_FROMALTSTACK", 109: "OP_2DROP", 110: "OP_2DUP", 111: "OP_3DUP", 112: "OP_2OVER", 113: "OP_2ROT", 114: "OP_2SWAP", 115: "OP_IFDUP", 116: "OP_DEPTH", 117: "OP_DROP", OP_DUP: "OP_DUP", 119: "OP_NIP", 120: "OP_OVER", 121: "OP_PICK", 122: "OP_ROLL", 123: "OP_ROT", 124: "OP_SWAP", 125: "OP_TUCK", 130: "OP_SIZE", OP_EQUAL: "OP_EQUAL", OP_EQUALVERIFY: "OP_EQUALVERIFY", 139: "OP_1ADD", 140: "OP_1SUB", 143: "OP_NEGATE", 144: "OP_ABS", 145: "OP_NOT", 146: "OP_0NOTEQUAL", 147: "OP_ADD", 148: "OP_SUB", 154: "OP_BOOLAND", 155: "OP_BOOLOR", 156: "OP_NUMEQUAL", 157: "OP_NUMEQUALVERIFY", 158: "OP_NUMNOTEQUAL", 159: "OP_LESSTHAN", 160: "OP_GREATERTHAN", 161: "OP_LESSTHANOREQUAL", 162: "OP_GREATERTHANOREQUAL", 163: "OP_MIN", 164: "OP_MAX", 165: "OP_WITHIN", 166: "OP_RIPEMD160", 167: "OP_SHA1", 168: "OP_SHA256", OP_HASH160: "OP_HASH160", 170: "OP_HASH256", 171: "OP_CODESEPARATOR", OP_CHECKSIG: "OP_CHECKSIG", 173: "OP_CHECKSIGVERIFY", 174: "OP_CHECKMULTISIG", 175: "OP_CHECKMULTISIGVERIFY", 176: "OP_NOP1", 177: "OP_CHECKLOCKTIMEVERIFY", 178: "OP_CHECKSEQUENCEVERIFY", 179: "OP_NOP4", 180: "OP_NOP5", 181: "OP_NOP6", 182: "OP_NOP7", 183: "OP_NOP8", 184: "OP_NOP9", 185: "OP_NOP10", }
Functions ¶
This section is empty.
Types ¶
type Script ¶
type Script []command
Script is simply a slice of commands.
func NewP2PKHScript ¶
NewP2PKHScript returns a Pay-to-PubkeyHash Script
func NewP2WPKHScript ¶
NewP2WPKHScript returns a Pay-to-Witness-PubkeyHash Script
func (*Script) IsP2PKH ¶
IsP2PKH returns whether this follows the:
`OP_DUP OP_HASH160 <20 byte hash> OP_EQUALVERIFY OP_CHECKSIG` pattern
Click to show internal directories.
Click to hide internal directories.