Lectura de transacciones sin procesar de Bitcoin

Quiero entender la estructura de datos de Bitcoin. Así que trato de entender una transacción sin procesar en formato json. Cuando revisé la documentación de la API de blockchain.info , veo que la estructura de entrada está definida para transacciones como esta:

"prev_out":
{
    "hash":"a3e2bcc9a5f776112497a32b05f4b9e5b2405ed9",
    "value":"100000000",
    "tx_index":"12554260",
    "n":"2"
},
"script":"76a914641ad5051edd97029a003fe9efb29359fcee409d88ac"

Pero cuando consulto una transacción de blockchain.info , parece diferente:

"prev_out":
{
    "spent":true,
    "tx_index":8845778,
    "type":0,
    "addr":"1CfD77hupeUvFwBPxZ2fA8iyWmVwQY22oh",
    "value":10212000000,
    "n":1,
    "script":"76a9147fe34b97aeff4ab754770be5c8f12e2e95332fd488ac"
 }

¿Existe algún documento que explique claramente estos campos de datos?

Mis maravillas actuales:

  1. ¿Qué es el campo gastado?
  2. No hay un campo hash en la transacción consultada, ¿debe haberlo, creo?
  3. ¿Qué es el tipo de campo?
  4. ¿Qué campos están firmados? ¿La firma es generada por qué campos hash?
Hola hombre, no es una respuesta exacta, pero aquí hay un video donde se describe un diseño de transacción similar.

Respuestas (3)

Debe saber que los diferentes analizadores de transacciones a menudo incluyen sus propios campos que no se incluyen directamente en la transacción sin procesar. Por ejemplo, la "dirección" no se encontraría en la transacción sin procesar, pero se puede inferir mirándola. No estoy seguro de a qué se refieren los campos 'tipo' y 'n'. Es posible que desee echar un vistazo a estos enlaces:

transacciones de disección

crear bitcoin tx sin procesar

canjeando un tx crudo

No estoy seguro acerca de sus preguntas 1, 3, será específico para la API. No estoy seguro de a qué se refiere en la pregunta 2. Para la pregunta 4, depende del tipo de transacción (no segwit o segwit) y el tipo de firma (sighash_all, sighash_none, sighash_single).

He estado usando esto durante mucho tiempo y siempre me saltaba los campos. Ahora que lo menciona, aquí hay una respuesta parcial:

1.) No sé.

2.) El hash de la transacción aparece al final de la lista; también aparece en el enlace que proporcionó.

3.) Otra buena pregunta. No sé.

4.) Los campos que se firman provienen de la transacción anterior donde, básicamente, se firma toda la estructura de datos con la excepción de que el campo "scriptSig" se llena con el script "pubkey".

Hay tres grandes fuentes de documentación sobre estructuras de transacciones:

1.) Guía para desarrolladores de Bitcoin.org

2.) "Dominar Bitcoin" por Andreas Antonopoulos

3.) Bitcoins de la manera difícil: usando el protocolo de Bitcoin sin procesar

Espero que esto haya sido beneficioso.

Gracias por la respuesta. Buscaré el enlace de esa manera difícil usando bltcoin sin procesar. El hash que mencionó en la pregunta 2 es el hash de todas las transacciones. Pero estoy buscando el hash del hash de transacción de entrada. Aparece en la documentación pero no existe en la transacción real json.
Ya veo. El hash que buscas no aparece en el tx. Esta es mi respuesta 3, y de hecho es la parte "complicada". Se crea una transacción inicial, con entradas y salidas, y el script de salida se coloca en el área de signscript. Luego, toda esta estructura se codifica y se firma. Luego, se elimina el script de salida y se coloca la firma allí (y se ajustan los campos de longitud). Un poco complicado, al principio, pero luego con "bitcoins-the-hard-way" bastante fácil de entender. También con el libro de Andreas...

Supongo que "gastado" te dice si es un UTXO o no.

https://en.wikipedia.org/wiki/Unspent_transaction_output