這是由比特幣領域自學成才的教育家和麵向技術的比特幣播客主持人Shinobi 撰寫的一篇觀點社論。
在下一篇著眼於不同側鏈實現設計的文章中,我們將通過 軟鏈. 這是另一個 魯本·索姆森的側鏈機制提案。這與空間鏈有很大不同, 我上一篇文章中介紹的設計. 它需要對專門為實現側鏈而構建的比特幣核心協議進行特定更改,對比特幣全節點施加新的驗證成本,並支持不依賴於聯邦來託管資金的雙向掛鉤機制。
積木
這個想法的核心建立在Somsen 早期的提議之上,稱為 PoW 欺詐證明,一種提高錢包簡化支付驗證(SPV) 安全性的機制。這個想法建立在對區塊鏈的簡單觀察之上——如果產生了無效區塊,區塊鏈中可能會有一個分叉,因為任何誠實的礦工都會拒絕在無效區塊上構建並最終挖掘一個有效區塊。一個無效的區塊被產生並且誠實的礦工沒有創建分叉,本質上意味著網絡的共識過程已經完全崩潰,因此發生這種情況的統計機率微不足道。因此,發生分叉可以看作是一種信號,“嘿,這裡可能發生了一些事情,所以你應該檢查一下。” 客戶可以使用這樣的分叉作為一種警報,他們應該實際下載這些塊並驗證發生了什麼。
然而,這提出了一個基本問題——為了驗證一個塊,你必須有一個UTXO 集。為了擁有一個UTXO 集,您必須驗證鏈中所有先前的塊才能構建它。那麼這作為SPV 機制是如何發揮作用的呢?答案是UTXO 設置承諾。
每個區塊都需要根據UTXO 集進行驗證,這是一個包含尚未使用的所有比特幣的數據庫,目前這只是一個本地數據庫,每個節點在從一開始就掃描區塊鏈時構建和保存。 UTXO 集提交採用UTXO 集,構建它的Merkle 樹,並在理想情況下將它的哈希提交到每個塊內。這允許你接收一個帶有一些額外數據的塊——每個交易的每個輸入的Merkle 分支,證明它在最後一個UTXO 集提交中——並以這種方式驗證它。如果一個系統從一開始就使用這樣的承諾方案,並且實際上被大量用戶完全驗證鏈使用,那麼他們將提供幾乎等同於全節點的安全保證。每當發生鏈分裂時,您都可以下載所有涉及的塊並確保您關注的鍊是有效的。如果分裂的雙方都有效,那麼最長的仍然獲勝。但是,如果其中一個無效,這將讓您立即檢測到它。
雙向掛鉤
作為軟鏈設計的一部分,主鏈節點必須下載並驗證每個軟鏈的區塊頭,並且在任何鏈分裂的情況下,使用UTXO 集承諾下載和驗證這些區塊。這將構成掛鉤機制的基礎,以實現雙向掛鉤。要將硬幣遷移到側鏈,用戶將創建一個主鏈交易,將它們分配給特定的軟鏈,然後在確認在側鏈上領取硬幣時指向該交易。相反,當你試圖脫離側鏈時,你會做相反的事情。這就是PoW 欺詐證明發揮作用的地方。在掛鉤期間,想法是在主鏈上創建一個交易,引用側鏈上的提款交易。這些代幣在經過很長的確認窗口(比如一年)之後才會變得可以使用,並且如果側鏈上的提款交易被重組或被發現無效,它們將保持“鎖定在軟鏈中”。後者會被發現,因為在發生鏈分裂的情況下,主鏈節點將下載分裂每一側的所有塊,並使用UTXO 集承諾驗證它們。
掛鉤的長確認窗口使得即使是一小部分誠實的礦工也有足夠的時間來產生一個有效的區塊來分裂鏈,並從那時起通過UTXO 集承諾觸發對所有內容的驗證。這允許主鏈節點在主鏈上確認提款之前捕獲欺詐性的側鏈掛鉤,從而使該交易無效,而無需他們驗證整個側鏈——這與增加區塊大小沒有什麼不同。
安全參數和風險
這種設計在基於某些變量的安全級別以及這樣的側鏈如何與礦工交互方面產生了一些問題。首先,任何軟鏈都應該以區塊的最低難度要求進行部署,這樣如果哈希率變得太低,而不是將難度調整到低於這個最低區塊的側鏈將需要更長的時間才能找到——即,區塊間隔將增加。這是必要的,因為PoW 防欺詐驗證主鏈節點必須作為此設計的一部分執行。如果軟鏈的難度太低,那麼礦工很容易定期惡意分叉軟鏈,並通過增加主鏈節點的額外數據量來有效地對主鏈節點進行拒絕服務(DoS)攻擊。必須驗證。
聯合挖礦就是解決這個問題的一個辦法。如果所有的比特幣礦工也在側鏈上挖了塊,那麼通過在軟鏈上創建鏈分裂對主鏈進行DoS 攻擊的問題就可以得到解決。拆分軟鏈的工作量與拆分主鏈的工作量一樣多,以防止任意和低成本的攻擊以增加驗證主鏈所需的數據量。然而,在解決DoS 攻擊問題時,它會產生另一個問題:增加礦工的驗證成本。
如果礦工也要開採軟鏈,那麼他們必須為他們運行節點以確保他們正在開采的區塊是有效的。如果他們不是,他們將面臨成為孤兒的風險,並失去來自無效區塊的費用收入。如果激活了許多驗證成本高的軟鏈,例如以太坊克隆鍊或大型區塊鏈,這可能會使挖礦更加集中且參與成本更高。礦工必須驗證一條鏈才能知道他們不是在無效區塊上構建和賠錢,所以這不是可選的。使驗證更加昂貴會破壞 努力最大限度地分散採礦權.
最大的問題是軟鏈上的共識錯誤的風險實際上會導致主鏈本身的共識分裂。由於主鏈端即將生效,因此存在重大側鏈重組使側鏈端的有效pegout 交易無效的風險。請記住,主鏈節點也遵循軟鏈標頭。如果在主鏈上驗證側鏈掛鉤時,如果網絡的不同部分位於軟鏈分裂的不同側,這可能會導致主鏈分裂。軟鏈上的非確定性共識錯誤也可能導致主鏈分裂,即,如果一些節點認為pegout 無效但其他節點認為它是有效的。
這種與主鏈共識的更深層次的聯繫使得這種側鏈設計有些冒險,並且可能是不應該做的事情。至少,軟鏈應該在單獨的分叉中一次激活一個,而不是部署一個允許軟鏈隨意旋轉的分叉。在這種設計中,鏈分裂導致主鏈節點驗證更多數據的事實使得能夠簡單地同時打開許多軟鏈成為主鏈上的攻擊向量。
與空間鏈相比,軟鏈更多地參與到主鏈的共識層中,這帶來了許多風險,但它們允許本地雙向掛鉤,因此為不同的用例提供了更多的潛在空間。接下來,我將介紹驅動鏈,然後是對側鏈的一些最終想法。
這是Shinobi 的客座帖子。所表達的觀點完全是他們自己的,不一定反映BTC Inc 或比特幣雜誌的觀點。