Plasma技术为何长期被埋没,而Vitalik却大力支持Rollup?这背后隐藏着两个关键原因:首先,在以太坊链下实现数据可用性(DA)存在可靠性问题,数据扣留攻击一旦发生就会阻碍欺诈证明的执行;其次,Plasma的机制设计对智能合约极不友好,特别是难以支持合约状态向Layer1的迁移。这些限制使得Plasma不得不采用UTXO或类似模型。
要深入理解这些问题,我们需要从DA和数据扣留攻击说起。DA全称Data Availability,常被误译为”数据可用性”,导致很多人将其与”历史数据可查”混淆。实际上,”历史数据可查”和”存储证明”早已被Filecoin和Arweave等项目解决。根据以太坊基金会和Celestia的定义,DA问题特指数据扣留场景。
Merkle Tree及其核心组件
要理解数据扣留攻击与DA问题的本质,我们需要先了解Merkle Tree的基本原理。在以太坊和大多数公链中,Merkle Tree这种树状数据结构被广泛用于记录账户状态摘要或区块交易。
Merkle Tree的底层叶子节点由交易或账户状态等原始数据的哈希值构成,这些哈希值两两组合并反复迭代计算,最终生成唯一的Merkle Root。
(图中底部的record代表叶子节点对应的原始数据集)Merkle Root具有一个重要特性:任何底层叶子节点的变化都会导致Root值改变。因此,不同数据集对应不同的Merkle Root,就像每个人的指纹都独一无二。Merkle Proof验证技术正是利用了这一特性。举例来说,如果某人只知道Merkle Root而不知完整树结构,我们只需提供特定记录及其路径上的少量哈希值,就能证明该记录确实属于这棵树,这就是Merkle Proof的精妙之处。
当Merkle Tree包含海量数据时(比如2^20个数据块),Merkle Proof仅需21个数据块就能完成验证。
(图中数据块30和H2即可构成Merkle Proof)比特币、以太坊和跨链桥都广泛应用了Merkle Proof的简洁特性。轻节点就是典型的应用场景,它们只接收区块头而非完整区块。值得注意的是,以太坊使用称为State Trie的默克尔树作为全局账户状态摘要。任何账户状态变化都会改变StateRoot,而交易树的Txn Root则记录区块内所有交易。两者的主要区别在于数据量和存储方式。
由于轻节点仅接收区块头,它们需要依赖Merkle Proof来验证特定交易。这种机制在跨链桥中尤为常见,比如Map Protocol等ZK桥会在以太坊上部署合约来验证其他链的区块头,用户通过Merkle Proof证明其跨链交易确实被打包。
数据可用性与扣留攻击
回到最初的DA问题,这一概念早在2017年就被讨论过。Vitalik曾指出,出块者可能故意隐瞒区块部分数据,发布不完整区块,使得全节点无法验证交易执行的正确性。这种情况下,出块者可以盗取用户资产,而全节点难以察觉。
比特币白皮书曾设想轻节点依赖全节点警报的机制,但未深入探讨。后来Vitalik和Celestia创始人Mustafa在此基础上引入了DA数据采样技术,确保诚实节点能还原完整区块数据。
Plasma的困境与局限
Plasma作为一种仅将Layer2区块头发布到Layer1的扩容方案,其核心问题在于链下数据发布的可靠性。当用户要从L2提款到L1时,需要提交Merkle Proof证明资产所有权,这与前文提到的ZK桥类似,但Plasma采用欺诈证明机制,并设置了挑战期。
Plasma的最大弱点在于对数据发布的松散要求。如果排序器扣留数据,节点将无法验证区块有效性,也无法提交欺诈证明。这种情况下,排序器可以盗取用户资产,而用户只能集体发起提款,导致”Exit Game”的混乱局面。
智能合约支持是Plasma的另一大难题。对于DeFi合约资产,紧急提款时由谁提取到L1成为棘手问题。如果允许合约Owner操作,可能引发信任危机;若不允许,又会导致资产损失。此外,合约状态迁移可能引发双重提款攻击,而验证这些交易的复杂性往往超出以太坊gas限制。
这些根本性缺陷使得Plasma难以支持智能合约,最终只能采用UTXO等简单模型。随着Rollup技术的成熟,Plasma逐渐退出历史舞台,但其探索为区块链扩容积累了宝贵经验。
声明:文章不代表CHAINTT观点及立场,不构成本平台任何投资建议。投资决策需建立在独立思考之上,本文内容仅供参考,风险 自担!转载请注明出处:https://www.chaintt.cn/10688.html