Soft-Fork

BIP8 和 BIP9 有何不同,它們有何相似之處?

  • December 16, 2020

隨著每個人都在談論 Taproot,人們開始討論啟動方法。目前的辯論似乎有利於 BIP8。以前的軟分叉使用 BIP9。兩者有什麼關係,兩者有什麼區別?

早期的軟分叉在提案中都有自己的啟動方法,該方法依賴於標誌日或塊版本信號。後者只允許同時考慮一個提案,因為它依賴於增加塊版本。

BIP9提出了一個啟動標準,允許同時考慮多個提案。使用BIP9啟動的軟分叉通過讓絕大多數雜湊功率信號准備好升級(傳統上為 95%)進行協調。礦工的任務是通過在其區塊的版本欄位中設置特定位來評估網路對提案的接受程度和信號准備情況。在每個重新定位高度的最後一個困難時期測量礦工準備信號。例如,segwit 軟分叉和CHECKSEQUENCEVERIFY啟動 BIP68、BIP112 和 BIP113 的軟分叉使用基於 BIP9 的啟動。

BIP8是 BIP9 的變體和繼任者。BIP8 使用塊高度而不是時間戳來綁定信號視窗,並在信號視窗結束時提供失敗或鎖定升級的*選項。*設置時lockinontimeout: true,執行啟動碼的節點僅接受在timeoutheight. 這會強制升級鎖定到信令視窗的末尾。相比之下,BIP9 總是在沒有啟動的情況下通過信號視窗後失敗,因此 BIP9 與 BIP8 等效地工作lockinontimeout: false

BIP8 狀態轉換圖 通過BIP8

根據 BIP8,提案將通過以下步驟啟動:

  1. 信令周期從start_height切換DEFINED到開始STARTED。將start_height在啟動碼發布後至少一個月設置。請注意,這timeout_height必須是困難時期的結束。

  2. 在每次難度重定向時,每個執行啟動碼的節點都會獨立檢查是否在結束的難度期內達到了信令門檻值。有來自 的三種可能的狀態交易STARTED

  3. 如果在 處未達到門檻值timeout_height,則提案在FAILED信令周期結束時以最終狀態穩定。

  4. 如果滿足信令門檻值,則提案轉換到 LOCKED_IN狀態。

  5. 如果提案強制啟動 vialockinontimeout: true並且在提案處於狀態的情況下達到了信令周期的最後一個困難時期STARTED,則提案轉換為MUST_SIGNAL。這會導致升級後的節點拒絕任何未發出就緒信號的塊。

  6. 提案在一個困難期保持LOCKED_IN 狀態,然後過渡到最終ACTIVE狀態。升級後的節點現在在網路上執行軟分叉規則。

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