
虽然 Plasma 在 2017 年问世后就不受欢迎了,但 V 神认为,现在是重新审视这项技术并实现其潜力的合适时机,尤其是在 ZK 网络即将在今年推出之际。
编者按:
在最新的博文中,以太坊联合创始人 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 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 中的许多状态对象没有明确的“所有者”。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 的情况下,有效证明也让我们做了一些聪明的事情:它们可以用来实现 ETH 和 ERC20 代币的并行 UTXO 图,以及 UTXO 图和 EVM 状态之间的 SNARK- 证明等价。一旦你有了这个,你就可以在 UTXO 图上实现一个“常规”Plasma 系统。

这让我们避开了 EVM 的许多复杂性。例如,在一个基于账户的系统中,某人可以在未经你同意的情况下编辑你的账户(通过向它发送代币,从而增加其余额),这并不重要,因为 Plasma 结构不是在 EVM 状态本身上,而是建立在与 EVM 并行的 UTXO 状态上,你收到的任何代币都将是单独的对象。
有人提出了一些更简单的方案来制造“Plasma EVM”。例如,Plasma Free以及这篇来自 2019 年的文章。在这些方案中,任何人都可以在 L1 上发送消息,以强制操作员包含事务或使状态的特定分支可用。如果操作失败,则链开始回滚区块。一旦有人发布了整个状态的完整副本,或者至少是用户标记为可能丢失的所有数据,区块链就会停止回滚。提现可能需要发布赏金,这将支付用户在发布如此大量数据时所承担的 gas 成本。
这样的方案有一个缺点,即在正常情况下不允许即时取款,因为总有可能需要将链回滚到最新状态。
这样的方案很强大,但不能为所有用户提供完全的安全保证。当一个特定的状态对象没有明确的经济“所有者”时,它们最容易崩溃。
让我们考虑一下 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 终于实现了,这是一个重新探索这个设计空间的绝佳机会,可以提出更有效的结构来简化开发人员的体验,并保护用户的资金。
链得得仅提供相关信息展示,不构成任何投资建议



【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。
