區塊鏈研究實驗室|以太坊的混合二層擴容協議曙光

目前的二層擴容的方法--基本是Plasma和狀態通道。正從理論走向實踐,但與此同時,將這些技術視爲以太坊成熟的擴容解決方案時所面臨的內在挑戰也顯而易見了。可以說以太坊之所以成功,很大程度上是因爲它具有友好的開發體驗:開發者編寫一個程序,發佈該程序之後,任何人都可以與它進行交互。另一方面還依賴了狀態通道的設計或Plasma應用程序依賴於許多關於激勵和特定於應用程序的開發。狀態通道在特定的用例中表現得非常好,比如同一個雙方之間的重複付款和兩個玩家之間的遊戲(在celer中成功實現)之間的交互,但是要有更廣泛的使用還是具有一定的挑戰性。特別是Plasma Cash可以很好地進行交易支付,但是要普遍化使用也帶來了不少的挑戰:即使實施去中心化交易所也需要客戶存儲更多的歷史數據,並且在Plasma上推廣以太坊式智能合約似乎非常困難。

 

但與此同時,一個被遺忘的“半二層(semi-layer-2)”協議類別又重新出現了,該協議在擴展方面對用戶來說不會有太大的收益,但是該協議更容易普及和更加安全模型。2014年,一篇被遺忘已久的博客文章提出了“影子鏈(shadow chains)”的概念,即區塊數據在鏈上發佈,但區塊在默認情況下不會被驗證的架構。相反區塊是暫時接受的,只有在一段時間(如2周)後才能最終確定。在這兩週內,一個暫時接受的區塊可以被質疑;只有這樣該區塊才被驗證,如果該區塊被證明是無效的,那麼該區塊之後的鏈將被回滾,區塊發佈者的抵押將受到懲罰。智能合約並不需要跟蹤系統的整個狀態,它只跟蹤根狀態,用戶自己可以通過處理自始至終提交給鏈的數據來計算狀態。最近的提案ZK Rollup通過使用ZK-SNARK來驗證區塊的有效性,從而在沒有挑戰期的情況下完成了相同的工作。

 

 

在鏈上發佈的zk rollup包的解析。數百個影響zk rollup系統狀態(即帳戶餘額)的“內部事務”被壓縮到一個包中,該包中包含每個指定狀態轉換的內部事務約10個字節,外加一個約100-300字節的snark,證明轉換都是有效的。

 

在這兩種情況下,主鏈用於驗證數據可用性,但不(直接)驗證區塊有效性或執行任何重要計算,除非提出質疑。因此該技術並沒有帶來巨大可擴展性的增益,因爲鏈上數據開銷最終會帶來瓶頸,但它卻是非常重要的。數據比計算便宜,而且有很多方法可以非常顯著地壓縮事務數據,特別是因爲事務中的大多數數據是簽名,並且許多簽名可以通過多種形式的聚合壓縮爲一個簽名。ZK Rollup承諾將每筆交易壓縮到僅約10個字節,從而實現500tx / 秒的速度,比以太坊本身增加30倍。簽名不需要包括在內,因爲它們的有效性由零知識證明來驗證。使用BLS聚合簽名可以在影子鏈中實現類似的吞吐量。即將推出的伊斯坦布爾硬分叉將把數據的gas成本從每字節68降低到每字節16,將這些技術的吞吐量再提高4倍(即每秒超過2000個事務)。

 

那麼,zk/optimistic rollup(樂觀彙總)之類的數據鏈上技術與plasma之類的數據鏈外技術相比有什麼好處呢?首先不需要半信任的操作者。在zk rollup中,由於有效性是通過加密證明來驗證的,因此包提交程序實際上不可能是惡意的(根據設置,惡意提交程序可能會導致系統暫停幾秒鐘,但這是可能造成的最大危害)。在(optimistic rollup)樂觀彙總中,惡意提交者可以發佈惡意區塊,但下一個提交者將在發佈自己的區塊之前立即對該區塊提出質疑。在zk和(optimistic rollup)樂觀彙總中,鏈上發佈的數據足夠讓任何人來計算完整的內部狀態,只需按順序處理所有提交的增量,並且沒有“數據預扣攻擊”可以奪走此屬性。因此成爲一名操作者是完全沒有權限的,所需要的只要一筆用於反垃圾郵件目的的保證金(如10 ETH)。

 

其次,樂觀彙總(optimistic rollup)特別容易推廣;樂觀彙總(optimistic rollup)系統中的狀態轉移函數可以是在單個區塊的gas限內計算得到的任何數據(包括提供驗證該轉移所需的部分狀態的merkle分支)。zk rollup在理論上是可以用同樣的方式進行推廣的,但在實踐中,要使ZK-SNARKs超越普通計算(例如EVM執行)非常困難。第三,樂觀彙總(optimistic rollup)更容易爲其構建客戶端,因爲對第二層網絡基礎設施的需求較少;只需掃描區塊鏈就可以完成更多工作。

 

但這些優勢從何而來?答案在於一個技術性很強的問題,即數據可用性問題。基本上有兩種方法可以嘗試在第二層系統中作弊。第一是向區塊鏈發佈無效數據。第二種方法是完全不發佈數據(例如在Plasma中將新Plasma區塊的根哈希發佈到主鏈,但不向任何人透露該區塊的內容)。已發佈但無效的數據很容易處理,因爲一旦數據在鏈上發佈,就有多種方法可以明確地判斷它是否有效,而無效的提交則明確地無效,因此提交者可能會受到重罰。另一方面,不可用的數據更難處理,因爲即使在受到質疑時可以檢測到不可用性,但也無法可靠地確定是誰的發佈的錯誤數據,尤其是如果默認情況下保留數據,並且只有在某些驗證機制試圖驗證其可用性時才按需顯示數據。這在“漁夫困境”中得到了說明,它顯示了挑戰響應遊戲如何無法區分惡意提交者和惡意挑戰者:

 

 

漁夫的困境。如果您僅在時間T3開始查看特定的數據,你就會在案例1或案例2中混淆,因此也不知道誰是惡意用戶。

 

Plasma和通道都通過將問題推給用戶來解決漁民的困境:如果您作爲用戶決定與您交互的另一個用戶(通道中的交易對手、Plasma鏈中的操作員)沒有向您發佈他們應該發佈的數據,則您有責任選擇退出並移至其他交易對手/操作員。作爲用戶您擁有以前的所有數據以及您簽署的所有交易有關的數據,這一事實使您可以向鏈中證明您在第2層協議中擁有哪些資產,從而安全地將其從交易中退出系統。你證明了一個(先前同意的)操作的存在,將資產交付給你,沒有其他人能夠證明你已把資產發送給別人的操作,所以你可以撤回屬於你的資產。

 

該技術非常優雅。然而它依賴於一個關鍵的假設:每個狀態對象都有一個邏輯“所有者”,未經所有者同意,對象的狀態不能更改。這對於基於utxo的支付(但不是基於賬戶的支付,你可以在未經他人同意的情況下向上修改他人的餘額;),甚至可以讓它爲分佈式交易所工作,但這種“所有權”屬性遠非普遍性。有些應用程序(如Uniswap)沒有自然所有者,甚至在那些有所有者的應用程序中,通常有多個用戶可以合法地對對象進行編輯。沒有辦法允許任意第三方退出資產而不引入拒絕服務(DoS)攻擊的可能性,恰恰是因爲無法證明發行人或提交人是否有過錯。

 

Plasma和通道還存在其他特殊問題。通道不允許非該通道的用戶進行脫鏈交易(參數:假設存在一種在通道內部可以向任意新用戶發送1美元的方式,那麼該技術可以與向系統中資金不足的用戶發送1美金,已經違反了其安全保證)Plasma要求用戶存儲大量的歷史數據,當不同的資產可以交織在一起時,歷史數據就會變得更大。

 

因爲鏈上計算鏈下二層技術不存在數據可用性問題,所以它們沒有這些弱點。zk和optimistic rollup非常小心地將足夠多的數據放在鏈上,以允許用戶計算第二層系統的完整狀態,確保如果任何參與者消失,一個新的參與者可以輕鬆地代替他們。他們唯一的問題是驗證計算而不在鏈上進行計算,這是一個容易得多的問題。ZK rollup中每個事務約10個字節,通過使用BLS聚合來聚集簽名,在樂觀彙總(optimistic rollup)中可以實現類似級別的可擴展性。從理論上講,伊斯坦布爾之後的2000多個交易每秒最多可以進行約500筆交易。

 

但是如果您想要更大的可擴展性怎麼辦?然後鏈上數據第二層協議和鏈外數據第而層協議之間有很大的中間地帶,許多混合方法爲您提供了這兩種協議的一些好處。舉個簡單的例子你可以通過發佈鏈上哪些訂單與哪些訂單相匹配(每個訂單少於4個字節)的映射來防止在Plasma Cash上實現的去中心化交易所中的歷史存儲爆炸:

 

 

左:如果Plasma cash用戶擁有1枚代幣,則需要存儲歷史數據。中:Plasma cash用戶需要存儲的歷史數據,如果他們擁有1枚代幣,該代幣已通過原子交換與另一枚代幣交換。右:如果訂單匹配在鏈上發佈,Plasma cash用戶需要存儲的歷史數據。

 

即使在去中心化交易所環境之外,也可以通過使Plasma鏈定期在鏈上發佈某些按用戶數據來減少用戶需要在Plasma中存儲的歷史記錄量。還可以想象一個平臺,在某些狀態確實具有邏輯“所有者”的情況下,其工作方式與Plasma類似,而在沒有狀態的情況下,其工作方式與ZK或樂觀彙總(optimistic rollup)類似。Plasma開發人員已經開始着手進行此類優化。

 

因此第二層可擴展性解決方案的開發人員有一個很好的理由,至少在某些時候更願意在鏈上發佈每個用戶的數據:它大大提高了開發的易用性、通用性和安全性,並減少了每個用戶的負載(例如不需要用戶存儲歷史數據)。這樣做的效率損失也被誇大了:即使在完全的外鏈二層架構中,用戶可以在不同的用戶之間的存放、撤回和轉移將是不可避免的且頻繁發生的,因此無論在哪種情況下都會有大量的每個用戶的鏈數據。混合路由爲在準二層架構中相對快速地部署完全通用的以太坊式智能合約打開了大門。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章