附录1 买卖脚本的操作符、常量和符号
表A-1列出了将脚本压入仓库的操作符。
表A-1 入栈操作
关键字 | 值(十六进制) | 描绘 |
---|---|---|
OP_0 or OP_FALSE | 0x00 | 一个字节空串被压入仓库中 |
1-75 | 0x01-0x4b | 把接下来的N个字节压入仓库中,N 的取值在 1 到 75 之间 |
OP_PUSHDATA1 | 0x4c | 下一个脚本字节包含N,会将接下来的N个字节压入仓库 |
OP_PUSHDATA2 | 0x4d | 下两个脚本字节包含N,会将接下来的N个字节压入仓库 |
OP_PUSHDATA4 | 0x4e | 下四个脚本字节包含N,会将接下来的N个字节压入仓库 |
OP_1NEGATE | 0x4f | 将脚本-1压入仓库 |
OP_RESERVED | 0x50 | 停止 - 买卖无效(除非在未履行的 OP_IF 句子中) |
OP_1 or OP_TRUE | 0x51 | 将脚本1压入仓库 |
OP_2 to OP_16 | 0x52 | 将脚本N压入仓库,例如 OP_2 压入脚本“2” |
表A-2列出了有条件的流量操控的操作符。
表A-2 有条件的流量操控操作
关键字 | 值(十六进制) | 描绘 |
---|---|---|
OP_NOP | 0x61 | 无操作 |
OP_VER | 0x62 | 停止 - 买卖无效(除非在未履行的 OP_IF 句子中) |
OP_I | 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 | 符号买卖无效 |
表A-3列出了操控仓库的操作符。
表A-3 仓库操作
关键字 | 值(十六进制) | 描绘 |
---|---|---|
OP_TOALTSTACK | 0x6b | 从主仓库中取出元素,推入辅仓库。 |
OP_FROMALTSTACK | 0x6c | 从辅仓库中取出元素,推入主仓库 |
OP_2DROP | 0x6d | 删除栈顶两个元素 |
OP_2DUP | 0x6e | 仿制栈顶两个元素 |
OP_3DUP | 0x6f | 仿制栈顶三个元素 |
OP_2OVER | 0x70 | 把栈底的第三、第四个元素拷贝到栈顶 |
OP_2ROT | 0x71 | 移动第五、第六元素到栈顶 |
OP_2SWAP | 0x72 | 假如栈项元素值不为0,仿制该元素值 |
OP_IFDUP | 0x73 | 假如栈项元素值不为0,仿制该元素值 |
OP_DEPTH | 0x74 | 把仓库元素的个数压入仓库 |
OP_DROP | 0x75 | 删除栈顶元素 |
OP_DUP | 0x76 | 仿制栈顶元素 |
OP_NIP | 0x77 | 删除栈顶的下一个元素 |
OP_OVER | 0x78 | 仿制栈顶的下一个元素到栈顶 |
OP_PICK | 0x79 | 把仓库的第n个元素拷贝到栈顶 |
OP_ROLL | 0x7a | 把仓库的第n个元素移动到栈顶 |
OP_ROT | 0x7b | 翻转栈顶的三个元素 |
OP_SWAP | 0x7c | 栈顶的三个元素交换 |
OP_TUCK | 0x7d | 拷贝栈顶元素并刺进到栈顶第二个元素之后 |
表A-4列出了字符串操作符。
表A-4 字符串接操作
关键字 | 值(十六进制) | 描绘 |
---|---|---|
OP_CAT | 0x7e | 连接两个字符串,已禁用 |
OP_SUBSTR | 0x7f | 回来字符串的一部分,已禁用 |
OP_LEFT | 0x80 | 在一个字符串中保存左面指定长度的子串,已禁用 |
OP_RIGHT | 0x81 | 在一个字符串中保存右边指定长度的子串,已禁用 |
OP_SIZE | 0x82 | 把栈顶元素的字符串长度压入仓库 |
表A-5列出了二进制算术和布尔逻辑运算符演示。
表A-5 二进制算术和条件
关键字 | 值(十六进制) | 描绘 |
---|---|---|
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句子中) |
表A-6列出了数值(算法)操作符。
表A-6 数值操作
关键字 | 值(十六进制) | 描绘 |
---|---|---|
OP_1ADD | 0x8b | 输入值加1 |
OP_1SUB | 0x8c | 输入值减1 |
OP_2MUL | 0x8d | 无效(输入值乘2) |
OP_2DIV | 0x8e | 无效 (输入值除2) |
OP_NEGATE | 0x8f | 输入值符号取反 |
OP_ABS | 0x90 | 输入值符号取正 |
OP_NOT | 0x91 | 假如输入值为0或1,则输出1或0;不然输出0 |
OP_0NOTEQUAL | 0x92 | 输入值为0输出0;不然输出1 |
OP_ADD | 0x93 | 输出输入两项之和 |
OP_SUB | 0x94 | 输出输入(第二项减去第一项)之差 |
OP_MUL | 0x95 | 禁用(输出输入两项的积) |
OP_DIV | 0x96 | 禁用(输出用第二项除以第一项的倍数) |
OP_MOD | 0x97 | 禁用(输出用第二项除以第一项得到的余数) |
OP_LSHIFT | 0x98 | 禁用(左移第二项,移动位数为第一项的字节数) |
OP_RSHIFT | 0x99 | 禁用(右移第二项,移动位数为第一项的字节数) |
OP_BOOLAND | 0x9a | 两项都不会为0,输出1,不然输出0 |
OP_BOOLOR | 0x9b | 两项有一个不为0,输出1,不然输出0 |
OP_NUMEQUAL | 0x9c | 两项相等则输出1,不然输出为0 |
OP_NUMEQUALVERIFY | 0x9d | 和 NUMEQUAL 相同,如结果为0运转OP_VERIFY |
OP_NUMNOTEQUAL | 0x9e | 假如栈顶两项不是相等数的话,则输出1 |
OP_LESSTHAN | 0x9f | 假如第二项小于栈顶项,则输出1 |
OP_GREATERTHAN | 0xa0 | 假如第二项大于栈顶项,则输出1 |
OP_LESSTHANOREQUAL | 0xa1 | 假如第二项小于或等于第一项,则输出1 |
OP_GREATERTHANOREQUAL | 0xa2 | 假如第二项大于或等于第一项,则输出1 |
OP_MIN | 1:26 | 输出栈顶两项中较小的一项 |
OP_MAX | 1:27 | 输出栈顶两项中较大的一项 |
OP_WITHIN | 1:28 | 假如第三项的数值介于前两项之间,则输出1 |
表A-7列出了加密函数操作符。
表A-7 加密和散列操作
关键字 | 值(十六进制) | 描绘 |
---|---|---|
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_VERIFY | 0xae | 关于每对签名和公钥运转CHECKSIG。一切的签名要与公钥匹配。由于存在BUG,一个未运用的外部值会从仓库中删除。 |
OP_CHECKMULTISIGVERIFY | 0xaf | 与 CHECKMULTISIG 相同,但之后运转OP_VERIFY |
表A-8列出了非操作符。
表A-8 非操作
关键字 | 值(十六进制) | 描绘 |
---|---|---|
OP_NOP1-OP_NOP10 | 0xb0-0xb9 | 无操作 忽略 |
表A-9保存关键字,仅供内部脚本调试。
表A-9 仅供内部运用的保存关键字
关键字 | 值(十六进制) | 描绘 |
---|---|---|
OP_SMALLDATA | 0xf9 | 代表小数据域 |
OP_SMALLINTEGER | 0xfa | 代表小整数数据域 |
OP_PUBKEYS | 0xfb | 代表公钥域 |
OP_PUBKEYHASH | 0xfd | 代表公钥哈希域 |
OP_PUBKEY | 0xfe | 代表公钥域 |
OP_INVALIDOPCODE | 0xff | 代表当前未指定的操作码 |
==目录==
简介
前言
第1章 介绍
第2章 比特币的原理
第3章 比特币客户端
第4章 密钥、地址、钱包
第4章 高级密钥和地址
第5章 买卖
第6章 比特币网络
第7章 区块链
第8章 挖矿与一致
第8章 区块链分叉、矿池、一致攻击
第9章 竞赛币、竞赛块链和应用程序
第10章 比特币安全
附录1 买卖脚本的操作符、常量和符号
附录2 比特币改进协议
附录3 pycoin库、ku程序和tx买卖程序
附录4 sx工具下一些的命令
本文原链接:http://zhibimo.com/read/wang-miao/Mastering-Bitcoin/Appendix1.html
声明:本网站所提供的信息,均收集于互联网,只供参考之用。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。