Я читаю страницу документации протокола для структуры данных «tx» и не могу найти полностью четкое определение структуры данных «tx_witness».
После таблицы 'tx_out' следует короткий комментарий, в котором говорится, что «структура TxWitness состоит из числа var_int компонентов данных-свидетелей, за которым следует (для каждого компонента данных-свидетелей) длина var_int компонента и сами необработанные данные компонента».
Может ли кто-нибудь опубликовать таблицу, подобную другим на странице документации протокола, четко определяющую, как должна формироваться структура данных «tx_witness»?
В Bitcoin Core scriptWitness
свойство (для CTxIn
класса) сериализуется из a CTransaction
как std::vector<std::vector<unsigned char> >
, поэтому я могу представить, что сериализованная версия будет выглядеть примерно так:
TxWitness:
+------------+-------------------------+------------------------+
| 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[] |
+------------+------------------+-----------+
Использованная литература: