編者按
之前社區內有討論, 有沒有可能在 ETH2 中自己實現一個跨鏈, 首先和 ETH1 跨鏈, 然后再和其他鏈跨?有點天方夜譚哈, 不過也是一個設想, 目前看沒有這種可能性。不過 V 神最新的帖子里(10月11日)卻在另一個層面提到了雙向橋梁的概念, 即升級過程用雙向橋梁以實現一定的互操作性, 主要目的是為了彼此提供信息給對方, 以保證一致性。
概要
這篇文章的目的是說明在eth1和eth2之間建立雙向橋梁的一些挑戰(例如,支持ETH的雙向轉換),以及如何實現它。
問題和方案
作為eth2提案的一部分,已經存在一個eth1 -》 eth2 鏈路,這是允許存款發生的必要條件。這個鏈接是使用eth1data投票機制3實現的。注意,該機制假設PoS驗證器是可靠的大多數,并且PoW鏈不會受到攻擊(具體來說,它的恢復時間不會超過5小時); 如果任何一個假設失敗了,那么這兩個鏈將不再一致。至少在開始時就有一個隱含的“社會契約”,如果發生任何一種情況都可以糾正,很可能是通過PoS鏈的軟分叉的方式進行糾正 (如果PoW鏈確實確實恢復了5個小時以上,那么很有可能達成社區協議,認為攻擊鏈是非法的)。 注意,在這兩種情況中,PoS 鏈的失敗都不會導致 PoW 鏈的軟分叉。
如果我們希望eth1鏈了解eth2狀態(允許ETH從eth2返回到eth1的前提),有兩種方法可以做到這一點。一種是使PoW鏈包含PoS鏈的輕客戶端, 另一個是要使PoS 的敲定里包含PoW 的敲定(finality)。后者可以通過添加一種機制來實現,在這種機制中,如果 PoS 塊 BS 通過 eth1數據投票包含對 PoW 塊 BW 的引用,并且 BS 最終完成,那么 BW 也被視為最終完成。但是,這意味著PoW礦工(和客戶端)還需要運行eth2實現,以便他們了解 eth2 鏈的敲定情況。
前者需要在eth1內部實現的eth2客戶端, 這將需要Webassembly或BLS-12-381驗證的本機支持,目前預計不會很快發生。另外,它僅提供輕客戶端級別的安全性。
后者更有趣,因為它為eth1提供了一種本地形式的反轉限制(通常稱為finality gadget建議)。注意,這個建議與第一個不同,因為它雖然讓eth1 fork選項知道eth2,但并沒有立即讓eth1知道eth2的狀態。例如,請注意,兩個相互競爭的eth2鏈在理論上有可能完成相同的eth1塊(這意味著eth2已經破壞,但在理論上仍然有可能)。
更常見的情況是,可能有兩個eth2 最終區塊,其中一個是另一個的子代,兩者都支持相同的eth1塊,并且一些礦工可能知道這兩個eth2塊中的較新者,而另一些礦工則不知道。對于“ eth2作為敲定性小工具”來說,這不是問題,但這確實意味著我們需要更多基礎設施,以允許eth1明確了解eth2 區塊狀態,以便允許從存款合約中提取款項。
一種可能是在eth1內部簡單地創建一個eth2_data投票機制;本質上,復制一份讓eth2了解eth1的機制。這可以與上述內容結合起來,以確保一致性, eth1 曠工僅在下述兩種情況下會為為 eth2 數據區塊投票:eth1 曠工正在構建的eth1數據塊(i)已經完成,并且(ii)在它們的eth1數據塊中引用了它們的eth1數據塊(它們是曠工正在構建的eth1數據塊的祖先)
挑戰
這兩項提議都需要對eth1進行修改。目前,eth2路線圖在the final transition 4
之前沒有任何eth1方面的更改。這兩項建議都要求在eth2側發生損壞時,對eth1側采取緊急補救行動。后一個建議要求所有的eth1 曠工也運行一個eth2節點。因此,雖然這兩項建議都是絕對可行的,但不應迅速執行。
然而,當 eth2繼續運行并證明了它的適應性,那么在某個時刻實現這樣一個橋梁肯定是有意義的。為了降低風險,可以做以下幾件事:
· 在eth1上運行eth2投票,投票期為一周,以便在出現問題時為人工干預留出時間
· Eth1鏈通過輕客戶了解到 eth2定稿塊,也可能由于類似原因推遲一個星期才退出
· 只有當抵押足夠高時(例如大于500萬)才打開橋梁
· 把投票的門檻設得高于50%(例如。80%);系統傾向于不包含任何eth2塊,除非它們之間有很強的一致性。
來源: Ourea無涯社區?
評論
查看更多