目前的二層擴容的方法--基本是Plasma和狀態(tài)通道。正從理論走向?qū)嵺`,但與此同時,將這些技術(shù)視為以太坊成熟的擴容解決方案時所面臨的內(nèi)在挑戰(zhàn)也顯而易見了。可以說以太坊之所以成功,很大程度上是因為它具有友好的開發(fā)體驗:開發(fā)者編寫一個程序,發(fā)布該程序之后,任何人都可以與它進行交互。另一方面還依賴了狀態(tài)通道的設(shè)計或Plasma應(yīng)用程序依賴于許多關(guān)于激勵和特定于應(yīng)用程序的開發(fā)。狀態(tài)通道在特定的用例中表現(xiàn)得非常好,比如同一個雙方之間的重復(fù)付款和兩個玩家之間的游戲(在celer中成功實現(xiàn))之間的交互,但是要有更廣泛的使用還是具有一定的挑戰(zhàn)性。特別是Plasma Cash可以很好地進行交易支付,但是要普遍化使用也帶來了不少的挑戰(zhàn):即使實施去中心化交易所也需要客戶存儲更多的歷史數(shù)據(jù),并且在Plasma上推廣以太坊式智能合約似乎非常困難。
但與此同時,一個被遺忘的“半二層(semi-layer-2)”協(xié)議類別又重新出現(xiàn)了,該協(xié)議在擴展方面對用戶來說不會有太大的收益,但是該協(xié)議更容易普及和更加安全模型。2014年,一篇被遺忘已久的博客文章提出了“影子鏈(shadow chains)”的概念,即區(qū)塊數(shù)據(jù)在鏈上發(fā)布,但區(qū)塊在默認情況下不會被驗證的架構(gòu)。相反區(qū)塊是暫時接受的,只有在一段時間(如2周)后才能最終確定。在這兩周內(nèi),一個暫時接受的區(qū)塊可以被質(zhì)疑;只有這樣該區(qū)塊才被驗證,如果該區(qū)塊被證明是無效的,那么該區(qū)塊之后的鏈將被回滾,區(qū)塊發(fā)布者的抵押將受到懲罰。智能合約并不需要跟蹤系統(tǒng)的整個狀態(tài),它只跟蹤根狀態(tài),用戶自己可以通過處理自始至終提交給鏈的數(shù)據(jù)來計算狀態(tài)。最近的提案ZK Rollup通過使用ZK-SNARK來驗證區(qū)塊的有效性,從而在沒有挑戰(zhàn)期的情況下完成了相同的工作。
在鏈上發(fā)布的zk rollup包的解析。數(shù)百個影響zk rollup系統(tǒng)狀態(tài)(即帳戶余額)的“內(nèi)部事務(wù)”被壓縮到一個包中,該包中包含每個指定狀態(tài)轉(zhuǎn)換的內(nèi)部事務(wù)約10個字節(jié),外加一個約100-300字節(jié)的snark,證明轉(zhuǎn)換都是有效的。
在這兩種情況下,主鏈用于驗證數(shù)據(jù)可用性,但不(直接)驗證區(qū)塊有效性或執(zhí)行任何重要計算,除非提出質(zhì)疑。因此該技術(shù)并沒有帶來巨大可擴展性的增益,因為鏈上數(shù)據(jù)開銷最終會帶來瓶頸,但它卻是非常重要的。數(shù)據(jù)比計算便宜,而且有很多方法可以非常顯著地壓縮事務(wù)數(shù)據(jù),特別是因為事務(wù)中的大多數(shù)數(shù)據(jù)是簽名,并且許多簽名可以通過多種形式的聚合壓縮為一個簽名。ZK Rollup承諾將每筆交易壓縮到僅約10個字節(jié),從而實現(xiàn)500tx / 秒的速度,比以太坊本身增加30倍。簽名不需要包括在內(nèi),因為它們的有效性由零知識證明來驗證。使用BLS聚合簽名可以在影子鏈中實現(xiàn)類似的吞吐量。即將推出的伊斯坦布爾硬分叉將把數(shù)據(jù)的gas成本從每字節(jié)68降低到每字節(jié)16,將這些技術(shù)的吞吐量再提高4倍(即每秒超過2000個事務(wù))。
那么,zk/optimistic rollup(樂觀匯總)之類的數(shù)據(jù)鏈上技術(shù)與plasma之類的數(shù)據(jù)鏈外技術(shù)相比有什么好處呢?首先不需要半信任的操作者。在zk rollup中,由于有效性是通過加密證明來驗證的,因此包提交程序?qū)嶋H上不可能是惡意的(根據(jù)設(shè)置,惡意提交程序可能會導(dǎo)致系統(tǒng)暫停幾秒鐘,但這是可能造成的最大危害)。在(optimistic rollup)樂觀匯總中,惡意提交者可以發(fā)布惡意區(qū)塊,但下一個提交者將在發(fā)布自己的區(qū)塊之前立即對該區(qū)塊提出質(zhì)疑。在zk和(optimistic rollup)樂觀匯總中,鏈上發(fā)布的數(shù)據(jù)足夠讓任何人來計算完整的內(nèi)部狀態(tài),只需按順序處理所有提交的增量,并且沒有“數(shù)據(jù)預(yù)扣攻擊”可以奪走此屬性。因此成為一名操作者是完全沒有權(quán)限的,所需要的只要一筆用于反垃圾郵件目的的保證金(如10 ETH)。
其次,樂觀匯總(optimistic rollup)特別容易推廣;樂觀匯總(optimistic rollup)系統(tǒng)中的狀態(tài)轉(zhuǎn)移函數(shù)可以是在單個區(qū)塊的gas限內(nèi)計算得到的任何數(shù)據(jù)(包括提供驗證該轉(zhuǎn)移所需的部分狀態(tài)的merkle分支)。zk rollup在理論上是可以用同樣的方式進行推廣的,但在實踐中,要使ZK-SNARKs超越普通計算(例如EVM執(zhí)行)非常困難。第三,樂觀匯總(optimistic rollup)更容易為其構(gòu)建客戶端,因為對第二層網(wǎng)絡(luò)基礎(chǔ)設(shè)施的需求較少;只需掃描區(qū)塊鏈就可以完成更多工作。
但這些優(yōu)勢從何而來?答案在于一個技術(shù)性很強的問題,即數(shù)據(jù)可用性問題。基本上有兩種方法可以嘗試在第二層系統(tǒng)中作弊。第一是向區(qū)塊鏈發(fā)布無效數(shù)據(jù)。第二種方法是完全不發(fā)布數(shù)據(jù)(例如在Plasma中將新Plasma區(qū)塊的根哈希發(fā)布到主鏈,但不向任何人透露該區(qū)塊的內(nèi)容)。已發(fā)布但無效的數(shù)據(jù)很容易處理,因為一旦數(shù)據(jù)在鏈上發(fā)布,就有多種方法可以明確地判斷它是否有效,而無效的提交則明確地無效,因此提交者可能會受到重罰。另一方面,不可用的數(shù)據(jù)更難處理,因為即使在受到質(zhì)疑時可以檢測到不可用性,但也無法可靠地確定是誰的發(fā)布的錯誤數(shù)據(jù),尤其是如果默認情況下保留數(shù)據(jù),并且只有在某些驗證機制試圖驗證其可用性時才按需顯示數(shù)據(jù)。這在“漁夫困境”中得到了說明,它顯示了挑戰(zhàn)響應(yīng)游戲如何無法區(qū)分惡意提交者和惡意挑戰(zhàn)者:
漁夫的困境。如果您僅在時間T3開始查看特定的數(shù)據(jù),你就會在案例1或案例2中混淆,因此也不知道誰是惡意用戶。
Plasma和通道都通過將問題推給用戶來解決漁民的困境:如果您作為用戶決定與您交互的另一個用戶(通道中的交易對手、Plasma鏈中的操作員)沒有向您發(fā)布他們應(yīng)該發(fā)布的數(shù)據(jù),則您有責任選擇退出并移至其他交易對手/操作員。作為用戶您擁有以前的所有數(shù)據(jù)以及您簽署的所有交易有關(guān)的數(shù)據(jù),這一事實使您可以向鏈中證明您在第2層協(xié)議中擁有哪些資產(chǎn),從而安全地將其從交易中退出系統(tǒng)。你證明了一個(先前同意的)操作的存在,將資產(chǎn)交付給你,沒有其他人能夠證明你已把資產(chǎn)發(fā)送給別人的操作,所以你可以撤回屬于你的資產(chǎn)。
該技術(shù)非常優(yōu)雅。然而它依賴于一個關(guān)鍵的假設(shè):每個狀態(tài)對象都有一個邏輯“所有者”,未經(jīng)所有者同意,對象的狀態(tài)不能更改。這對于基于utxo的支付(但不是基于賬戶的支付,你可以在未經(jīng)他人同意的情況下向上修改他人的余額;),甚至可以讓它為分布式交易所工作,但這種“所有權(quán)”屬性遠非普遍性。有些應(yīng)用程序(如Uniswap)沒有自然所有者,甚至在那些有所有者的應(yīng)用程序中,通常有多個用戶可以合法地對對象進行編輯。沒有辦法允許任意第三方退出資產(chǎn)而不引入拒絕服務(wù)(DoS)攻擊的可能性,恰恰是因為無法證明發(fā)行人或提交人是否有過錯。
Plasma和通道還存在其他特殊問題。通道不允許非該通道的用戶進行脫鏈交易(參數(shù):假設(shè)存在一種在通道內(nèi)部可以向任意新用戶發(fā)送1美元的方式,那么該技術(shù)可以與向系統(tǒng)中資金不足的用戶發(fā)送1美金,已經(jīng)違反了其安全保證)Plasma要求用戶存儲大量的歷史數(shù)據(jù),當不同的資產(chǎn)可以交織在一起時,歷史數(shù)據(jù)就會變得更大。
因為鏈上計算鏈下二層技術(shù)不存在數(shù)據(jù)可用性問題,所以它們沒有這些弱點。zk和optimistic rollup非常小心地將足夠多的數(shù)據(jù)放在鏈上,以允許用戶計算第二層系統(tǒng)的完整狀態(tài),確保如果任何參與者消失,一個新的參與者可以輕松地代替他們。他們唯一的問題是驗證計算而不在鏈上進行計算,這是一個容易得多的問題。ZK rollup中每個事務(wù)約10個字節(jié),通過使用BLS聚合來聚集簽名,在樂觀匯總(optimistic rollup)中可以實現(xiàn)類似級別的可擴展性。從理論上講,伊斯坦布爾之后的2000多個交易每秒最多可以進行約500筆交易。
但是如果您想要更大的可擴展性怎么辦?然后鏈上數(shù)據(jù)第二層協(xié)議和鏈外數(shù)據(jù)第而層協(xié)議之間有很大的中間地帶,許多混合方法為您提供了這兩種協(xié)議的一些好處。舉個簡單的例子你可以通過發(fā)布鏈上哪些訂單與哪些訂單相匹配(每個訂單少于4個字節(jié))的映射來防止在Plasma Cash上實現(xiàn)的去中心化交易所中的歷史存儲爆炸:
左:如果Plasma cash用戶擁有1枚代幣,則需要存儲歷史數(shù)據(jù)。中:Plasma cash用戶需要存儲的歷史數(shù)據(jù),如果他們擁有1枚代幣,該代幣已通過原子交換與另一枚代幣交換。右:如果訂單匹配在鏈上發(fā)布,Plasma cash用戶需要存儲的歷史數(shù)據(jù)。
即使在去中心化交易所環(huán)境之外,也可以通過使Plasma鏈定期在鏈上發(fā)布某些按用戶數(shù)據(jù)來減少用戶需要在Plasma中存儲的歷史記錄量。還可以想象一個平臺,在某些狀態(tài)確實具有邏輯“所有者”的情況下,其工作方式與Plasma類似,而在沒有狀態(tài)的情況下,其工作方式與ZK或樂觀匯總(optimistic rollup)類似。Plasma開發(fā)人員已經(jīng)開始著手進行此類優(yōu)化。
因此第二層可擴展性解決方案的開發(fā)人員有一個很好的理由,至少在某些時候更愿意在鏈上發(fā)布每個用戶的數(shù)據(jù):它大大提高了開發(fā)的易用性、通用性和安全性,并減少了每個用戶的負載(例如不需要用戶存儲歷史數(shù)據(jù))。這樣做的效率損失也被夸大了:即使在完全的外鏈二層架構(gòu)中,用戶可以在不同的用戶之間的存放、撤回和轉(zhuǎn)移將是不可避免的且頻繁發(fā)生的,因此無論在哪種情況下都會有大量的每個用戶的鏈數(shù)據(jù)?;旌下酚蔀樵跍识蛹軜?gòu)中相對快速地部署完全通用的以太坊式智能合約打開了大門。
來源: 區(qū)塊鏈研究實驗室
評論
查看更多