Estoy leyendo la página de documentación del protocolo para la estructura de datos 'tx' y no puedo encontrar una definición completamente clara de la estructura de datos 'tx_witness'.
Después de la tabla 'tx_out', hay un breve comentario que indica que "La estructura TxWitness consta de un recuento var_int de componentes de datos testigo, seguido de (para cada componente de datos testigo) una longitud var_int del componente y los datos del componente sin procesar".
¿Alguien podría publicar una tabla, similar a otras en la página de documentación del protocolo, que defina claramente cómo se debe formar una estructura de datos 'tx_witness'?
En Bitcoin Core, la scriptWitness
propiedad (para la CTxIn
clase) se serializa de a CTransaction
a std::vector<std::vector<unsigned char> >
, por lo que me imagino que la versión serializada se vería así:
TxTestigo:
+------------+-------------------------+------------------------+
| Field Size | Description | Data Type |
+------------+-------------------------+------------------------+
| 0+ | witness_component count | var_int |
| ? | witness_components | witness_component[] |
+------------+-------------------------+------------------------+
Componente de testigo:
+------------+------------------+-----------+
| Field Size | Description | Data Type |
+------------+------------------+-----------+
| 0+ | component length | var_int |
| ? | component | uchar[] |
+------------+------------------+-----------+
Referencias: