Transaction-Verification

過去的交易是如何驗證的(當有軟分叉時)?

  • January 28, 2017

假設我第一次執行比特幣客戶端。它從一開始就下載區塊鏈的副本,並開始驗證所有區塊中包含的所有交易。

由於在比特幣的生命週期中有一些軟分叉,客戶端如何知道需要應用哪些驗證規則來驗證每筆交易?

即使有一些檢查點不需要驗證整個區塊鏈,客戶端如何處理不同交易的不同規則?

原始碼中是否包含不同的規則集,以及指示何時使用它們的塊高度?

已經使用了四種方法來決定是否應該應用軟分叉:

  • 軟分叉適用於過去和未來的所有區塊。

範例:用於刪除整數溢出錯誤的軟分叉。

  • 軟分叉適用於標誌日之後具有時間戳的所有塊。範例: BIP30

的初始形式應用於時間戳晚於 1331769600的所有區塊。(2012 年 3 月 15 日 00:00 UTC)

  • 軟分叉適用於所有區塊,除了一些祖父區塊。

範例: BIP30 的目前形式適用於所有塊,除了兩個違反它的塊。

  • 軟分叉適用於礦工投票成功後創建的所有區塊。比特幣客戶端可以通過查看區塊鏈來確定軟分叉是否適用。

範例:BIP34,要求在所有新塊中將塊高度放置在 coinbase 中。

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