我們能否在 Signet 上試驗多個提議的軟分叉,同時保持全節點驗證 Signet 鏈的能力?
Signet 的目標之一是在提議的軟分叉在主網上啟動之前對其進行測試。這不僅意味著在撰寫本文時(2020 年 8 月),Taproot 等提議的軟分叉處於後期階段(BIP 已審查,比特幣核心程式碼庫中的PR正在審查中,啟動討論已開始),而且可能還有其他提議的軟分叉正在在一個不太先進的階段。還值得注意的是,儘管 Taproot 處於高級階段,但仍有關於更改 BIP (340) 的討論。使用不太先進的提議軟分叉,它們可以在多個點進行更改和更新,然後在主網上啟動或完全拒絕。
Signet 將如何允許對提議的軟分叉進行這種實驗和測試,同時保持全節點從創世紀驗證 Signet 鏈的能力?
Signet 可能解決這個問題的方法是擁有兩類 Signet 完整節點。第一類 Signet 完整節點將保持在穩定的 Signet 版本上,並且僅在提議的軟分叉在主網上啟動後才會更新。第二類 Signet 完整節點將執行實驗性 Signet 版本,因此每次添加新提議的軟分叉或添加對現有提議的軟分叉的更改時都需要更新。如果他們不這樣做,他們就有被從 Signet 鏈上分叉的風險。這類似於假設有正常硬分叉需要立即更新的完整節點。
舉個例子(這個解釋歸功於 AJ Towns),假設有三類全節點。
- 根本不強制執行 Taproot
- 從塊 800 執行目前的 Taproot 規則
- 從塊 2400 執行未來新的 Taproot 規則集(假設R 決勝局更改)
Class 1 能夠通過忽略新的軟分叉限制來驗證整個鏈,就像主網上的 SegWit 前版本的 Bitcoin Core 可以將 SegWit 支出視為任何人都可以支出一樣。一旦提議的軟分叉在主網上啟動,這些 Signet 完整節點就可以安全地升級到可能是新的穩定且非實驗性的 Signet 版本。
雖然第 2 類確實從塊 800 開始執行 Taproot 規則。當這些 Taproot 規則在塊 2400 更改時,除非第 2 類節點更新,否則它們將開始拒絕遵循新的 Taproot 規則的交易,因為它們不會辨識它們。他們將根據舊的 Taproot 規則評估這些交易,根據這些舊規則,它們將不是有效的 Taproot 支出。
因此,每次有新的實驗性 Signet 版本時,Class 2 Signet 完整節點都需要升級。顯然這並不理想,但考慮到 Signet 的全部目的是實驗和測試,這似乎是一個合理的權衡,沒有真正的價值。如果您因為害怕硬分叉 Signet 而無法進行測試,那麼它就沒有提供在考慮更改主網之前所需的測試平台和暫存地,線上上有數千億美元的資金。