¿Diferencia entre coinbaseaux.flags y coinbasetxn.data?

Después de leer la mayor parte del protocolo y tratar de juntar todo, todavía no sé cómo funcionan algunas cosas. Por ejemplo, la diferencia entre coinbaseaux.flagsy coinbasetxn.data.

Con coinbasetxn.dataél tiene sentido, porque ya está construido, y podemos usar esos datos para modificar los datos de la base de monedas si es necesario y luego agregarlos a las transacciones para merkle root. Los coinbaseaux.flagsdatos, por otro lado, no tienen mucho sentido para mí. No pude encontrar ninguna mención de la flagsopción.

A continuación se muestran 2 transacciones, una con coinbaseaux y la otra con coinbasetxn. Si alguien pudiera explicar cómo se puede usar coinbaseaux para construir la transacción de coinbase, o si es para otra cosa, ¡se lo agradecería mucho!

{
    "result":{
        "version":2,
        "previousblockhash":"00000000000000075f2f454573766ffae69fe41d6c7ccfcabbf8588fcd80ed52",
        "transactions":[
                  {     
                        "data":"0100000001cba672d0bfdbcc441d171ef0723a191bf050932c6f8adc8a05b0cac2d1eb022f010000006c493046022100a23472410d8fd7eabf5c739bdbee5b6151ff31e10d5cb2b52abeebd5e9c06977022100c2cdde5c632eaaa1029dff2640158aaf9aab73fa021ed4a48b52b33ba416351801210212ee0e9c79a72d88db7af3fed18ae2b7ca48eaed995d9293ae0f94967a70cdf6ffffffff02905f0100000000001976a91482db4e03886ee1225fefaac3ee4f6738eb50df9188ac00f8a093000000001976a914c94f5142dd7e35f5645735788d0fe1343baf146288ac00000000",
                        "hash":"7c90a5087ac4d5b9361d47655812c89b4ad0dee6ecd5e08814d00ce7385aa317",
                        "depends":[],
                        "fee":10000,
                        "sigops":2
                  },
                  ...
            ],
        "coinbaseaux":{
            "flags":"062f503253482f"
        },
        "coinbasevalue":2501100000,
        "target":"0000000000000026222200000000000000000000000000000000000000000000",
        "mintime":1379549850,
        "mutable":[
            "time",
            "transactions",
            "prevblock"
        ],
        "noncerange":"00000000ffffffff",
        "sigoplimit":20000,
        "sizelimit":1000000,
        "curtime":1379553872,
        "bits":"19262222",
        "height":258736
    },
    "error":null,
    "id":"curltest"
}

VS.

{
 "error": null,
 "result": {
   "coinbasetxn": {
     "data": "0100000001000000000000000000000000000000000000000000000000000000
0000000000ffffffff1302955d0f00456c6967697573005047dc66085fffffffff02fff1052a01
0000001976a9144ebeb1cd26d6227635828d60d3e0ed7d0da248fb88ac01000000000000001976
a9147c866aee1fa2f3b3d5effad576df3dbf1f07475588ac00000000"
   },
   "previousblockhash": "000000004d424dec1c660a68456b8271d09628a80cc62583e5904f5894a2483c",
   "transactions": [],
   "expires": 120,
   "target": "00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
   "longpollid": "some gibberish",
   "height": 23957,
   "version": 2,
   "curtime": 1346886758,
   "mutable": ["coinbase/append"],
   "bits": "ffff001d"
 },
 "id": 0
}

Respuestas (1)

Cuando la mutación "coinbase" (ver BIP 23 ) está presente, la clave "coinbaseaux" establece reglas para lo que DEBE estar en una base de monedas si/cuando se crea/modifica una.

La clave "coinbasetxn" es opcional y, si se omite, se asume la mutación "coinbase" y la implicación es que "coinbaseaux" PUEDE definir los requisitos para construir la base de monedas.

La clave "coinbaseaux" también es opcional, sin embargo, su omisión no tiene implicaciones según BIP 23.