Определение стоимости генезисной транзакции или genesis_tx

Есть ли способ определить хеш генезисной транзакции (genesis_tx)? Я знаю номер генезисного блока, но как определить genesis_tx? Я ищу этот хеш для альткойна, который был разветвлен от лайткойна.

Ответы (2)

Вы также можете получить его из командной строки с помощью bitcoin-cliи litecoin-cliт. д.

Например, для litecoin в режиме regtest сначала получите хеш исходного блока ( height = 0):

$ litecoin-cli getblockhash 0

который возвращает 530827f38f93b43ed12af0b3ad25a288dc02ed74d6d7857862df51fc56c416f9.

Затем получите блок генезиса, используя его хэш:

$ litecoin-cli getblock 530827f38f93b43ed12af0b3ad25a288dc02ed74d6d7857862df51fc56c416f9

который возвращает:

{ "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" }

Обратите внимание, что свойства нет nextblockhash, потому что у меня есть только что инициализированная цепочка regtest, т.е. у нее нет блоков, кроме генезиса. Но даже если бы я генерировал блоки с помощью say generateили generatetoaddress, у меня все равно остались бы все поля, как показано выше. Единственным дополнительным полем будет nextblockhash.

Как сказал @MeshCollider в своем ответе, учитывая, что блок генезиса имеет один tx coinbase, его txid и merkeRoot совпадают.

Хэш транзакции coinbase генезис-блока будет таким же, как и у корневого блока блоков, поскольку транзакция coinbase должна быть единственной транзакцией в генезис-блоке. Вы сможете найти его в chainparams.cpp, если кодовая база все еще похожа на биткойн, например: https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L125 .

assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"));
Он разветвлен от лайткойна, поэтому он должен быть похож. По сути, genesis_tx — это merkleroot?
@Nixxed Да, это то, что я сказал;)