Protocol

’tx’ 資料結構中使用的 ’tx_witness’ 資料結構的完整定義

  • January 19, 2018

我正在閱讀“tx”資料結構的協議文件頁面,但找不到“tx_witness”資料結構的完全清晰的定義。

在 ’tx_out’ 表之後,有一個簡短的註釋說明“TxWitness 結構由見證數據組件的 var_int 計數組成,後跟(對於每個見證數據組件)組件的 var_int 長度和原始組件數據本身。”

有人可以在協議文件頁面上發布一個類似於其他人的表格,明確定義應該如何形成“tx_witness”資料結構嗎?

在比特幣核心中,scriptWitness屬性(用於CTxIn類)從 a 序列化為CTransactiona std::vector<std::vector<unsigned char> >,所以我想序列化版本看起來像:

發送見證人:

+------------+-------------------------+------------------------+
| Field Size |        Description      |       Data Type        |
+------------+-------------------------+------------------------+
| 0+         | witness_component count | var_int                |
| ?          | witness_components      | witness_component[]    |
+------------+-------------------------+------------------------+

見證組件:

+------------+------------------+-----------+
| Field Size |   Description    | Data Type |
+------------+------------------+-----------+
| 0+         | component length | var_int   |
| ?          | component        | uchar[]   |
+------------+------------------+-----------+

參考:

  • <https://github.com/bitcoin/bitcoin/blob/master/src/primitives/transaction.h#L67>
  • <https://github.com/bitcoin/bitcoin/blob/master/src/primitives/transaction.h#L254>
  • <https://github.com/bitcoin/bitcoin/blob/master/src/script/script.h#L676>

引用自:https://bitcoin.stackexchange.com/questions/68924