拜读了 Vitalik Buterin 有关 Plasma 回归的新作,被 Plasma 基于类 UTXO 的账本「退出游戏」机制深深吸引,且 Vitalik 似乎有意引导市场往 ZK+Plasma 方向探索,避免市场停留在 Rollup 阶段内卷。接下来,详细给大家科普解读下。

我在上一篇解读 Vitalik 文章中说了,以太坊的 2 层扩容方案原本有:Plasma、Rollup、Validium、Parallel 等多种方案,Vitalik 期待中的扩容方向应该是均衡发展,适配各类应用场景进行多样化的 layer2 构建,但现实市场格局是,Rollup 方案一家独大,且日益内卷。

只是,Rollup 虽然方案安全性高,但对 Data Availability 的依赖性过大,而纯以太坊 DA 又受限于性能和成本问题,故而现在市场卷出一种卡位 Rollup 阵营但却依赖第三方 DA 的 Solution,这是一种正在把 Rollup 畸形化的方案,绝非 Vitalik 想看到的现状。

所以,Vitalik 新文章重新搬出了 Plasma,而且引导了一种 ZK+Plasma 的扩容解决方案,显然又是一次事关 layer2 政治摇旗。

为啥 Plasma 目前受限于支付场景?

Plasma 相当于一种侧链解决方案,会定期向主网同步默克尔状态数据,是一种数据和计算依赖主网的扩容方案。这样的话,2 层可以用非常中心化的方式,且设计非常复杂的账本模型来高效扩展,还能复用主网 vailidator 这些系统能力。

总得来说,Plasma 用在支付场景可以保证账本状态被有效追踪和记录。为啥呢?

1)支付场景下,用户只需要保留余额状态,若其他场景得保留全部链下状态数据,会带来存储空间压力;

2)Plasma 安全性依赖「退出游戏」机制,运营方作恶,用户可发起挑战提出自己的资产,若资产状态复杂则则会很麻烦;

3)目前 Plasma 很难兼容 EVM 的诸多无主状态,用户很难用 Plasma 的默克尔状态树账本来对应很多非交易状态,比如 LP、CDP;

Plasma 支付场景如何运作?

如 Vitalik 文章中所说,简单而言:

Plasma Cash 可以把每个 Token 视为 NFT,有唯一编号,当某个用户发生转账时,运营方会在默克尔树叶上记录一笔更新状态,每个用户都可以保存自己全局的默克尔树状态,这样账本追溯起来就不会出乱。

若是本就同质化的 Token,用户可能在消费时存在多次拆分和合并,比如小王 1 个 ETH,先拆分了三份,又把其中两份合并了,每一份都是不规则的,比如 0.001、0.1、0.3 等,如果大批量的拆分,可能导致默克尔数据冗余,这样发起退出游戏机制时可能会产生问题(挑战和验证成本较高),比如回溯近一周的账本发现对不上账。如何解决呢?可以为每一次资产拆分或合并状态匹配一个类 UTXO ID,这样无论怎么拆分都能即刻定位到相应交易树叶。

如何确保安全「退出游戏」机制?

因为 Plasma 没有像 Rollup 们一样有自己独立的链系统,它得时刻确保自己的侧链记账和主网保持同步,这就允许其不必刻意追求去中心化,只要有一个可高效记账的运营主体就行。

但问题来了,若运营方发布了无效区块记了假账,窃取用户资产该怎么办?用户需要随时发出「退出游戏」机制,把 2 层的资产 withdraw 回 1 层,类似于 Rollup 的逃生舱安全机制。

如何做呢?用户可以晒出自己默克尔树状态证明,证明资产转移过程,并发起 7 天挑战期,主网验证节点会检测用户是否为最终的资产 Owner,以及用户是否存在资产双花等问题。(因为主网节点存储了更多的默克尔树状态可以核对用户的 Proof 是否有恶意退出之嫌)。

通过「退出游戏「」来约束 2 层运营方作恶,而挑战期的存在则避免了用户恶意退出,这就确保了 Plasma 链的正常运行。

兼容 EVM「无主状态」的难点?

如前边所言,Plasma 目前更多是针对支付交易场景设计的 2 层解决方案,是一种可类比为 UTXO 模型的记账,而 EVM 本身则是账户模型。UTXO 可以记录每一次余额状态刷新,但 EVM 状态机中的很多「无 Owner」场景很难用 Plasma 的方案来实现。

比如,比如存入 Uniswap 池子的 USDC,放在 MakerDAO 的 CDP 中的资产也同理,用户很难证明哪一笔资产属于自己,这样一旦出现运营方宕机问题,合约被锁,用户就无法正常「退出游戏」。

因为无法证明用户在合约里有钱。受 Plasma 数据特性影响,主网只能监测合约的余额,若运营方给合约增发了一部分钱,用户怎么能证明哪笔钱是自己的,哪笔钱是被恶意增发的呢?

何况一个 layer2 侧链如果只能实现 Payment 转账交易,要如何构建应用和生态,显然这会大大限制 Plasma 的使用场景。

ZK+Plasma 释放的想象空间

若 Plasma 底层彻底的被 ZK 化,用户的操作会以 zk-SNARK 证明形式存在,就能释放很多 EVM 的状态机场景:

假若用户向 Plasma 某合约存入了一笔资产,就可以构造一笔 zkSNARKs 证明,这个证明可以向主网发起「退出游戏」,这样即使池子受安全威胁被冻结,用户也能撤出自己的合法资产;

或者在涉及隐私 DEX 的交易场景下,用户可以用 zkSNARKs 来证明拥有某资产,而不需要暴露自己的隐私;以及 Plasma 的智能合约在进行复杂升级时也可以 zkSNARKs 的形式证明其状态升级正确性,而不需要暴露细节,也能提升合约作恶难度;

以上。

整体来说,Vitalik 全文清晰地描述了 Plasma 的现状以及存在的问题,包括未来 ZK 化的可能性。在我看来,Plasma 并不新颖,甚至过去多年它已经在支付场景找到了自己的位置,此时此刻 Vitalik 抛出 ZK+Plasma 的新方向,是一次方向引导,也是一次政治摇旗,至于市场是否会顺着 vitalik 的意思走,我个人不是很乐观:

1)Rollup 是市场从投入成本、开发难度、生态兼容度等综合出来的最优解,ZK+Plasma 固然是一种更高级的 ZK-Rollup,但当下 ZK-Rollup 的发展也并不乐观,直接跳到 Plasma 过于仓促了;

2)Validium 作为一种独立链扩容方案,在 ZK 的应用程度上相对更高级,但它完全依赖链下 DA,相较之下 ZK+Plasma 似乎和以太坊主网黏性更高,但 Vitalik 这样呼吁可以理解,ZK 的成熟开发者们放弃 Validium 搞 ZK+Plasma 的动力或许不足。