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.flags
y 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.flags
datos, por otro lado, no tienen mucho sentido para mí. No pude encontrar ninguna mención de la flags
opció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
}
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.