Plasma 是用来提高以太坊的可拓展性、解决其交易拥堵的 Layer 2 扩容解决方案。它最初是由 Vitalik Buterin 和 Joseph Poon 在 2017 年创建的文章中提出的。
简单来讲,Plasma 的运行机制可以理解为链下交易处理及交易合集状态上传的过程。首先,用户需要通过智能合约将资产存入 Plasma 链。所有与用户资产相关的交易都会由 Plasma 链的运营商按照一定的顺序排列,然后打包成一个交易批次进行处理。
处理后,运营商会将交易批次的状态(通常称为 Merkle Root)发布到以太坊主网上。Merkle Root 以哈希值的形式表示,代表一个批次中的所有交易。下图简单展示了 Merkle Root 的生成过程。
哈希值是基于哈希方程的计算结果,它表示为一个固定长度的字符串值。通过哈希方程,任何给定的键或字符串都可以转换成固定长度的字符串值(哈希值)。
最初版本的 Plasma chain 被称为 Plasma MVP。然而它带来的问题却远远大于它解决扩容问题的能力。
如果用户 A 想要退出 Plasma chain,他需要发起提款请求并等待一段时间,这段时间被称为挑战期,通常长度为七天。这是为了防止有欺诈行为的存在。
在挑战期内,质疑交易存在问题的其它用户(即,挑战者)需要提供欺诈证明(发生欺诈行为的证据)来证实有欺诈行为发生。如果挑战成功,那么用户 A 的退出请求将被取消。反之,如果在挑战期内无人挑战,用户 A 成功退出。
虽然这是为了维护链下交易的安全性,但却相对的增加了时间成本。为了在挑战期内及时识别出欺诈行为,用户必须定期监控 Plasma 链上的交易。
此外,在存在恶意运营商的情况下,用户需要在挑战期间验证所有交易才能退出 Plasma 链。交易验证成本较高。
为了解决 Plasma MVP 的上述问题, Ethereum Research Community 提出了一个新版本的 Plasma 链,Plasma Cash。
Plasma Cash 与 Plasma MVP 最大的区别在于它可以通过改变数据结构来减少交易验证的成本。它部分解决了前面提到的 Plasma MVP 的问题。在 Plasma Cash 中,每一笔被存入的资产都表示为 non-fungible token(NFT)。
因此,在运营商恶意操纵的情况下,用户只用监控与自己资产相关的交易(而不是所有交易),并通过提供当前资产所有权证明来验证交易。证明一般包括最近的 2 笔交易和相对应的证明。
但是 Plasma Cash 仍然需要用户定期监视交易信息,并且它也没有解决用户退出时需要等待的问题。同时,数据结构的改变带来了新的问题。用户必须存储与其资产相关的所有数据和相应的证明。这会产生较高的存储成本。
如今,大部分 Plasma 链已经被乐观 rollup 和 zkrollup 所取代。 归根结底,造成这种情况的主要原因是 Plasma 链的数据不可用性,即,以太坊主网无法获取到每笔交易的原始数据。正如我们在本文中提到的,Plasma 仅上传交易批次的状态,这意味着交易仅在链下进行处理,且数据不可用。总的来说,数据的不可用性是造成 Plasma 的“消亡”的最直接原因。
你可能还对以下内容感兴趣:
- 什么是区块链不可能三角?
- 什么是以太坊?