原文标题:《L2 - 理解和思考》 Layer2 是个大的话题。是否去中心化,是否安全,资金状态确认时间是 Layer2 的主要的讨论话题。最近有点时间,总结一下 Layer2 的理解和思考。 Layer2 交互模型Layer2,相对于 Layer1,在 Layer1 的基础上提供更丰富功能,更好的用户体验。抽象一下 Layer2 的逻辑以及交互模型如下: 除了 Layer1 的交易外(入金),其他 Layer2 的交易都在 Layer2 执行。为了 Layer2 在必要时恢复交易状态,所有 Layer2 的交易数据需要安全存储。简单起见,也为了和 Layer1 保持一样的安全性,所有 Layer2 的交易数据一般存储在 Layer1。这种交易数据的随时可访问,称为 「Data Availability」(数据可用性)。所有的 Layer2 交易都在 Layer2 执行,并同步到 Layer1。如何证明 Layer2 同步的状态正确,不同的 layer2 方案有不同的实现方法。 Layer2 实现分类从 Layer2 状态同步方式,Layer2 分为两类:一类是侧链实现(Side Chain),一类是 Rollup。侧链,就是通过不同于 Layer1 的共识进行 Layer2 状态向 Layer1 的同步。仅从这一点,整个侧链的安全性,就降低到 Layer2 的共识的安全性。Rollup 又分为两种:一种是 zkRollup,一种是 Optimistic Rollup。所谓 Optimistic Rollup,乐观性 Rollup,期望绝大多数情况下 Rollup 正确向 Layer1 同步状态。同时,为了防止同步错误的状态,提供了挑战机制。乐观预计挑战的机率比较小。在需要挑战的情况下,Layer1 可以判断正确状态。zkRollup 是最直接的状态同步方式,通过零知识证明技术,在向 Layer1 提交状态的同时提供状态变化的证明。Layer 实现分类如下: zkRollup,按照采用的零知识证明协议又分为三类:1/ Groth16 2/ PLONK 3/ STARK。Groth16 协议需要针对每一个电路进行初始设置 (Trusted Setup)。PLONK 协议在一定规模下的电路只需要一次初始设置。STARK 协议不需要初始设置。但是,相对另外两种算法,STARK 协议,证明数据量大,验证时间长。相对来说,在 Layer2 的场景下,PLONK 是目前广泛使用的算法。 STARK 协议和 SNARK(Groth16/PLONK) 协议比较(来源于 Matter Labs 的 github 链接): https://github.com/matter-labs/awesome-zero-knowledge-proofs 总结一下,从安全性角度看,各种 Layer2 的排序如下:zkRollup,optimistic Rollup,侧链。从提现的时间也印证了安全性,zkRollup 的提现是分钟级别,其他两种方案,小时甚至是天级别。zkSync 是比较完善的 zkRollup 开源项目,感兴趣的小伙伴可以查看之前的分析文章: (责任编辑:admin) |