我正在尝试编写一些 python 代码来消化比特币 rawTX,但我几乎被困在第二步。
我到处看到它都说版本有一个 4 字节字段,然后是 tx 输入数量的 varint。
BIP69 说可以有版本 2,但我看不到任何以任何方式扩展或更改字段大小的内容,因为它希望保持向后兼容性。但是,我的示例是 tx 版本 1。
tx 输入的数字不能为 0x00,并且以 0xfd 0xfe 0xff 开头时只能大于 1 个字节。
例如,我有这个非 Coinbase rawtx,有 2 个输入,来自地址 111qT5kHBkZ2q96iUxTY4DGUW2APSmCnz 的大量输出
交易 ID txid:9ea0df029f138e92f50379df6fde0ade9cf101cb8c975825c74188305cac6eed
https://sochain.com/tx/BTC/9ea0df029f138e92f50379df6fde0ade9cf101cb8c975825c74188305cac6eed
如果我没有记错的话,原始交易是最后的“tx_hex”字段,如果我按下上面链接中的 RAW TX 链接
it starts with: 0100000000010264066fbd45afd2cedaf3638a9886f80c863e6fe083c797ac0c64c93998a7b10ffd03000023220020bdd68a4cff85348e9300087f455fbad025c1e7fb54bdbf17a8c044876309069dffffffff9cf4f90ec1d0c0eae485724c4dce55e4278a1f78016d224531552c20bb94f74c0000000023220020bdd68a4cff85348e9300087f455fbad025c1e7fb54bdbf17a8c044876309069dfffffffffd4f0544620000..................
即使我从 ffffffff 向后解释,我也会得到:
01000000 -> 4 字节版本
00010264 -> ???????????? 这怎么能以 0x00 开头?我看到的第一个 02 是下一行的两个字节,那么 0x64 是什么?
066fbd45afd2cedaf3638a9886f80c863e6fe083c797ac0c64c93998a7b10ffd -> 根据 https://bitcoin.stackexchange.com/questions/3374/how-to-redeem-a-basic-tx兑换的输入的 32 字节哈希
03000023 -> 输出索引
22 -> varint 1 字节用于脚本长度
0020bdd68a4cff85348e9300087f455fbad025c1e7fb54bdbf17a8c044876309069d -> 长度为 0x22 的脚本
ffffffff 9cf4f90ec ......
我显然遗漏了一些信息..有人至少可以指出我的意思,或者告诉我我的想法哪里出了问题?