原文標題:《Exit games for EVM validiums: the return of Plasma》
原文作者:Vitalik
原文編譯:Luccy,BlockBeats
< br>
編按:
近期加密領域話題不斷升溫,Vitalik 發文重提Plasma 又成為社區另一討論焦點。他在文中提出了基於類 UTXO 的帳本「退出遊戲」機制以及 ZK+Plasma 的探索方向。
Plasma 在 2017 年就已經提出,但在之後的發展歷程中逐漸被 Rollups 取代。 Vitalik 在文章中詳細介紹了 Plasma 的工作原理,以及 Plasma Cash 版本如何透過將每個代幣獨立放置為非同質代幣,實現了鏈下數據和計算。他指出,Plasma 的主要風險在於操作者的不當行為,可能包括發布無效區塊或不可用區塊。為因應這些風險,Plasma 引入了退出機制,退出者提供 Merkle branches 證明資產的所有權,其他參與者則可挑戰退出者提供的證明。
對於Plasma 在可互換代幣和NFT 面的適用性,以及針對可互換代幣的碎片整理問題,Vitalik 提到了重新設計系統的可能性,考慮傳統的未花費的交易輸出(UTXO)模型,並介紹了兩種實現方法。然而,這兩種方法都面臨碎片整理問題,需要解決。基於對 Plasma 在 EVM 中的局限性,Vitalik 意將有效證明引入 Plasma。
儘管Rollups 仍然是黃金標準,但Vitalik 認為Plasma 是一個被低估的設計領域,鼓勵接下來重新探索這個設計領域,以提出更有效的構建,簡化開發者體驗並保護用戶資金。 BlockBeats 將原文編譯如下:
特別感謝 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 Cash。 Plasma Cash 的工作原理是將每個單獨的代幣視為獨立的 NFT,並為每個代幣追蹤單獨的歷史記錄。一個 Plasma 鏈有一個操作員,負責產生並定期發佈區塊。每個區塊中的交易以稀疏的 Merkle tree 形式存儲,如果一筆交易轉移了代幣 k 的所有權,它就會出現在樹的第 k 位置。當 Plasma 鏈操作員創建一個新的區塊時,他們會將 Merkle tree 的根發佈到鏈上,並直接向每個用戶發送相應於該用戶擁有的代幣的 Merkle branches。

假設這是Plasma Cash 鏈中的最後三棵交易樹,並假設所有先前的樹都是有效的,我們知道Eve 目前擁有代幣1,David 擁有代幣4,George 擁有代幣6。
在任何Plasma 系統中,主要的風險是操作者的不當行為,透過兩種方式發生:
< /p>
發布無效區塊。例如,操作者在其中包含一筆交易,即使 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)模型。當你退出一個代幣時,你需要提供這些代幣的最近一周的歷史記錄,任何人都可以透過證明那些歷史代幣已經退出來挑戰你的退出。

右下角0.2 ETH UTXO 的提取可以透過顯示其歷史中任何UTXO 的提取(以綠色顯示)來取消。特別注意,左中和左下的 UTXO 是祖先,但左上的 UTXO 不是。這種方法類似於 2013 年左右彩色代幣協議中基於順序的著色想法。
有多種技術可用於實現這一目標。在所有情況下,目標都是在不同歷史時期追蹤「相同代幣」的概念,以防止「相同代幣」被重複提取。
不幸的是,將此概念推廣到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 情況下,有效性證明還讓我們能夠做一些聰明的事情:它們可以用來實現ETH 和ERC20 代幣的平行UTXO 圖,並在UTXO 圖和EVM 狀態之間進行SNARK 證明等價。一旦實現了這一點,您就可以在 UTXO 圖上實現一個「常規」的 Plasma 系統。

這使我們能夠規避EVM的許多複雜性。例如,在基於帳戶的系統中,某人可以在沒有你同意的情況下編輯你的帳戶(透過發送代幣並增加其餘額)這一事實並不重要,因為Plasma 構造不是建立在EVM 狀態本身上,而是建立在與EVM 平行的UTXO 狀態上,您接收到的任何代幣都將是單獨的物件。
已經提出了一些更簡單的方案來建立“Plasma EVM”,例如,Plasma Free 以及2019 年之前的這篇文章。在這些方案中,任何人都可以在 L1 上發送訊息,強制操作員要麼包含一筆交易,要麼使狀態的特定分支可用。如果操作員未能執行此操作,鏈將開始回滾區塊。只要有人發布完整副本,即整個狀態,或至少是用戶已標記為可能丟失的所有數據,鏈就會停止回滾。提取可能需要發布賞金,該賞金將支付該用戶在發佈如此大量數據的人的燃料成本中的份額。
這類方案的缺陷在於,它們在正常情況下不允許即時提取,因為鏈始終有可能需要回滾到最新狀態。
這類方案很強大,但無法為所有用戶提供完整的安全保證。它們最明顯地出現問題的情況是特定狀態對象沒有明確的經濟“所有者”。
讓我們考慮一下抵押債務頭寸(CDP)的情況,這是一個智能合約,用戶的代幣被鎖定,只有在用戶償還債務後才能釋放。假設使用者在一個 CDP 中鎖定了 1 個 ETH(截至本文撰寫時約為 2000 美元),並有 1000 DAI 的債務。現在,Plasma 鏈停止發布區塊,用戶拒絕退出。現在,用戶有一個免費選擇:如果 ETH 的價格下跌到 1000 美元以下,他們可以離開並忘記 CDP,如果 ETH 的價格保持在以上,則最終可以提取。整體而言,這樣的惡意使用者可以從中賺錢。
另一個例子是隱私系統,例如 Tornado Cash 或 Privacy Pools。考慮一個有五個存款人的隱私權系統:

p>
隱私系統中的零知識可證明系統(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 終於開始實現,這使得重新探索這個設計領域成為一個絕佳的機會,可以提出更有效的構想,以簡化開發者的體驗並保護用戶的資金。
"原文連結」
歡迎加入律動 BlockBeats 官方社群:
Telegram 訂閱群:https://t.me/theblockbeats
Telegram 交流群:https://t.me/BlockBeats_App
Twitter 官方帳號:https://twitter.com/BlockBeatsAsia