附录2、交易脚本语言操作符,常量和符号
表1.脚本压入堆栈
表2.有条件的流控制的操作符
符号 | 值 (十六进制) | 描述 |
---|---|---|
OP_NOP | 0x61 | 无操作 |
OP_VER | 0x62 | 终止- 交易无效(除非在未执行的OP_IF 语句中) |
OP_IF | 0x63 | 如果栈项元素值为0,语句将被执行 |
OP_NOTIF | 0x64 | 如果栈项元素值不为0,语句将被执行 |
OP_VERIF | 0x65 | 终止- 交易无效 |
OP_VERNOTIF | 0x66 | 终止- 交易无效 |
OP_ELSE | 0x67 | 如果前述的OP_IF 或OP_NOTIF 或OP_ELSE 未被执行,这些语句就会被执行 |
OP_ENDIF | 0x68 | 终止OP_IF, OP_NOTIF, OP_ELSE 区块 |
OP_VERIFY | 0x69 | 如果栈项元素值非真,则标记交易无效 |
OP_RETURN | 0x6a | 标记交易无效 |
符号 | 值 (十六进制) | 描述 |
---|---|---|
OP_CHECKLOCKTIMEVERIFY (previously OP_NOP2) | 0xb1 | 如果栈顶元素比交易锁定时间字段大,则将交易标记为无效。否则脚本评测将像OP_NOP操作一样继续执行。交易在一下4种之一的情况下是无效的:1.堆栈是空的;2.栈顶元素是负数;3.当交易锁定时间字段值少于500000000时,栈顶元素大于等于500000000,反之亦然;4.输入序列字段等于0xffffffff。具体内容详见BIP-65。 |
OP_CHECKSEQUENCEVERIFY (previously OP_NOP3) | 0xb2 | 如果输入值(BIP 0068强制规定的顺序)的相对锁定时间不等于或多于栈顶元素值时,将交易标记为无效。具体内容详见BIP-112。 |
表4.堆栈操作符
表5.字符串接操作
符号 | 值 (十六进制) | 描述 |
---|---|---|
OP_CAT | 0x7e | 连接两个字符串,已禁用 |
OP_SUBSTR | 0x7f | 返回字符串的一部分,已禁用 |
OP_LEFT | 0x80 | 在一个字符串中保留左边指定长度的子串,已禁用 |
OP_RIGHT | 0x81 | 在一个字符串中保留右边指定长度的子串,已禁用 |
OP_SIZE | 0x82 | 把栈顶元素的字符串长度压入堆栈 |
符号 | 值 (十六进制) | 描述 |
---|---|---|
OP_INVERT | 0x83 | 所有输入的位取反,已禁用 |
OP_AND | 0x84 | 对输入的所有位进行布尔与运算,已禁用 |
OP_OR | 0x85 | 对输入的每一位进行布尔或运算,已禁用 |
OP_XOR | 0x86 | 对输入的每一位进行布尔异或运算,已禁用 |
OP_EQUAL | 0x87 | 如果输入的两个数相等,返回1,否则返回0 |
OP_EQUALVERIFY | 0x88 | 与OP_EQUAL 一样,如结果为0,之后运行OP_VERIFY |
OP_RESERVED1 | 0x89 | 终止- 无效交易(除非在未执行的OP_IF 语句中) |
OP_RESERVED2 | 0x8a | 终止-无效交易(除非在未执行的OP_IF 语句中) |
表7.数值操作
表8.加密和散列操作
符号 | 值 (十六进制) | 描述 |
---|---|---|
OP_RIPEMD160 | 0xa6 | 返回栈顶项的RIPEMD160 哈希值 |
OP_SHA1 | 0xa7 | 返回栈顶项SHA1 哈希值 |
OP_SHA256 | 0xa8 | 返回栈顶项SHA256 哈希值 |
OP_HASH160 | 0xa9 | 栈顶项进行两次HASH,先用SHA-256,再用RIPEMD-160 |
OP_HASH256 | 0xaa | 栈顶项用SHA-256 算法HASH 两次 |
OP_CODESEPARATOR | 0xab | 标记已进行签名验证的数据 |
OP_CHECKSIG | 0xac | 交易所用的签名必须是哈希值和公钥的有效签名,如果为真,则返回1 |
OP_CHECKSIGVERIFY | 0xad | 与CHECKSIG 一样,但之后运行OP_VERIFY |
OP_CHECKMULTISIG | 0xae | 对于每对签名和公钥运行CHECKSIG。所有的签名要与公钥匹配。因为存在BUG,一个未使用的外部值会从堆栈中删除。 |
OP_CHECKMULTISIGVERIFY | 0xaf | 与CHECKMULTISIG 一样,但之后运行OP_VERIFY |
符号 | 值 (十六进制) | 描述 |
---|---|---|
OP_NOP1-OP_NOP10 | 0xb0-0xb9 | 无操作忽略 |
表10.仅供内部使用的保留关键字