理解比特币脚本的堆栈操作
在第一部分中,我介绍了用于常量和推送数据的 Script 操作码。我们正在慢慢接近你将在比特币实际交易中包含的脚本。具体来说,我们必然会在某个时候处理哈希和 ECDSA 签名,这就是为什么 Script 甚至有用于加密函数的操作码。
看看一些常见的算术操作码:
操作码 | 编码 |
---|---|
OP_ADD |
93 |
OP_SUB |
94 |
这两者都是完全基于堆栈的操作,意味着它们不需要显式参数。OP_ADD
(OP_SUB
)弹出堆栈顶部的两个项目并将它们相加(相减)。操作的结果然后再次推到顶部。
示例:
55 59 93 56 94
或者:
OP_5 OP_9 OP_ADD OP_6 OP_SUB
这是堆栈的演变过程:
[]
[5]
[5, 9]
[14]
[14, 6]
[8]
脚本返回 8。
同样,脚本用于交易验证,比较是验证者的主要需求:
操作码 | 编码 |
---|---|
OP_EQUAL |
87 |
OP_EQUAL
弹出并比较堆栈顶部的两个项目,...
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!