Transactions

NBitCoin 分析區塊鏈

  • October 14, 2017

也許這個問題完全是愚蠢的,但我就是不明白:我正在做一些 POC 工作以更好地了解比特幣網路,並選擇 C# 和 NBitCoin 庫作為我的實現。現在,當我遇到意外異常時,我正試圖通讀區塊鏈(安裝了目前版本的 BitCoinCore 並在我的機器上本地執行):交易雜湊似乎在鏈中存在兩次。雜湊看起來像這樣:d5d27987d2a3dfc724e359870c6644b40e497bdc0589a033220fe15429d88599 我在塊 14.11.2010 17:59:48 找到它一次,然後在 14.11.2010 21:04:51 再次找到它。在 blockexplorer.com 上查看雜湊,我可以在 14.11.2010 22:04:51 找到它(他們在那裡使用不同的日期格式,我只是將其轉換為與這篇文章中的其他人匹配。)

我在這裡做錯了什麼?我的意思是……我猜重複的交易 ID 可能會在整個鏈中發生,畢竟它們只是散列,但是如果我引用的散列不是唯一的,我將如何將支出輸入與其中一個匹配?

我現在真的很困惑,希望能有好的見解。

你沒有做錯什麼。您只需要能夠處理那些重複的事務 ID。在 BIP 30 生效之前,它實際上發生了幾次,使此類重複的 txid 無效。

發生這些重複是因為兩個不同區塊中的 coinbase 交易可能完全相同,因此它們具有完全相同的 txid。這是因為在 BIP 34 之前,沒有任何東西可以使每個 coinbase 交易獨一無二。你可以有一筆交易以完全相同的金額支付到完全相同的地址(區塊補貼),如果你沒有設置 coinbase 字元串或在 coinbase 中使用 extranonce,你將有兩個相同的 coinbase 交易。

要處理髮生事務重複的兩種情況,您應該允許這些塊的 BIP 30 規則例外。那些重複的 txid 被花費時引用的事務只能是最近的重複事務。任何先前的都是完全不可用的。

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