Vitalik最新長文:EVM有效驗證的退出遊戲——Plasma的回歸

2023-11-15 14:09 金色財經


作者:Vitalik;編譯:松雪,金色財經

特別感謝 Karl Floersch、Georgios Konstantopoulos 和 Martin Koppelmann 的反饋、審查和討論。

Plasma是一類區塊鏈擴展解決方案,允許除了存款、提款和默克爾根之外的所有數據和計算都保留在鏈下。這爲實現非常大的可擴展性提供了可能,而這種可擴展性不受鏈上數據可用性的限制。Plasma最初是在2017年創建的,在2018年經歷了許多迭代,其中最值得注意的是Minimal Viable Plasma、Plasma Cash、Plasma Cashflow和Plasma Prime。不幸的是,由於(i)龐大的客戶端數據存儲成本和(ii)Plasma的基本限制,使其難以推廣到支付以外的領域,Plasma在很大程度上已經被Rollup技術所取代。

有效性證明(也稱爲ZK-SNARKs)的出現使我們有理由重新思考這個決定。使Plasma在支付方面可行的最大挑战,即客戶端數據存儲,可以通過有效性證明進行高效地解決。此外,有效性證明提供了各種工具,使我們能夠創建一個類似於運行以太坊虛擬機(EVM)的Plasma鏈。盡管 Plasma 的安全性保證不能涵蓋所有用戶,因爲將 Plasma 式退出遊戲擴展到許多復雜應用程序的根本原因仍然存在不可能性。然而,在實踐中,仍然可以保護非常大比例的資產。

這篇文章描述了如何將 Plasma 的思想擴展以實現這樣的目標。

一、概述:Plasma 的工作原理

Plasma Cash 的最簡單版本是 Plasma Cash。Plasma Cash 的工作方式是將每個單獨的代幣視爲一個獨立的非同質代幣(NFT),並爲每個代幣跟蹤一個單獨的歷史。Plasma 鏈有一個運營者,負責創建並定期發布區塊。每個區塊中的交易以稀疏的 Merkle 樹存儲:如果一筆交易轉移了代幣 k 的所有權,則它出現在樹的位置 k。當 Plasma 鏈的運營者創建一個新的區塊時,他們將 Merkle 樹的根哈希發布到鏈上,並直接將對應於用戶所擁有的代幣的 Merkle 分支發送給每個用戶。

假設這是 Plasma Cash 鏈中的最後三個交易樹。然後,假設所有先前的樹都是有效的,我們可以知道 Eve 當前擁有代幣 1,David 擁有代幣 4,George 擁有代幣 6。

任何 Plasma 系統中的主要風險是運營者的不當行爲。這可以通過兩種方式發生:

  1. 發布無效塊(例如,運營者包括一筆交易,即使在那時 Fred 並不擁有代幣 1,也將其發送給 Hermione)。

  2. 發布不可用的塊(例如,運營者沒有向 Bob 發送他某個塊的 Merkle 分支,阻止他向他人證明他的代幣仍然有效且未使用)。

如果運營者以與用戶資產相關的方式產生不當行爲,用戶有責任立即退出(具體而言,必須在 7 天內退出)。當用戶(“退出者”)退出時,他們提供一個 Merkle 分支,證明了將該代幣從先前所有者轉移到他們名下的交易。這啓動了一個爲期 7 天的挑战期,在此期間,其他人可以通過提供以下三者之一的 Merkle 證明來對該退出進行挑战:

  1. 非最新所有者:由退出者籤署的將退出者的代幣轉移到其他人名下的後續交易;

  2. 雙花:將代幣從先前所有者轉移到其他人名下的交易,該交易在將代幣轉移到退出者名下的交易之前已經被包含;

  3. 無效歷史:在退出前(在過去的 7 天內)轉移代幣的交易,沒有相應的支出。退出者可以通過提供相應的支出來進行回應;如果他們沒有這樣做,退出將失敗。

根據這些規則,擁有代幣 k 的任何人需要查看過去一周所有歷史樹中位置 k 的所有 Merkle 分支,以確保他們實際上擁有代幣 k 並可以退出。他們需要存儲包含資產轉移的所有分支,以便能夠回應挑战並安全地退出帶有他們代幣的狀態。

推廣到可互換代幣

上面的設計適用於NFT。然而,比NFT更常見的是可互換代幣,如ETH和USDC。將Plasma Cash應用於可互換代幣的一種方法是簡單地將每個代幣的小面額(例如0.01 ETH)視爲單獨的NFT。然而,如果這樣做,退出的Gas成本將會很高。

一種解決方案是通過將許多相鄰的代幣視爲單個單元來進行優化,可以一次性轉移或退出。有兩種方法可以做到這一點:

幾乎原封不動地使用Plasma Cash,但使用復雜的算法,如果許多相鄰的對象相同,則可以非常快速地計算出非常大數量對象的Merkle樹。這實際上並不那么難實現;你可以在這裏找到一個Python實現。

使用Plasma Cashflow,它簡單地將許多相鄰的代幣表示爲一個單一的對象。

然而,這兩種方法都會遇到碎片化的問題:如果你從數百人那裏分別收到0.001 ETH(每人購买一杯咖啡),那么在Merkle樹中將有許多地方都有0.001 ETH,因此實際退出這個ETH仍然需要提交許多單獨的退出請求,這使得Gas費用變得不劃算。已經开發了碎片整理協議,但實現起來比較棘手。

或者,我們可以重新設計系統,以考慮更傳統的“未花費交易輸出”(UTXO)模型。當你退出一枚代幣時,你需要提供這些代幣的過去一周的歷史記錄,任何人都可以通過證明這些歷史代幣已經退出來挑战您的退出。

對底部右側的0.2 ETH UTXO的提取可以通過顯示其歷史記錄中任何UTXO的提取來取消,如圖中綠色所示。特別注意,中間左側和底部左側的UTXO是前代,但頂部左側的UTXO不是。這種方法類似於 2013 年左右彩色硬幣協議中基於順序的着色想法。

有許多技術可以做到這一點。在所有情況下,目標是在歷史的不同時間點跟蹤什么是“同一枚代幣”的概念,以防止“同一枚代幣”被提取兩次。

推廣到 EVM 的挑战

不幸的是,將Plasma從支付推廣到EVM要困難得多。一個關鍵挑战是EVM中的許多狀態對象沒有明確的“所有者”。 Plasma的安全性取決於每個對象都有一個所有者,該所有者有責任觀察並確保鏈的數據可用,並在發生任何問題時退出該對象。然而,許多以太坊應用程序並不是這樣工作的。例如,Uniswap流動性池沒有單一所有者。

另一個挑战是EVM不會嘗試限制依賴關系。在塊N中的账戶A中持有的ETH可能來自塊N-1中的任何地方。爲了退出一致的狀態,EVM Plasma鏈需要有一個退出遊戲,在極端情況下,希望使用塊N的信息退出的人可能需要支付費用,在鏈上發布整個塊N狀態:Gas費用可能高達數百萬美元。基於UTXO的Plasma方案沒有這個問題:每個用戶都可以從他們擁有數據的最新塊退出他們的資產。

第三個挑战是EVM中無限制的依賴關系使得更難以使各方的激勵與證明有效性保持一致。任何狀態的有效性取決於其他所有事物,因此證明任何一件事都需要證明所有事物。在這種情況下解決故障通常無法使激勵相容,因爲存在數據可用性問題。一個特別讓人討厭的問題是,我們失去了在基於UTXO的系統中存在的一個保證,即對象的狀態在沒有所有者同意的情況下不能更改。這個保證非常有用,因爲它意味着所有者始終知道他們資產的最新可證明狀態,並簡化了退出遊戲。如果沒有這個保證,創建退出遊戲將變得更加困難。

二、有效性證明如何緩解其中許多問題

有效性證明能夠在改進Plasma鏈設計方面發揮的最基本的作用就是在鏈上證明每個Plasma區塊的有效性。這極大地簡化了設計空間:這意味着我們唯一需要擔心的是來自運營商的不可用區塊,而不是無效區塊。以Plasma Cash爲例,它消除了對歷史挑战的擔憂。這將用戶需要下載的狀態從每周每個區塊一個分支減少到每個資產一個分支。

此外,在最新狀態進行的提取(在運營商誠實的普通情況下,所有提取都將來自最新狀態)不受最新擁有者挑战的影響,因此在經過有效性證明的Plasma鏈上,這種提取將不受任何挑战的影響。這意味着在正常情況下,提取可以是即時的!

擴展到 EVM:並行 UTXO 圖

在 EVM 案例中,有效性證明還讓我們可以做一些聰明的事情:它們可以用來實現 ETH 和 ERC20 代幣的並行 UTXO 圖,並通過 SNARK 證明 UTXO 圖和 EVM 狀態之間的等價性。 一旦你有了這個,你就可以在 UTXO 圖上實現一個“常規”的 Plasma 系統。

這使我們能夠回避EVM的許多復雜性。例如,在基於账戶的系統中,有人可以在沒有您同意的情況下編輯您的账戶(通過向其發送代幣從而增加其余額)的事實並不重要,因爲Plasma構建不是基於EVM狀態本身的,而是基於與EVM並行存在的UTXO狀態,您收到的任何代幣都將是獨立的對象。

擴展到EVM:總狀態退出

有一些更簡單的方案被提出,用於創建“plasma EVM”,例如 Plasma Free 和此前2019年的這篇文章。在這些方案中,任何人都可以在L1上發送消息,強制運營商要么包含一個交易,要么使狀態的特定分支可用。如果運營商未能執行此操作,鏈將开始回滾區塊。只要有人發布了整個狀態的完整副本,或者至少發布了用戶標記爲可能丟失的所有數據,鏈就會停止回滾。提取可能需要發布賞金,該賞金將支付該用戶在發布如此大量數據的Gas份額。

這類方案的弱點在於,在正常情況下它們不允許即時提款,因爲始終存在鏈需要回滾最新狀態的可能性。

三、EVM plasma 方案的局限性

此類方案功能強大,但無法爲所有用戶提供全面的安全保證。 它們最明顯崩潰的情況是特定國家對象沒有明確的經濟“所有者”的情況。

讓我們考慮 CDP(債務抵押頭寸)的情況,這是一種智能合約,用戶擁有被鎖定的代幣,只有在用戶償還債務後才能釋放。 假設用戶有 1 ETH(截至撰寫本文時約爲 2000 美元)鎖定在 CDP 中,債務爲 1000 DAI。 現在,Plasma 鏈停止發布區塊,用戶拒絕退出。 用戶永遠無法退出。 現在,用戶有一個免費的選擇:如果 ETH 的價格跌破 1000 美元,他們就會走开並忘記 CDP,如果 ETH 的價格保持在 1000 美元以上,他們最終會認領它。 平均而言,此類惡意用戶可以通過這樣做來賺錢。

另一個例子是隱私系統,例如。 Tornado現金或隱私池。 考慮一個有五個存款人的隱私系統:

隱私系統中的 ZK-SNARK 隱藏了進入系統的代幣所有者和出來的代幣所有者之間的聯系。

假設只有橙色退出,此時 Plasma 鏈運營商停止發布數據。 還假設我們使用具有先進先出規則的 UTXO 圖方法,因此每個代幣都會與其正下方的代幣匹配。 然後,橙色可以提取預混合和後混合的代幣,系統會將其視爲兩個單獨的代幣。 如果藍色試圖收回他們預先混合的代幣,橙色的最新狀態將取代它; 與此同時,藍色將沒有信息來撤回混合後的代幣。

如果您允許其他四個存款人提取隱私合約本身(這將取代存款),然後在 L1 上取出代幣,則可以解決此問題。 然而,實際實現這樣的機制需要隱私系統开發人員付出額外的努力。

還有其他方法可以解決隱私問題,例如。 Intmax 方法,該方法涉及將幾個字節以鏈式匯總方式與在各個用戶之間傳遞信息的類似 Plasma 的運算符一起放置。

Uniswap LP 頭寸也有類似的問題:如果您在 Uniswap 頭寸中用 USDC 換取 ETH,您可以嘗試提取交易前的 USDC 和交易後的 ETH。 如果您與 Plasma 鏈運營商勾結,流動性提供者和其他用戶將無法訪問交易後狀態,因此他們將無法提取交易後的 USDC。 需要特殊的邏輯來防止此類情況的發生。

四、結論

2023 年,Plasma 是一個被低估的設計空間。 Rollup仍然是黃金標准,並且具有無法比擬的安全屬性。 從开發人員體驗的角度來看尤其如此:沒有什么可以比得上應用程序开發人員的簡單性,甚至不必考慮應用程序中的所有權圖和激勵流。

然而,Plasma 讓我們完全回避了數據可用性問題,大大降低了交易費用。 Plasma 可以爲鏈帶來重大的安全升級,否則鏈將成爲驗證鏈。 ZK-EVM 今年終於實現,這爲重新探索這個設計空間提供了絕佳的機會,並提出更有效的結構來簡化开發者體驗並保護用戶資金。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

標題:Vitalik最新長文:EVM有效驗證的退出遊戲——Plasma的回歸

地址:https://www.sgitmedia.com/article/15524.html

相關閱讀: