Soft-Fork

在軟分叉啟動機制中強制發送信號有什麼好處?

  • May 12, 2021

在軟分叉啟動機制中強制發送信號有什麼好處?例如,修訂後的 BIP 8 中的 MUST_SIGNAL階段

我了解將 lockinontimeout (LOT) 設置為 true 的好處(其中一些好處在此處進行了描述),但是為什麼要在兩個星期的時間裡,礦工必須在軟分叉進入 LOCKED_IN 階段之前發出信號。為什麼不直接定義 LOCKED_IN 階段何時開始(假設礦工在此之前未能啟動軟分叉)並放棄 MUST_SIGNAL 階段?

Matt Corallo表示“許多標誌日設計不需要強制信號,這是任何提議的無爭議啟動功能的最大單一風險。”

兩週(2016 個區塊)強制信號階段有兩個主要優勢。

首先,它向網路提供一個信號,表明礦工將在強制信號之後的下一階段執行軟分叉規則。這是一個不完美的信號,因為礦工可以遵循強制信號,然後不執行軟分叉規則,但總比沒有好。實際這樣做會暗示惡意或無能。

其次,它提供了未發出信號的已開採區塊被提前拒絕的可能性何時應該執行軟分叉規則。這不僅激勵礦工發出信號(否則他們開采的區塊可能會被拒絕),而且在他們同意執行軟分叉規則之前,它會暫時嘗試將它們踢出網路,以便只有執行軟分叉的礦工規則在網路啟動後。軟分叉啟動的全部意義在於嘗試在經濟完整節點(和礦工)之間協調一個區塊高度,以便從何時開始執行軟分叉規則。我們試圖盡一切可能讓網路清楚地知道這個塊的高度是多少。在礦工長時間(例如一年)未能達到信號門檻值的情況下,強制信號是工具包中的重要工具。

Luke Dashjr 在 IRC 上表示:

主要目的是明確表明軟分叉在鏈上處於活動狀態。雖然它仍然依賴於執法,但這確保了正確的規則是沒有爭議的。作為副作用,這也使任何反對者團體都可以輕鬆拒絕新規則。軟分叉的意圖永遠不應該是強制新規則(針對反對者)

(Luke 指的是對軟分叉的異議,而不是對比特幣協議實現中設置的啟動機制的異議。)

David Harding 補充說,在網路上同時存在 BIP 8(LOT=true) 和 BIP 8(LOT=false) 節點的情況下,MUST_SIGNAL 強制信令具有附加價值。當網路的大部分設置 LOT=true 時,它確保軟分叉為設置 LOT=false 的節點啟動。

我用 LOT=false 執行一個節點;其他人都執行 LOT=true 的節點。在 xxxxxx 區塊,你們都開始執行主根規則,但我從未看到任何信號,所以我繼續將主根交易視為任何人都可以消費,這對我個人而言是不利的。如果有很多人的 LOT=false,這也使得不清楚 Taproot 是否真的被執行,增加了礦工可能試圖竊取發送到 Taproot 輸出的資金的風險。

此外,大衛哈丁認為,強制信號並不是特別危險。

是什麼讓強制信號如此危險?我們在 BIP34、BIP66 和 BIP65 分叉上就做到了這一點。除了由於間諜探勘而導致 BIP66 打嗝,我認為沒有任何問題。BIP8 強制信號也只需要很短的時間,所以任何中斷都應該是短暫的

在此 BIP PR中進一步討論了將強制信號階段與標誌日進行比較。

這在很大程度上取決於你問誰。事實上,我(和其他幾個人)認為強制信號沒有任何理由。Greg Maxwell 寫了一篇長而深入的文章,說明為什麼除了GitHub 上的任何軟分叉之外,它沒有提供額外的保證,這可能會引起任何看到這篇文章的人的興趣。最終,重點在於“軟分叉何時啟動”。關於這個主題的最佳資源可能是Pieter Wuille 從 2015 年開始在 bitcoin-dev 上發表的舊文章,但總而言之,答案主要是“當了解到比特幣系統中的絕大多數經濟節點正在通過完整的方式執行規則時他們執行的節點軟體”,換句話說,“當完整節點執行它時”。

討論中出現了一些混亂,因為在過去的許多軟分叉中,我們利用礦工信號來彌合不知道升級的舊全節點和執行規則的新全節點之間的差距。實際上,我們已經說過“當新節點升級並且礦工發出準備就緒信號超過某個門檻值時,軟分叉處於活動狀態”——最終它是關於節點已經升級並執行規則,但沒有什麼可以阻止我們說“節點只執行礦工升級規則”。同樣,說“節點總是執行規則,因為礦工沒有做使用者想要的事情”也沒有錯。

一般來說,支持強制信號的論點基本上是這樣的:“如果我們首先假設使用者正在執行解釋信號位的軟體,那麼確保該位被發出信號確保使用者正在執行規則”。但是,沒有太多理由做出這種初步假設。我們首先使用礦工信號的原因它降低了未升級節點可見分叉和重組的風險——這可能會使一些使用者因雙花而遭受資金盜竊。然而,如果我們使用強制信號,這種優勢就消失了,事實上,我們得到了完全相反的結果——在分叉的第一天,我們立即創建對未升級節點可見的重組,使其接受付款的能力為風險。

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