• 風險提示:防范以虛擬貨幣/區塊鏈名義進行的非法集資風險。 ——銀保監會等五部門

    Vitalik Buterin談關于EVM 驗證的退出游戲:Plasma 的回歸

    白話區塊鏈 2023-11-15 17:45:30
    微信分享

    掃碼分享

    利用ZK-SNARK有效性證明,可以簡化Plasma在支付場景下的設計,同時借鑒UTXO理念建立EVM狀態并行圖,使Plasma重現監管有效性鏈的潛力。

    作者:Vitalik Buterin


    翻譯:白話區塊鏈 

    特別感謝Karl Floersch、Georgios Konstantopoulos和Martin Koppelmann的反饋、審查和討論。
    Plasma是一類區塊鏈擴展解決方案,可以將除存款、提款和Merkle根之外的所有數據和計算保存在鏈外。這為實現非常大規模的可擴展性提供了可能,不受鏈上數據可用性的瓶頸限制。Plasma最早于2017年被發明,并在2018年進行了多次迭代,其中最著名的是最小可行性Plasma、Plasma Cash、Plasma Cashflow和Plasma Prime。不幸的是,由于(i)大規模的客戶端數據存儲成本和(ii)Plasma的根本限制使其難以推廣到支付之外的應用,Plasma在很大程度上已被Rollup技術取代。
    有效性證明(又稱ZK-SNARKs)的出現使我們有理由重新思考這個決定。使Plasma在支付方面發揮作用的最大挑戰——客戶端數據存儲問題,可以通過有效性證明有效地解決。此外,有效性證明提供了一系列工具,使我們能夠創建一個類似Plasma的鏈來運行EVM。Plasma的安全保證無法涵蓋所有用戶,因為Plasma式退出游戲無法擴展到許多復雜應用的根本原因仍然存在。然而,在實踐中,仍然可以保護非常大比例的資產安全。
    本文描述了如何將Plasma的思想擴展到實現這樣的目標。


    1、概述:Plasma的工作原理

    最容易理解的Plasma版本是Plasma Cash。Plasma Cash的工作原理是將每個單獨的Coin視為獨立的NFT,并為每個Coin跟蹤獨立的歷史記錄。一個Plasma鏈有一個操作者,負責生成并定期發布區塊。每個區塊中的交易以稀疏的Merkle樹形式存儲:如果一筆交易轉移了硬幣k的所有權,它會出現在樹的第k個位置。當Plasma鏈操作者創建一個新區塊時,他們將Merkle樹的根發布到鏈上,并直接向每個用戶發送對應于該用戶所擁有的硬幣的Merkle分支。

    假設這些是Plasma Cash鏈中的最后三個交易樹。在假設之前的所有交易樹都是有效的情況下,我們知道Eve目前擁有Coin1,David擁有Coin 4,George擁有Coin 6
    任何Plasma系統中的主要風險是操作者的不當行為。這種不當行為可以通過兩種方式發生:
    • 發布無效的區塊(例如,操作者包含一筆交易,將硬幣1從Fred發送給Hermione,即使Fred在那個時候并不擁有該硬幣)
    • 發布不可用的區塊(例如,操作者未向Bob發送他某個區塊的Merkle分支,導致他無法向他人證明他的硬幣仍然有效且未使用)
    如果操作者的不當行為與用戶的資產相關,用戶有責任立即退出(具體來說,7天之內)。當用戶(“退出者”)退出時,他們提供一個Merkle分支,證明了將該Coin從前一個所有者轉移給他們的交易的包含。這開始了一個為期7天的挑戰期,在此期間其他人可以通過提供以下三種之一的Merkle證明來挑戰該退出:
    • 非最新所有者:由退出者簽署的將退出者的硬幣轉移到其他人名下的后續交易
    • 雙重花費:將硬幣從前一個所有者轉移到其他人名下的交易,該交易在將硬幣轉移到退出者名下的交易之前被包含
    • 無效的歷史記錄:在過去的7天內轉移了硬幣的交易,但沒有相應的支出。退出者可以通過提供相應的支出來回應;如果他們沒有這樣做,退出失敗。

    添加圖片注釋,不超過 140 字(可選)
    根據這些規則,任何擁有硬幣k的人需要查看過去一周所有歷史交易樹中位置k的所有Merkle分支,以確保他們真正擁有Coink并能夠退出。他們需要存儲包含資產轉移的所有分支,以便能夠應對挑戰并安全地退出并持有自己的Coin。


    2、推廣到同質化Token

    上述設計適用于NFT。然而,比NFT更常見的是像ETH和USDC這樣的同質化Token。將Plasma Cash應用于同質化Token的一種方法是將每個小面額Token(例如0.01 ETH)視為單獨的NFT。然而,如果這樣做,退出的gas費用將會過高。
    一種解決方案是通過將許多相鄰的硬幣視為單個單位進行優化,這些Token可以一次性轉移或退出。有兩種方法可以實現這一點:
    • 幾乎按原樣使用Plasma Cash,但使用高級算法來快速計算非常多對象的Merkle樹,如果許多相鄰對象是相同的。令人驚訝的是,實現這一點并不那么困難;你可以在這里查看一個Python實現。
    • 使用Plasma Cashflow,它將許多相鄰的硬幣簡單地表示為單個對象。
    然而,這兩種方法都會遇到碎片化的問題:如果你從數百人那里每人獲得0.001 ETH作為購買咖啡的支付,你將在樹的許多地方擁有0.001 ETH,因此實際退出該ETH仍然需要提交許多獨立的退出請求,使得燃氣費用過高。已經開發了碎片整理協議,但實施起來比較棘手。
    或者,我們可以重新設計系統,考慮更傳統的"未花費交易輸出"(UTXO)模型。當你退出一個Token時,你需要提供這些Token的最近一周的歷史記錄,任何人都可以通過證明這些歷史Token已經退出來挑戰你的退出請求。

    添加圖片注釋,不超過 140 字(可選)
    右下角的0.2 ETH UTXO的提現可以通過展示其歷史中任何UTXO的提現來取消,如圖中所示(綠色表示)。特別要注意的是,中間左側和底部左側的UTXO是祖先,但頂部左側的UTXO不是。這種方法類似于2013年左右的有色幣協議中的基于順序的著色思想。
    有多種技術可以實現這一點。在所有情況下,目標都是追蹤在不同歷史時刻上被視為“相同Token”的概念,以防止“相同Token”被重復提現。


    3、通用化到以太坊虛擬機(EVM)存在一些挑戰。

    不幸的是,超越支付領域并將其推廣到EVM更加困難。一個主要的挑戰是,EVM中的許多狀態對象沒有明確的“所有者”。Plasma的安全性依賴于每個對象都有一個所有者,該所有者負責監視并確保鏈上的數據可用,并在發生任何問題時退出該對象。然而,許多以太坊應用程序并不是以這種方式工作。例如,Uniswap流動性池沒有單一的所有者。
    另一個挑戰是,EVM不會限制依賴關系。在區塊N中,帳戶A中持有的ETH可能來自區塊N-1中的任何地方。為了退出一致的狀態,EVM Plasma鏈需要具有退出游戲,在極端情況下,希望使用區塊N中的信息退出的人可能需要支付費用將整個區塊N的狀態發布到鏈上:這將產生數百萬美元的燃氣費用。基于UTXO的Plasma方案沒有這個問題:每個用戶可以從他們擁有數據的最新區塊中退出他們的資產。
    第三個挑戰是,EVM中的無限制依賴關系使得很難形成一致的激勵機制來證明有效性。任何狀態的有效性都取決于其他所有內容,因此證明任何一項事物都需要證明一切。在這種情況下解決失敗通常無法通過數據可用性問題實現激勵兼容。一個特別煩人的問題是,我們失去了基于UTXO系統中存在的保證,即對象的狀態在沒有所有者同意的情況下不會改變。這個保證非常有用,因為它意味著所有者始終知道他們資產的最新可證明狀態,并簡化了退出游戲。沒有這個保證,創建退出游戲變得更加困難。


    4、有效性證明如何緩解這些問題

    有效性證明可以在改進Plasma鏈設計方面起到很大作用。最基本的是,在鏈上證明每個Plasma區塊的有效性。這極大地簡化了設計空間:這意味著我們唯一需要擔心的來自操作者的攻擊是不可用的區塊,而不是無效的區塊。例如,在Plasma Cash中,它消除了對歷史挑戰的擔憂。這將用戶需要下載的狀態從每個區塊的一條分支減少到每個資產的一條分支。
    此外,從最新狀態提取款項(在操作者誠實的常見情況下,所有提取款項都將來自最新狀態)不會受到非最新所有者挑戰的限制。因此,在經過有效性證明的Plasma鏈中,此類提取款項將不受任何挑戰的限制。這意味著在正常情況下,提款可以立即完成!


    5、拓展到EVM:并行的UTXO圖

    在EVM情況下,有效性證明還可以讓我們做一些聰明的事情:它們可以用于實現ETH和ERC20Token的并行UTXO圖,并在SNARK證明中證明UTXO圖與EVM狀態的等效性。一旦實現了這一點,就可以在UTXO圖上實現一個“常規”的Plasma系統。

    添加圖片注釋,不超過 140 字(可選)
    這使我們能夠繞過EVM的許多復雜性。例如,在基于賬戶的系統中,某人可以在沒有您同意的情況下編輯您的賬戶(通過向其發送Token并增加其余額),但這并不重要,因為Plasma構建并不基于EVM狀態本身,而是基于與EVM并行存在的UTXO狀態,您接收的任何Token都將是獨立的對象。


    6、拓展到EVM:完全狀態退出

    已經有一些提出更簡化的方案來創建“Plasma EVM”,例如Plasma Free以及這篇2019年的文章。在這些方案中,任何人都可以在第一層(L1)發送消息,強迫操作者要么包含一個交易,要么提供特定分支的狀態。如果操作者未能這樣做,鏈將開始回滾區塊。只有當有人發布了完整的狀態副本,或者至少發布了用戶標記為可能丟失的所有數據時,鏈才會停止回滾。進行提款可能需要發布賞金,用于支付該用戶在發布如此大量數據的情況下的燃氣費用的份額。
    這樣的方案的弱點在于在正常情況下不允許即時提款,因為鏈始終存在回滾最新狀態的可能性。


    7、EVM Plasma方案的限制

    這樣的方案很強大,但無法為所有用戶提供完全的安全保證。它們最明顯失效的情況是特定狀態對象沒有明確的經濟“所有者”的情況。
    讓我們考慮一個CDP(抵押債務頭寸)的情況,它是一個智能合約,用戶的Token被鎖定,只有在用戶償還債務后才能解鎖。假設用戶在一個CDP中鎖定了1個ETH(本文撰寫時約為2000美元),并負有1000DAI的債務。現在,Plasma鏈停止發布區塊,并且用戶拒絕退出。用戶可以選擇永遠不退出。現在,用戶有一個免費選擇:如果ETH的價格下跌到1000美元以下,他們放棄并忘記CDP,如果ETH的價格保持在上方,他們最終會索取資產。從長遠來看,這樣的惡意用戶會從中賺錢。
    另一個例子是隱私系統,例如Tornado Cash或Privacy Pools。考慮一個有五個存款人的隱私系統:

    隱私系統中的ZK-SNARKs將進入系統的Token的所有者與離開系統的Token的所有者之間的鏈接保持隱藏。
    假設只有橙色一方已經取款,并且在那時Plasma鏈操作者停止發布數據。假設我們使用了UTXO圖方法,并采用先進先出規則,因此每個Token都與其下方的Token匹配。然后,橙色一方可以提取他們的預混合Token和后混合Token,而系統會將其視為兩個獨立的Token。如果藍色一方嘗試提取他們的預混合Token,橙色一方的最新狀態將取代它;同時,藍色一方沒有信息來提取他們的后混合Token。 如果允許其他四個存款人提取隱私合約本身(這將取代存款),然后在第一層(L1)上取出Token,這個問題可以得到解決。然而,實際實現這樣一個機制需要隱私系統開發人員額外的努力。 還有其他解決隱私問題的方法,例如Intmax方法,它涉及將幾個字節按照鏈上滾動的方式與類似Plasma的操作者一起放置在一起,以在個體用戶之間傳遞信息。
    Uniswap的流動性提供者LP)頭寸也存在類似的問題:如果你在Uniswap頭寸中將USDC換成ETH,你可以嘗試提取交易前的USDC和交易后的ETH。如果你與Plasma鏈操作者勾結,流動性提供者和其他用戶將無法訪問交易后的狀態,因此他們將無法提取交易后的USDC。需要特殊邏輯來防止這種情況的發生。

    8、結論

    在2023年,Plasma是一個被低估的設計領域。Rollups仍然是黃金標準,并具有無法匹配的安全性能。從開發者的角度來看,這一點尤為明顯:沒有任何東西能夠與應用程序開發者無需考慮所有權圖和應用程序內的激勵流程的簡單性相匹配。 然而,Plasma使我們能夠完全避開數據可用性問題,極大地降低了交易費用。對于本來可能是validiums(一種數據隔離方案)的鏈來說,Plasma可以成為重要的安全升級。今年ZK-EVMs終于開始實現,這為重新探索這一設計領域提供了絕佳機會,并提出更加有效的構建方案,以簡化開發者體驗并保護用戶資金。

    本文鏈接:http://www.zhucexiangganggs.com/kp/du/11/4835.html

    來源:https://vitalik.eth.limo/general/2023/11/14/neoplasma.html

    白話區塊鏈

    區塊鏈世界入口,人人都能看懂的區塊鏈;24 小時熱點實時追蹤。

    毛片免费看