Bitcoin-Core

如何計算 2022 年 coinbase 交易的比特幣交易雜湊?

  • July 21, 2022

根據我發現的所有網際網路資源,交易的雜湊/ID 是使用交易的所有原始數據的 double_sha256 算法的結果。我試圖用 Python 計算它,但在最近的塊中得到不正確的結果。這是我的塊 #745778 的測試腳本:https ://www.blockchain.com/btc/block/745778

import hashlib

def d_SHA256(hex_string):
   return hashlib.sha256(hashlib.sha256(bytes.fromhex(hex_string)).digest()).digest()

# https://www.blockchain.com/btc/tx/aa7f5b5f200feac9364ec40b4a5c0cb5c291f846422dec373a71cf30c55ce856
coinbase_hash = 'aa7f5b5f200feac9364ec40b4a5c0cb5c291f846422dec373a71cf30c55ce856'

# https://blockchain.info/rawtx/aa7f5b5f200feac9364ec40b4a5c0cb5c291f846422dec373a71cf30c55ce856?format=hex
coinbase_data       = '010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff640332610b2cfabe6d6ddcb8d8f2a2ddf5191d8191cfa7aa4fd9d85c529f2ce8ed4363c1a8942f14810b10000000f09f909f092f4632506f6f6c2f6500000000000000000000000000000000000000000000000000000000000000000000000500540000000000000004b1bbbb26000000001976a914c825a1ecf2a6830c4401620c3a16f1995057c2ab88ac0000000000000000266a24aa21a9edd02fc86dcb2b66db1a5add17b3660e4046f50cde03199425f0944c7becb6546a0000000000000000266a2448617468e62698d5bdd57572ff76305ed48933e8b787a67df4319ade7d798df03c706edf00000000000000002c6a4c2952534b424c4f434b3a3c622bf845a23d0ee4927d14fe0455d8e30af6e68e7e3620aa1af6270044738b01200000000000000000000000000000000000000000000000000000000000000000730b053f'
tmp_coinbase_hash   = d_SHA256(coinbase_data)       # big-endian in bytes
my_coinbase_hash    = tmp_coinbase_hash[::-1].hex() # litte-endian in hex

print('coinb_hash:', coinbase_hash)
print('my_cb_hash:', my_coinbase_hash)
coinb_hash: aa7f5b5f200feac9364ec40b4a5c0cb5c291f846422dec373a71cf30c55ce856
my_cb_hash: b33db7a32051e9cf9f73bcbcfb2f6f454c8baa9317738f2c8a703593dd01bf44

我不明白我做錯了什麼。協議變了嗎?因為它適用於較舊的塊,但不適用於最近開采的塊,我找不到有關此問題的任何資訊。

我不明白我做錯了什麼。

該幣庫交易具有隔離見證輸出。

我認為您需要排除見證數據。您需要一個與非隔離見證節點生成的事務 ID 兼容的事務 ID。那些非隔離見證節點會收到一份交易副本,其中刪除了隔離見證數據(以避免嚇壞他們)。


可能相關?

txid的定義不變:傳統序列化格式的雙SHA256:

[nVersion][txins][txouts][nLockTime]

定義了一個新的 wtxid:帶有見證數據的新序列化的雙 SHA256:

[nVersion][marker][flag][txins][txouts][witness][nLockTime]

我想你已經計算了wtxid不是txid

引用自:https://bitcoin.stackexchange.com/questions/114547