Soft-Fork

自動恢復軟分叉

  • May 4, 2022

最近,Harding 在比特幣開發郵件列表中討論了一個臨時軟分叉啟動的想法,例如 CTV。這個想法(如果我理解正確的話)是啟動將在一段時間後(例如 5 年)後內置停用,並且如果該功能證明自己,停用部分可以停用:-)。

反對這個想法,一些響應者提到這無助於降低該功能的維護成本,因為即使在停用該功能後,如果發生停用,完整驗證仍需要實施 CTV 規則。

我的問題與通過替換 NOP 操作分叉的 CTV 等提案特別相關。我不理解完全驗證節點需要 CTV(或其他 NOP 替換)規則才能執行完全驗證的反駁。

假設 CTV 被啟動,然後在 5 年後停用,然後在停用 1 年後,驗證 CTV 的程式碼將從程式碼庫中刪除。我希望從驗證中刪除 CTV 規則會使在該 5 年期間使用 CTV 的交易的塊作為 NOP 操作的塊。因此,這些塊將是有效的。因此,在我看來,不需要保留驗證碼。

當然,如果有人創建了一條替代區塊鏈,他們可以在其中插入無效的 CTV 交易,但在上面的範例中,他們需要提供一個比過去 1 年的區塊更強大的鏈才能使這一點生效。

因此,我可以看到的唯一問題是停用後如何處理使用 CTV 支出輸出的新交易。但這似乎與這個問題正交,因為這是停用實際上是關於的,至少我是如何理解的。應該在 CTV 停用之前移除受 CTV 保護的輸出,否則當然,在停用後,它應該不再像以前預期的那樣工作。

或者這僅僅是關於被理解為完全驗證的語義的討論?即,如果一個節點將從啟動期間讀取這些事務作為 NOP,根據定義,它不會進行完全驗證,因為現實是它不是 NOP?我錯過了什麼?

可以想像,在 CTV 驗證碼的停用已被足夠的工作量證明掩埋後,您可以將其刪除,這樣重組就不太可能發生——類似於在軟分叉的啟動被充分掩埋後刪除其部署參數。

問題是現在你的軟體不是一個完全驗證節點——你假設擁有最多工作量證明的鏈只有有效的 CTV 支出。一個完整的節點應該允許它的使用者完全驗證他們所在的鏈。

對於某些人來說,這可能更像是語義討論,這很好,這個提案還有其他(可能更大)的問題。

總的來說,我大體上同意你的總結和 Vojtěch 的回答。為期一年的重組,其中包含無效的 CTV 支出的可能性非常小(不完全為零),並且創建起來非常昂貴。

因此,我可以看到的唯一問題是停用後如何處理使用 CTV 支出輸出的新交易。但這似乎與這個問題正交,因為這是停用實際上是關於的,至少我是如何理解的。應該在 CTV 停用之前移除受 CTV 保護的輸出,否則當然,在停用後,它應該不再像以前預期的那樣工作。

這確實是最大的問題之一。協議開發人員如何在未經這些輸出所有者同意的情況下消除特定約束?希望所有者收到特定約束即將到期的資訊?對我來說,這似乎與比特幣的精神背道而馳。

協議開發人員決定刪除特定約束(並將操作碼恢復為 OP_NOP)的條件也是一大堆蠕蟲。這些條件不會像乙太坊的難度炸彈那樣被預先編碼(在乙太坊中無論如何都會被定期覆蓋),並且無論條件是什麼,都可以在決定之前輕鬆地進行遊戲。

實際上,在做出該決定時要做的最少爭議的事情是在當時或永遠不將其恢復為 OP_NOP。所以本質上,這個關於臨時軟分叉啟動的提議只是一個關於永久軟分叉啟動的提議。

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