目前的二層擴容的方法--基本是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開發人員已經開始著手進行此類優化。
因此第二層可擴展性解決方案的開發人員有一個很好的理由,至少在某些時候更愿意在鏈上發布每個用戶的數據:它大大提高了開發的易用性、通用性和安全性,并減少了每個用戶的負載(例如不需要用戶存儲歷史數據)。這樣做的效率損失也被夸大了:即使在完全的外鏈二層架構中,用戶可以在不同的用戶之間的存放、撤回和轉移將是不可避免的且頻繁發生的,因此無論在哪種情況下都會有大量的每個用戶的鏈數據。混合路由為在準二層架構中相對快速地部署完全通用的以太坊式智能合約打開了大門。
來源: 區塊鏈研究實驗室
評論
查看更多