Plasma是一种以太坊Layer2扩容方案,它并不是一个产品。它允许用户创建多个子链,在链下处理交易,存储交易数据,定期将状态根上传到L1主链用于验证。Plasma子链的共识锚定L1主链共识来保证安全性
本系列文章: 以太坊Layer2扩容方案之State Channel 以太坊Layer2扩容方案之Sidechain 以太坊Layer2扩容方案之Plasma 以太坊Layer2扩容方案之Rollup 以太坊Layer2扩容方案之Validium
一 为什么不使用sidechains?
1.1 安全性问题
侧链是一个独立的区块链,包括独立的共识机制。因此当侧链共识机制遭到攻击,那么会影响侧链上的资产的安全性。
侧链的数据处理和存储是独立的,这意味着主链无法直接验证侧链的数据。如果侧链出现数据丢失或数据可用性问题,主链无法有效解决这些问题。
运行一个安全且高效的侧链需要额外的管理和维护成本,包括节点运行、共识机制维护和安全防护等。 开发和部署侧链需要额外的技术投入和复杂的开发工作,尤其是在确保侧链与主链的互操作性和安全性方面。
Plasma是一种以太坊Layer2扩容方案,它并不是一个产品。它允许用户创建多个子链,在链下处理交易,存储交易数据,定期将状态根上传到L1主链用于验证。Plasma子链的共识锚定L1主链共识来保证安全性。
对于子链,我们比较陌生,因为区块链一般就一条链,何为子链呢? 其实我们知道Plasma是一种技术方案或者框架或者规范,具体的实现了Plasma的产品,比如polygon, 他们不同的产品,可以在主链上部署智能合约来创建Plasma子链。
用户提交交易给Operator运营商
Operator运营商验证交易的签名,确保交易是由合法账户发起的,并检查账户余额以确保交易的有效性
运营商Operator可以按照时间戳或其他规则对交易进行排序,并将多个交易打包成一个区块
运营商Operator执行区块中的所有交易,并更新链下的状态,包括账户余额和其他相关信息
运营商Operator将所有交易和状态更新组织成默克尔树(Merkle Tree),并计算出默克尔根(Merkle Root),代表当前区块的所有交易状态, 也就是state root
运营商Operator定期(例如每隔几个区块)将最新的默克尔根提交到以太坊主链。
太坊主链通过智能合约验证提交的状态根,并将其记录在主链上。这确保了链下状态的完整性和可追溯性。
用户希望从 Plasma 子链提现时,需要在主链上发起提现请求。这一请求通常通过专门的智能合约(如ExitManager合约)完成
提现请求需要经过一个挑战期(通常为 7 到 14 天),以便其他用户有时间提交欺诈证明
以太坊主链上的智能合约验证提交的默克尔证明。如果证明有效,主链将确认提现请求。比如是否运营商存在篡改交易,是否存在双花等问题。
挑战期结束后,如果没有欺诈证明,用户可以完成提现操作,将资产从子链转移到主链账户中
链下数据存储:在 Plasma 中,用户的交易和账户状态数据存储在链下。如果仅仅根据用户余额来判断提现合法性,无法保证链下数据在提交给主链之前没有被篡改。 默克尔证明:默克尔证明可以验证特定数据(如账户余额)确实包含在之前提交的状态根中。通过验证从叶节点到根节点的路径,可以确认数据的一致性和完整性,防止数据在链下被篡改。
提交状态根:Plasma 操作员定期将链下状态根提交到以太坊主链,状态根代表了整个子链的状态快照。 默克尔证明:当用户希望提现时,他们需要提供一个默克尔证明,证明其账户余额和交易确实包含在最近提交的状态根中。这确保了提现请求是基于已经验证和提交的数据。
链下交易处理:在链下处理交易时,如果不使用默克尔证明,仅凭余额可能无法有效防止双重花费(double spending)。 验证路径:默克尔证明提供了从交易到状态根的验证路径,确保每笔交易的唯一性和不可篡改性,从而防止双重花费。
假设用户 A 想从 Plasma 子链中提现 10 个代币:
状态根提交:
操作员在最近一个区块中提交了状态根,这个状态根包含了所有账户的状态,包括用户 A 的账户余额。 用户 A 发起提现请求:
用户 A 在以太坊主链上提交提现请求,声明自己账户中有 10 个代币。 提供默克尔证明:
用户 A 需要提供一个默克尔证明,证明其账户余额(10 个代币)包含在最近提交的状态根中。 默克尔证明包括从用户 A 的账户余额所在的叶节点到状态根的哈希路径。 主链验证:
以太坊主链上的智能合约验证这个默克尔证明,确保用户 A 的账户余额确实包含在状态根中。 验证通过后,用户 A 可以从子链中提现 10 个代币。
使用默克尔证明的主要目的是确保数据的完整性和一致性,防止数据被篡改和双重花费。仅凭用户余额无法提供足够的安全性保障,而默克尔证明通过提供从叶节点到根节点的验证路径,确保了提现请求的合法性和数据的不可篡改性。
Sidechain 和 Plasma 都是旨在解决区块链扩展性问题的 Layer 2 解决方案。它们通过将一部分交易和计算从主链转移主链之外来处理,从而提高系统的吞吐量和效率
Sidechain: 侧链是一个完全独立于主链的区块链,它有着自己的共识机制和操作规则。通过双向锚定,实现资产在主链和侧链上转移 Plasma: 创建的子链是构建在L1主链基础之上的,需要依赖主链的共识机制来保证安全
Sidechain: 侧链数据完全独立存储在侧链,所有交易和状态更新都在侧链上进行,完全独立于主链 Plasma: 交易数据也主要是存储在链下的,但是它会定期,一般是间隔几个区块,就会提交State Root状态根到L1主链, 用于校验
Sidechain: 侧链有自己的验证机制和节点,主链对侧链的数据和状态不进行直接验证 Plasma: 使用状态根来验证链下数据和校验请求,通过状态根提交和欺诈证明机制确保链下数据的合法性
Sidechain: 侧链的安全性依赖于其自身的共识机制,如果侧链的共识机制不安全,侧链上的资产可能面临风险;用户需要信任侧链的操作员和节点,确保侧链不会发生双重花费或其他攻击 Plasma: Plasma 依赖主链的安全性,通过定期提交状态根和使用欺诈证明机制来确保链下交易的安全性和合法性
Sidechain: 侧链支持智能合约 Plasma: 子链不支持智能合约
Sidechain: 没有挑战期,提款速度快,但是不够安全 Plasma: 有挑战期,提款比较慢,但是相对安全
第一: 都是属于Layer2链下扩容方案,可以增加交易吞吐量,减少交易费用 第二: 都通过将大部分交易和数据处理移到链下进行,以减少主链的负担
Plasma: 存钱和提现都是从L1层发起的;需要提交state root到L1主链 Validium: 存钱是L1发起的,提现是L2发起的;不仅要提交state root, 还需要生成零知识证明提交到L1主链
Plasma: 使用欺诈证明机制,通过主链处理争议来确保安全性。用户有一定时间窗口提交欺诈证明。 Validium: 主要依赖零知识证明来验证链下交易的正确性,确保数据隐私和安全
Plasma: 大部分交易计算在链下处理,费用较低。但是在提交检查点和处理争议时候,可能会产生一定的链上成本 Validium: 大部分交易计算在链下处理,费用较低。用户只需支付提交 ZK 证明和状态根的成本
Plasma: 适用于需要高安全性和复杂交易处理的应用,但是成本又不需要很高适合企业级应用和跨链解决方案 Validium: 适用于高频交易、去中心化金融(DeFi)、游戏等需要高吞吐量和低成本的应用。因为有高效的链下处理能力和较低的交易成本
Validium没有挑战期,提现速度快于Plasma
吞吐量高 交易成本低 不需要提前锁定资金 适用于任意用户之间交易,而通道是做不到的 安全性比侧链和通道好
不能执行智能合约 提款比较慢 需要定期观察网络,防止运营商作恶,导致数据不可用,比如停机或者跑路 大规模退出问题,造成主网拥塞
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!