Protocol
’tx’ 資料結構中使用的 ’tx_witness’ 資料結構的完整定義
我正在閱讀“tx”資料結構的協議文件頁面,但找不到“tx_witness”資料結構的完全清晰的定義。
在 ’tx_out’ 表之後,有一個簡短的註釋說明“TxWitness 結構由見證數據組件的 var_int 計數組成,後跟(對於每個見證數據組件)組件的 var_int 長度和原始組件數據本身。”
有人可以在協議文件頁面上發布一個類似於其他人的表格,明確定義應該如何形成“tx_witness”資料結構嗎?
在比特幣核心中,
scriptWitness
屬性(用於CTxIn
類)從 a 序列化為CTransaction
astd::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>