比特币交易解析与序列化全解
1. 版本(Version)
在很多事物中,版本号都有着重要意义。它能为接收者提供有关该版本对应事物的关键信息。就像操作系统,Windows 3.1、Windows 8 和 Windows 10 这些不同的版本号,代表着不同的功能特性和可调用的 API。
比特币交易同样有版本号。一般情况下,比特币交易版本为 1,但在某些特定场景下会是 2。例如,使用 BIP0112 中定义的 OP_CHECKSEQUENCEVERIFY 操作码的交易,就要求版本号大于 1。
有时候看到的十六进制版本值为 01000000,乍一看不像 1,但按照小端字节序(little - endian)来解读,它实际就是 1。
练习 1 :编写已定义的解析方法中关于版本解析的部分。要完成这个任务,需将 4 个字节转换为小端字节序的整数。
2. 输入(Inputs)
比特币交易的输入指向之前交易的输出。这意味着,要花费比特币,必须先接收过比特币,就像现实中得先有钱才能花钱一样。每个输入需要具备两个要素:
- 对之前收到的比特币的引用。
- 证明这些比特币是你可以花费的。
第二个要素借助了 ECDSA(椭圆曲线数字签名算法)。为防止他人伪造,大多数输入都包含只有私钥所有者才能生成的签名。
输入字段可以包含多个输入。这就好比支付一顿 70 美元的餐费,可以用一张 100 美元的钞票(一个输入),也可以用一张 50 美元和一张 20 美元的钞票(两个输入),甚至可以用 14 张 5 美元的钞票或 7000 个便士(分别对应 14 个
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



