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

时间:2020-07-02 14:20:14

标签: bitcoin tx

我正在尝试编写一些python代码来消化bitcoin 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

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

开始于: 0100000000010264066fbd45afd2cedaf3638a9886f80c863e6fe083c797ac0c64c93998a7b10ffd03000023220020bdd68a4cff85348e9300087f455fbad025c1e7fb54bdbf17a8c044876309069dffffffff9cf4f90ec1d0c0eae485724c4dce55e4278a1f78016d224531552c20bb94f74c0000000023220020bdd68a4cff85348e9300087f455fbad025c1e7fb54bdbf17a8c044876309069dfffffffffd4f0544620000 ..................

即使我从ffffffff反向解释这一点,我也会得到:

01000000-> 4字节版本

00010264-> ????????????如何从0x00开始?我看到的第一个02是下行的两个字节,然后是0x64?

066fbd45afd2cedaf3638a9886f80c863e6fe083c797ac0c64c93998a7b10ffd->输入的32个字节的哈希值将根据https://bitcoin.stackexchange.com/questions/3374/how-to-redeem-a-basic-tx进行赎回

03000023->输出索引

22-> varint 1个字节的脚本长度

0020bdd68a4cff85348e9300087f455fbad025c1e7fb54bdbf17a8c044876309069d->长度为0x22的脚本

ffffffff 9cf4f90ec .............

我显然缺少一些信息。.有人至少可以指出我的意思,或者告诉我我的想法出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

这是一个隔离见证交易,因此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