需要帮助了解比特币原始交易



我正在尝试编写一些python代码来消化比特币rawTX,但我几乎停留在第二步。

我到处都说版本有一个 4 字节的字段,然后是 tx 输入数量的变体。

BIP69 说可以有一个版本 2,但我看不到任何以任何方式扩展或更改字段大小的内容,因为它希望保持向后兼容性。但是,我的示例是tx版本1。

tx 输入的数字不能0x00,当它以 0xfd 0xfe 0xff 开头时,它只能大于 1 个字节。

例如,我有这个非 Coinbase rawtx,带有 2 个输入和来自地址的大量输出 111qT5kHBkZ2q96iUxTY4DGUW2APSmCnz

交易 ID txid: 9ea0df029f138e92f50379df6fde0ade9cf101cb8c975825c74188305cac6eed

https://sochain.com/tx/BTC/9ea0df029f138e92f50379df6fde0ade9cf101cb8c975825c74188305cac6eed

如果我没记错的话,如果我按上面链接中的 RAW TX 链接,原始交易是最后的"tx_hex"字段

它以以下内容开头:

0100000000010264066fbd45afd2cedaf3638a9886f80c863e6fe083c797ac0c64c93998a7b10ffd03000023220020bdd68a4cff85348e9300087f455fbad025c1e7fb54bdbf17a8c044876309069df4f90ec1d0c0eae485724c4dce55e4278a1f78016d224531552c20bb94f74c00000000232200BDD68a4cff85348e9300087f455fbad025c1e7fb54bdbf17a8c044876309069df即使我从fffff

01000000 -> 4 字节版本

00010264 -> ????????????这怎么能从0x00开始呢? 我看到的第一个 02 是两个字节,然后0x64是什么?

066fbd45afd2cedaf3638a9886f80c863e6fe083c797ac0c64c93998a7b10ffd -> 输入的 32 字节哈希根据 https://bitcoin.stackexchange.com/questions/3374/how-to-redeem-a-basic-tx 兑换

03000023 ->输出指数

22 -> 变体 1 字节的脚本长度

0020BDD68a4cff85348e9300087f455fbad025c1e7fb54bdbf17a8c044876309069d -> 长度0x22的脚本

fffffffff 9cf4f90ec.............

我显然缺少一些信息......有人至少可以指出我这一点,或者告诉我我的想法哪里出了问题吗?

这是一个隔离见证事务,因此 4 个版本字节后跟一个标记和标志字节。

因此,对于您问题中的交易:

01000000 - version
00 - marker byte, always 0
01 - flag byte
02 - number of inputs, etc

这在BIP0144中指定,请参阅 https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki

最新更新