V神最新博文:被低估的Plasma

宋宋
宋宋

Nov 15, 2023

摘要: 虽然Plasma在2017年问世后就不受欢迎了,但V神认为,现在是重新审视这项技术并实现其潜力的合适时机,尤其是在ZK网络即将在今年推出之际。

原文标题:Exit games for EVM validiums: the return of Plasma

原文作者:Vitalik Buterin

编者按:

在最新的博文中,以太坊联合创始人Vitalik Buterin认为,作为一种以太坊Layer 2扩展解决方案,Plasma是一个“被低估的设计空间”。零知识证明的改进解决了过去的局限性,使Plasma更具可行性。

在其他L2中,Plasma旨在通过将大部分计算和数据移出主区块链来扩展以太坊,同时仍然依赖底层的以太坊区块链来保证安全性。这允许更大的交易吞吐量,因为主链不必处理每笔交易。

Plasma和ZK Rollup之间的一个关键区别是如何处理数据存储。虽然ZK Rollup可以加密证明交易的有效性,但它们仍然依赖于存储在以太坊上的完整数据。Plasma则绕过了这个限制。

同时,最近的进展使Plasma比其他Layer 2解决方案更具吸引力。虽然ZK Rollup在数据可用性方面可能存在问题,但根据V神的说法,Plasma最大限度地减少数据可用性限制的能力使其值得重新探索。

V神将Plasma视为一种使用zkSync和StarkNet等有效性证明来提高链可扩展性的方法。通过利用Plasma和ZK证明,这些链或将能够降低费用并提供更好的用户体验。

虽然Plasma在2017年问世后就不受欢迎了,但V神认为,现在是重新审视这项技术并实现其潜力的合适时机,尤其是在ZK网络即将在今年推出之际。

以下为链得得编译原文:

Plasma是一种区块链扩容解决方案,允许除deposits、取款和Merkle roots外的所有数据和计算都保持在链下。它不受链上数据可用性的限制,为实现大规模的可扩展性打开了大门。Plasma最早于2017年推出,并在2018年进行了多次迭代,最著名的是Minimal Viable Plasma, Plasma Cash, Plasma Cashflow和Plasma Prime。然而,Plasma在很大程度上已经被rollup所取代,主要原因是:(1)客户端数据存储成本高;(2)Plasma的基本限制。这使其难以推广到支付之外的领域。

有效证明(ZK-SNARKs)的出现让我们有理由重新考虑这一决定。让Plasma用于支付的最大挑战,即客户端数据存储,可以通过ZK-SNARKs进行有效地解决。此外,ZK-SNARKs还提供了一系列广泛的工具,使我们能够创建运行EVM的、类似Plasma的链。Plasma保证不会覆盖所有用户,因为不可能将Plasma风格的退出游戏扩展到许多复杂的应用程序背后的根本原因仍然存在。然而,很大一部分资产在实践中是可以保持安全的。

本文描述了如何将Plasma的想法扩展到类似的事情上。

概述:Plasma工作原理

最容易理解的Plasma版本是Plasma Cash。Plasma Cash的工作原理是将每个代币视为单独的NFT,并跟踪每个代币的单独历史记录。每个Plasma链都有一个操作员,负责生产和定期发布区块。每个区块中的交易被存储为稀疏的默克尔树(Merkle tree):如果某笔交易转移了代币k的所有权,它将出现在树的第k个位置。当Plasma链操作员创建一个新的区块时,他们将默克尔树的根发布到链上,并直接向每个用户发送与该用户拥有的代币相对应的Merkle分支。

假设这些是Plasma Cash链中的最后三个交易树,再假设所有之前的树都是有效的,我们知道Eve目前拥有代币1,David拥有代币4,George拥有代币6。

在Plasma系统中,主要风险都是操作人员的不当行为引起的。这可以通过两种方式发生:

1. 发布无效区块。例如:这个操作包含了一个交易,将代币1从Fred发送给Hermione,即使Fred当时并不拥有这枚硬币。

2. 发布一个不可用的区块。例如:操作员没有给Bob发送他的Merkle分支来获取其中一个区块,从而阻止了他向其他人证明他的代币仍然有效且未使用。

如果操作者的不当行为与用户的资产有关,用户有责任立即退出(具体而言,在7天内)。当用户(“退出者”)退出时,他们要提供一个Merkle分支,证明包含将该代币从前所有者转移给他们的交易记录。这将开启为期7天的挑战,在此期间,其他人可以通过提供以下三种证明中的一种来挑战退出:

1. 不是最新所有者:退出者签署的后续交易,将退出者的代币转移给其他人;

2. 双花:将代币从先前的所有者转移给其他人的交易,这包括在将代币转移到退出者之前的交易;

3. 无效历史记录:在转账之前(过去7天内)没有相应支出的交易。退出者可以通过提供相应的支出来做出回应;如果没有,则退出失败。

根据这些规则,任何拥有代币k的人都需要查看过去一周所有历史树中位置k的所有Merkle分支,以确保他们实际上拥有代币k并可以退出它。他们需要存储包含资产转移的所有分支,以便他们可以响应挑战并安全地退出他们的代币。

概括同质化代币

上述设计适用于NFT。然而,比NFT更常见的是同质化代币,比如ETH和USDC。将Plasma Cash应用于同质化代币的一种方法是,简单地将每个代币的小面额(例如0.01 ETH)设置成一个单独的NFT。但是,如果我们这样做,退出的gas成本将太高。

一种解决方案是通过将许多相邻的代币视为单个单元来进行优化,这些代币可以同时转移或退出。这里有两种方法:

1. 几乎不变的使用Plasma Cash,但如果相邻的对象多数是相同的,则使用奇特的算法快速计算大量对象的Merkle树。这并不难做到,您可以在这里看到一个python实现。

2. 使用Plasma Cashflow,它简单地将许多相邻的代币表示为单个对象。

然而,这两种方法都遇到了碎片化的问题:如果你从数百个向你购买咖啡的人那里每人收到0.001 ETH,那么你将在默克尔树的许多地方拥有0.001 ETH,而实际退出这些ETH时,仍然需要提交许多单独的退出,这使得gas费令人望而却步。尽管碎片整理协议已经被开发出来,但是仍很难实现。

或者,我们可以重新设计系统,考虑更传统的“未花费事务输出(UTXO)”模型。当你退出一个代币时,你需要提供这些代币最近一周的历史记录,任何人都可以通过证明这些历史代币已经退出来挑战你的退出。

右下角的0.2 ETH UTXO的提取可以通过显示其历史上任何UTXO的提取(绿色部分)来取消。特别注意,左中和左下的UTXO是祖先,但左上的UTXO不是。这种方法类似于2013年彩色代币协议中基于顺序的着色想法。

有各种技术可以做到这一点。在所有情况下,目标都是跟踪历史上不同时间点的“同一代币”的一些概念,以防止“同一硬币”被提取两次。

概述EVM的挑战

不幸的是,推广到EVM以外的支付要困难得多。一个关键的挑战是,EVM中的许多状态对象没有明确的“所有者”。Plasma的安全性依赖于每个对象都有一个所有者,所有者负责监视并确保链上的数据可用,如果出现任何问题,则退出该对象。然而,许多以太坊应用程序并不是这样工作的。例如,Uniswap流动性池没有单一的所有者。

另一个挑战是EVM并未试图限制依赖关系。账户A在区块N处持有的ETH可能来自区块N-1中的任何地方。为了退出一致状态,EVM Plasma链需要有一个退出博弈,在极端情况下,希望使用区块N的信息退出的人可能需要支付在链上发布整个区块N状态的费用:这是数百万美元的gas成本。基于UTXO的Plasma方案没有这个问题:每个用户都可以从他们拥有数据的最新区块中退出他们的资产。

第三个挑战是EVM中无界的依赖关系使其很难有一致的激励来证明有效性。任何状态的有效性都取决于其他一切,因此证明任何一件事都需要证明一切。由于数据可用性问题,在这种情况下解决故障通常不能与激励相容。一个特别恼人的问题是,我们失去了在基于UTXO的系统中存在的保证,即对象的状态不能在未经其所有者同意的情况下更改。这种保证非常有用,因为这意味着所有者总是知道他们资产的最新可证明状态,并简化退出游戏。没有它,创造退出游戏就会变得更加困难。

有效证明如何缓解这些问题

有效证明(ZK-SNARKs)可以改善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上发送消息,以强制操作员包含事务或使状态的特定分支可用。如果操作失败,则链开始回滚区块。一旦有人发布了整个状态的完整副本,或者至少是用户标记为可能丢失的所有数据,区块链就会停止回滚。提现可能需要发布赏金,这将支付用户在发布如此大量数据时所承担的gas成本。

这样的方案有一个缺点,即在正常情况下不允许即时取款,因为总有可能需要将链回滚到最新状态。

EVM等Plasma方案的局限性

这样的方案很强大,但不能为所有用户提供完全的安全保证。当一个特定的状态对象没有明确的经济“所有者”时,它们最容易崩溃。

让我们考虑一下CDP(抵押债务头寸)的情况,这是一种智能合约,用户代币被锁定,只有在用户支付债务后才能释放。假设用户有1个ETH(在撰写本文时其价格约为2000美元)被锁定在一个有1000 DAI债务的CDP中。现在,Plasma链停止发布区块,用户拒绝退出甚至可能永远不会退出。现在,用户有一个免费的选择:如果ETH的价格低于1000美元,他们能离开并忘记CDP;但如果ETH的价格高于1000美元,则最终他们可以提取。总而言之,恶意用户通过这样做赚钱。

另一个例子是隐私系统。例如,Tornado Cash和Privacy Pools。考虑一个有五个存款人的隐私系统:

隐私系统中的ZK-SNARKs保持了代币所有者进入系统和代币所有者退出系统之间的链接隐藏。

假设只有橘色退出,此时Plasma链操作员停止发布数据。再假设我们使用具有先进先出规则的UTXO图方法,因此每个代币都与其下方的代币匹配。然后,橙色可以提取他们预先混合和后混合(pre-mixed and post-mixed)的代币,系统会将其视为两个独立的代币。如果蓝色试图收回其预先混合的代币,橙色的最新状态将取代它;与此同时,蓝色将无法提取他们混合后的代币。

如果允许其他四个存款人提取隐私合约本身(这将取代存款),然后在L1上取出代币,则可以解决这个问题。然而,实际上,要实现这种机制,需要开发隐私系统的人员付出额外的努力。

还有其他解决隐私问题的方法,例如:Intmax法,它包括将几个字节放在链式Rollup方式上,并与Plasma操作员一起在单个用户之间传递信息。

Uniswap LP头寸也有类似的问题:如果您在Uniswap头寸中交易USDC以换取ETH,您可以尝试提取交易前的USDC和交易后的ETH。如果你与Plasma链操作员串通,流动性提供者和其他用户将无法访问交易后状态,因此他们将无法提取交易后的USDC。需要特殊的逻辑来防止这种情况。

结论

在2023年,Plasma仍是一个被低估的设计领域。Rollup仍然是黄金标准,并且具有无法匹配的安全属性。从开发者体验的角度来看尤其如此:没有什么能与应用程序开发人员的简单性相提并论,他们甚至不必考虑应用程序中的所有权图和激励流。

然而,Plasma让我们完全避开了数据可用性问题,大大降低了交易费用。Plasma可以是一个重要的安全升级链。今年ZK-EVM终于实现了,这是一个重新探索这个设计空间的绝佳机会,可以提出更有效的结构来简化开发人员的体验,并保护用户的资金。

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 宋宋 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信