Vitalik新文:Plasma回歸——EVM validiums的退出遊戲
BlockBeats 律動財經 2023-11-15 12:00
特別感謝 Karl Floersch、Georgios Konstantopoulos 和 Martin Koppelmann 對反饋、審閱和討論的貢獻。
Plasma 是一類區塊鏈擴容解決方案,允許 deposits、提款和 Merkle roots 之外的所有數據和計算都在鏈下進行。這為實現超大規模的可擴展性提供了可能性,而不受鏈上數據可用性的限制。Plasma 首次於 2017 年提出,並在 2018 年經歷了多次迭代,其中最顯着的包括小型便攜式 Plasma、Plasma Cash、Plasma Cashflow 和 Plasma Prime。然而,由於主要涉及到大型客戶端數據儲存成本和 Plasma 的基本限制,導致其難以推廣到支付額外的複雜應用,因此 Plasma 在很大程度上已被 Rollups 取代。
有效證明(ZK-SNARKs)的出現給我們提供了重新考慮這一決定的理由。使 Plasma 在支付方面發揮作用的主要挑戰之一,即客戶端數據儲存,可以通過效率證明得到有效解決。另外,validity 證明提供了各種工具,使我們能夠創建一個 Plasma 的鏈來運行以太坊虛擬機(EVM)。Plasma 的安全性保證可能無法覆蓋所有用戶,因為 Plasma 式的退出遊戲難以推廣到許多複雜應用的根本原因仍然存在。然而,在實踐中,仍然可以確保非常大比例的資產安全。
本文描述了如何將 Plasma 重組以實現這一目標。
概述:Plasma 的工作原理
最容易理解的 Plasma 版本是 Plasma Cash。Plasma Cash 的工作原理是將每個單獨的代幣視為獨立的 NFT,並為每個代幣跟蹤單獨的歷史記錄。一個 Plasma 鏈有一個操作員,負責生成並定期發布區塊。每個區塊中的交易以稀疏的 Merkle tree 形式儲存,如果一筆交易轉移了代幣 k 的所有權,它就會出現在樹的第 k 位置。當 Plasma 鏈操作員創建一個新的區塊時,他們會將 Merkle tree 的根發布到鏈上,並直接向每個用戶發送相應於該用戶擁有的代幣的 Merkle branches。
在任何 Plasma 系統中,主要的風險是操作者的不當行為,通過兩種方式發生:
發布無效區塊。例如,操作者在其中包含一筆交易,即使 Fred 在那個時候不擁有代幣 1,也將其發送給 Hermione。
發布不可用的區塊。例如,操作者未向 Bob 發送他的一個區塊的 Merkle branches,使他無法向其他人證明他的代幣仍然有效且未使用。
如果操作員以與用戶資產相關的方式不當行事,用戶有責任立即退出(具體而言,在 7 天內)。當用戶("退出者")退出時,他們提供一個 Merkle branches,證明了將該代幣從先前所有者轉移到他們的交易中。這啟動了一個為期 7 天的挑戰期,在此期間,其他人可以通過以下三者之一的 Merkle 證明來挑戰退出:
非最新所有者:退出者簽署的後續交易,將退出者的代幣轉移到其他人。
雙花:一筆將代幣從先前所有者轉移到其他人的交易,包含在退出者交易之前的交易。
無效歷史:在過去 7 天內轉移代幣的交易,沒有相應的支出。退出者可以通過提供相應的支出來回應;如果他們不這樣做,退出將失敗。
根據這些規則,任何擁有代幣 k 的人需要看到過去一周內所有歷史樹中位置 k 的所有 Merkle branches,以確保他們實際擁有代幣 k 並能退出。他們需要儲存包含資產轉移的所有分支,以便能夠回應挑戰並安全退出他們的代幣。
泛化到可互換代幣
上述設計適用於非同質代幣(NFTs)。然而,比 NFTs 更常見的是可互換的代幣,例如 ETH 和 USDC。將 Plasma Cash 應用於可互換的代幣的一種方式是簡單地將每個代幣的小面額(例如 0.01 ETH)作為單獨的 NFT。然而,如果這樣做,退出的 Gas 成本將會過高。
一種解決方案是通過將許多相鄰的代幣視為單個單位進行優化,可以一次性轉移或退出。有兩種方法可以實現這一點:
使用幾乎不變的 Plasma Cash,但使用高級算法快速計算非常大數量的對象的 Merkle tree,如果許多相鄰對象相同,這其實並不難實現;你可以在這裡看到一個 Python 實現。
使用 Plasma Cashflow,它簡單地將許多相鄰的代幣表示為單個對象。
然而,這兩種方法都遇到了碎片化的問題:如果你從數百人那裡每人收到 0.001 ETH 來購買咖啡,你的 0.001 ETH 將出現在樹的許多位置,因此實際退出這些 ETH 仍然需要提交許多單獨的退出,使 Gas 費用變得高昂。雖然已經開發了碎片整理協議,但實施起來比較棘手。
作為替代方案,我們可以重新設計系統,考慮更傳統的「未花費交易輸出」(UTXO)模型。當你退出一個代幣時,你需要提供這些代幣的最近一周的歷史記錄,任何人都可以通過證明那些歷史代幣已經退出來挑戰你的退出。
有多種技術可用於實現這一目標。在所有情況下,目標都是在不同歷史時期跟蹤「相同代幣」的概念,以防止「相同代幣」被重複提取。
泛化到 EVM 的挑戰
不幸的是,將這一概念推廣到 EVM 以外的領域要困難得多。一個關鍵挑戰是,EVM 中的許多狀態對象沒有明確的「所有者」。Plasma 的安全性依賴於每個對象都有一個所有者,該所有者有責任監視並確保鏈的數據可用,並在發生任何問題時退出該對象。然而,許多以太坊應用程序並不以這種方式工作。例如,Uniswap 流動性池沒有單一所有者。
另一個挑戰是 EVM 並未嘗試限制依賴關係。在區塊 N-1 中,帳戶 A 中持有的 ETH 可能來自 N 中的任何地方。為了退出一致的狀態,EVM Plasma 鏈需要一個退出遊戲,在極端情況下,希望使用來自區塊 N 的資訊退出的人可能需要支付費用以在鏈上發布整個區塊 N 的狀態:這將導致數百萬美元的 gas 成本。基於 UTXO 的 Plasma 方案沒有這個問題:每個用戶都可以從他們擁有數據的最新區塊退出他們的資產。
第三個挑戰是 EVM 中無限制的依賴關係使得更難以獲得對證明有效性的一致性激勵。任何狀態的有效性都取決於其他一切,因此證明任何一個事物都需要證明一切。在這種情況下解決故障通常無法因數據可用性問題而保持激勵兼容。一個特別令人討厭的問題是,我們失去了在基於 UTXO 的系統中存在的保證,即對象的狀態在沒有所有者同意的情況下不會改變。這個保證非常有用,因為它意味著所有者始終知道其資產的最新可證明狀態,並簡化了退出遊戲。沒有這個保證,創建退出遊戲變得更加困難。
有效證明如何解決這些問題
證明的有效性對於改進 Plasma 鏈設計的最基本的事情就是在鏈上證明每個 Plasma 塊的有效性。這極大地簡化了設計空間:這意味著我們唯一需要擔心的是操作員的不可用塊攻擊,而不是無效塊。以 Plasma Cash 為例,它消除了對歷史挑戰的擔憂。這減少了用戶需要下載的狀態,從最近一周的每個區塊一個分支,變為每個資產一個分支。
此外,在最新狀態中提取資金(在操作員誠實的大多數情況下,所有提取都將來自最新狀態)不受非最新所有者的挑戰的影響,因此在經過驗證的 Plasma 鏈中,這樣的提取將不受任何挑戰的影響。這意味著在正常情況下,提取可以是即時的!
擴展到 EVM:平行 UTXO 圖
在 EVM 情況下,有效性證明還讓我們能夠做一些聰明的事情:它們可以用來實現 ETH 和 ERC20 代幣的並行 UTXO 圖,並在 UTXO 圖和 EVM 狀態之間進行 SNARK 證明等價。一旦實現了這一點,您就可以在 UTXO 圖上實現一個「常規」的 Plasma 系統。
這使我們能夠規避 EVM 的許多複雜性。例如,在基於帳戶的系統中,某人可以在沒有你同意的情況下編輯你的帳戶(通過發送代幣並增加其餘額)這一事實並不重要,因為 Plasma 構造不是建立在 EVM 狀態本身上,而是建立在與 EVM 平行的 UTXO 狀態上,您接收到的任何代幣都將是單獨的對象。
擴展到 EVM:總狀態退出
已經提出了一些更簡單的方案來創建「Plasma EVM」,例如,Plasma Free 以及 2019 年之前的這篇文章。在這些方案中,任何人都可以在 L1 上發送消息,強制操作員要麼包含一筆交易,要麼使狀態的特定分支可用。如果操作員未能執行此操作,鏈將開始回滾區塊。只要有人發布完整副本,即整個狀態,或者至少是用戶已標記為可能丟失的所有數據,鏈就會停止回滾。提取可能需要發布賞金,該賞金將支付該用戶在發布如此大量數據的人的燃料成本中的市佔率。
這類方案的缺陷在於,它們在正常情況下不允許即時提取,因為鏈始終有可能需要回滾到最新狀態。
EVM Plasma 方案的侷限性
這類方案很強大,但無法為所有用戶提供完整的安全保證。它們最明顯地出現問題的情況是特定狀態對象沒有明確的經濟「所有者」。
讓我們考慮一下抵押債務部位(CDP)的情況,這是一個智能合約,用戶的代幣被鎖定,只有在用戶償還債務後才能釋放。假設用戶在一個 CDP 中鎖定了 1 個 ETH(截至本文撰寫時約為 2000 美元),並有 1000 DAI 的債務。現在,Plasma 鏈停止發布區塊,用戶拒絕退出。現在,用戶有一個免費選擇:如果 ETH 的價格下跌到 1000 美元以下,他們可以離開並忘記 CDP,如果 ETH 的價格保持在以上,則最終可以提取。總體而言,這樣的惡意用戶可以從中賺錢。
另一個例子是隱私系統,例如 Tornado Cash 或 Privacy Pools。考慮一個有五個存款人的隱私系統:
隱私系統中的零知識可證明系統(ZK-SNARKs)將進入系統的代幣的所有者與離開系統的代幣的所有者之間的關聯保持隱藏。
假設只有橙色用戶已提取,此時 Plasma 鏈操作員停止發布數據。同時假設我們採用 UTXO 圖的方法,使用先進先出規則,因此每個代幣都與下面的代幣匹配。然後,橙色用戶可以提取他們的預混和後混(pre-mixed and post-mixed)代幣,系統將其視為兩個單獨的代幣。如果藍色用戶嘗試提取他們的預混代幣,橙色用戶的最新狀態將覆蓋它;與此同時,藍色用戶將無法提取他們的後混代幣。
如果允許其他四個存款人提取隱私合約本身(這將覆蓋存款),然後在 L1 上取出代幣,這個問題就可以解決。然而,實際實施這樣的機制需要隱私系統開發人員額外的努力。
還有其他解決隱私問題的方法,例如 Intmax 方法,它涉及在鏈上採用類似 Plasma 的操作員,該操作員在個別用戶之間傳遞資訊時攜帶一些字節。
Uniswap LP 部位存在類似的問題:如果在 Uniswap 部位中將 USDC 交換為 ETH,您可以嘗試提取交易前的 USDC 和交易後的 ETH。如果與 Plasma 鏈操作員合謀,流動性提供者和其他用戶將無法訪問交易後的狀態,因此他們將無法提取交易後的 USDC。需要特殊的邏輯來防止這種情況發生。
結論
到了 2023 年,Plasma 仍然是一個被低估的設計領域。Rollups 仍然是黃金標準,並具有無法匹敵的安全性能。從開發者的角度來看,特別是從簡化應用程序開發人員無需考慮其應用程序中的所有權圖和激勵流的角度來看,沒有什麼能夠匹敵它的簡便性。
然而,Plasma 讓我們完全繞過了數據可用性的問題,大大降低了交易費用。對於本來可能是 validium 的鏈來說,Plasma 可以是一個重要的安全升級。今年 ZK-EVM 終於開始實現,這使得重新探索這個設計領域成為一個絕佳的機會,可以提出更加有效的構想,以簡化開發者的體驗並保護用戶的資金。
「原文鏈接」
暢行幣圈交易全攻略,專家駐群實戰交流
▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群)
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!
- 從零開始學合約系列講座熱烈報名中
- 掌握全球財經資訊點我下載APP
文章標籤
上一篇
下一篇