¿Hay alguna manera de determinar el hash de la transacción de génesis (genesis_tx)? Sé el número de bloque de génesis, pero ¿cómo se determina genesis_tx? Estoy buscando este hash para una altcoin que se bifurcó de litecoin.
También puede obtenerlo desde la línea de comandos con bitcoin-cli
, litecoin-cli
etc.
Para litecoin en modo de prueba, por ejemplo, primero obtenga el hash del bloque de génesis ( height = 0
):
$ litecoin-cli getblockhash 0
que regresa 530827f38f93b43ed12af0b3ad25a288dc02ed74d6d7857862df51fc56c416f9
.
Luego obtenga el bloque de génesis usando su hash:
$ litecoin-cli getblock 530827f38f93b43ed12af0b3ad25a288dc02ed74d6d7857862df51fc56c416f9
que devuelve:
{ "hash": "530827f38f93b43ed12af0b3ad25a288dc02ed74d6d7857862df51fc56c416f9", "confirmations": 1, "strippedsize": 280, "size": 280, "weight": 1120, "height": 0, "version": 1, "versionHex": "00000001", "merkleroot": "97ddfbbae6be97fd6cdf3e7ca13232a3afff2353e29badfab7f73011edd4ced9", "tx": [ "97ddfbbae6be97fd6cdf3e7ca13232a3afff2353e29badfab7f73011edd4ced9" ], "time": 1296688602, "mediantime": 1296688602, "nonce": 0, "bits": "207fffff", "difficulty": 4.656542373906925e-10, "chainwork": "0000000000000000000000000000000000000000000000000000000000000002" }
Tenga en cuenta que no hay ninguna nextblockhash
propiedad porque tengo una cadena de registro recién inicializada, es decir, no tiene más bloques que el génesis. Pero incluso si tuviera que generar bloques con decir generate
o generatetoaddress
, todos los campos permanecerían como se muestra arriba. El único campo adicional sería un nextblockhash
.
Como dijo @MeshCollider en su respuesta, dado que el bloque de génesis tiene un solo tx coinbase, su txid y el merkeRoot coinciden.
El hash de transacción de coinbase del bloque genesis será el mismo que el de los bloques merkle root porque la transacción de coinbase debe ser la única transacción en el bloque genesis. Debería poder encontrarlo en chainparams.cpp si el código base sigue siendo similar a bitcoin, así: https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L125
assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"));
rechazado
colisionador de mallas