深度|关于Layer2的认识和看法

行业热点3年前 (2021)发布 qkledit
0 0

是一个大话题。是否去中心化、是否安全以及资本状况的确认时间是Layer2讨论的主要话题。最近,我有时间总结Layer2的理解和思考。

Layer2交互

与layer1相比,layer2在layer1的基础上提供了更丰富的功能和更好的用户体验。将第2层的逻辑和交互模抽象如下:

深度|关于Layer2的认识和看法

除Layer1(存款)的交易外,Layer2的其他交易在Layer2执行。为了让layer2在必要时恢复事务状态,需要安全地存储layer2的所有事务数据。为简单起见,为了保持与layer1相同的安全性,layer2的所有事务数据通常都存储在layer1中。这种事务数据可以随时访问,称为“数据可用性”。所有layer2事务在layer2中执行,并同步到layer1。不同的layer2方案对于如何证明layer2的正确同步状态有不同的实现方法。

Layer2实现分类

从layer2的状态同步模式来看,layer2分为两类:侧链和Rollups。侧链是通过与layer1不同的共识将layer2的状态同步到layer1。仅从这一点来看,整个侧链的安全性就降低到第2层的安全性。Rollups分为两种类:zkrollup和optimal Rollup。所谓的**Rollups是乐观Rollups。预计在大多数情况下,Rollups将正确同步到第1层。同时,为了防止同步错误的状态,提供了质询机制。乐观的预期不太可能带来挑战。当需要挑战时,第1层可以判断正确的状态。Zkrollup是最直接的状态同步方法。它通过零知识证明技术向layer1提交状态时,提供状态更改的证明。层实现分类如下:

深度|关于Layer2的认识和看法

Zkrollup根据零知识证明协议分为三类:1/groth16 2/plonk 3/stark。groth16协议要求每个电路都有可靠的设置。一定规模的plonk协议电路只需要一次初始设置。stark协议不需要初始设置。然而,与其他两种算法相比,stark协议的验证数据量大,验证时间长。相对而言,在Layer2场景中,plonk是一种广泛使用的算法。

STARK协议和SNARK(Groth16/PLONK)协议比较(来源于Matter Labs的github链接):

https://github.com/matter-labs/awesome-zero-knowledge-proofs

综上所述,从安全性的角度来看,各层2的顺序如下:zkrollup、optimistic Rollup和侧链。提取时间也确认了安全性。Zkrollup的撤销是在分钟级别,其他两个方案是在小时甚至是天级别。Zksync是一个相对完整的zkrollup开源项目。感兴趣的合作伙伴可以查看以前的分析文章:

  • L2-zksync源代码指南
  • L2-深入了解zksync

虽然zkrollup很好,但它有很大的缺陷:可编程性差。

仔细看看zkrollup

与其他卷积方案相比,zkrollup方案具有更多的ZK证明体系。换句话说,在Layer2中,除了“执行”之外,每个事务还需要生成一个证书来证明执行过程的正确性。熟悉零知识证明技术的小合作伙伴知道零知识证明的安全性在于“电路”的安全性。对于Layer2,每个事务的处理被“固化”成一个电路,电路逻辑被完全公开。对于每个电路,都有一个唯一的验证密钥。验证密钥用于验证第1层的状态。验证状态证明符合固化电路的逻辑。

深度|关于Layer2的认识和看法

关键是Layer2事务的执行是否与固化电路的语义一致。断路是每个人查阅电路逻辑的常见方式。简单地说,为了实现zkrollup,您需要实现layer2来执行相应的电路。实际上,该电路的实现比较复杂,没有高级语言,而且在很多情况下都是手写的R1C。此外,为了使用ZK证明系统并优化电路的实现,通常将整个层2的状态优化为电路友好结构(Merkle树)。因此,ZKLULUP系统需要考虑电路结构,这限制了层二事务和帐户模。细心的合作伙伴会发现zksync/zkswap/loopring只实现特定的事务场景。

相反,如果需要通过zkrollup支持EVM事务执行,则需要将EVM事务抽象为电路友好的帐户模。这种抽象并不容易。此外,可以预测EVM的描述电路会很大。从零知识证明的性能来看,这将限制整个zkrollup的性能。

再看一看第1层中zkrollup方案的耗气量。整个zkrollup方案的主要用气量分为三部分(不考虑收回):

  • 事务原始数据:在zksync中称为发布数据。为确保数据可用性,第2层的所有事务将以原始数据的形式提交给第1层。
  • Layer2块管理:当Layer2提交块状态时,layer1维护Layer2的块结构和状态。
  • 验证layer2块的状态:layer2提交证书时,layer1需要验证状态证书。

以一个区块350笔交易,每笔交易的交易原始数据大小为20字节为例,一个区块处理的用气量:

深度|关于Layer2的认识和看法

虽然上述数据不是一个准确的值,但足以表明原始事务数据在整个zkrollup方案中的用气比例非常高。从这个角度来看,第2层中的某些项目选择将事务数据存储在其他链下。

Optimi vs. Arbitrum

**Rollups与EVM兼容。也就是说,layer2支持可编程性,以太坊上的程序几乎无缝迁移。为了确保链的正确状态,两种方案都提供了一段时间的质询机制。挑战者提供挑战的证据,第1层决定是否正确。要深入了解Optimi和Arbitrium,请参阅之前的文章:

  • L2-对Arbitrium的深刻理解
  • L2-对OVM的深入理解

优化使用OVM执行Layer2事务。命名OVM是为了区分第1层的EVM。由于提交给layer1的状态需要验证其正确性,layer1需要“重放”layer2的事务,即layer1在某些情况下需要执行OVM事务。这也是**Rollups中最复杂的部分。EVM用于模拟OVM并执行Layer2事务。可以想象,layer1中的EVM模拟了OVM的执行,这既麻烦又昂贵。

Arbitrium也采用挑战机制。为了避免低天然气成本的挑战,Arbitrium引入了AVM:

深度|关于Layer2的认识和看法

与EVM相比,AVM是一个相对简单的虚拟机。Arbitrum在AVM虚拟机上模拟EVM执行环境。换句话说,所有Layer2事务都在AVM中执行,事务的执行状态可以用AVM状态表示。当提交给第1层的状态存在差异时,两个质询方(资产方和质询方)首先划分状态以找出“差异”。澄清差异后,质询双方都可以提供执行环境,第1层执行相关操作以确定之前提交的状态是否正确。在第1层中,挑战在于AVM的状态,以及AVM在分岔点的指令执行。

简而言之,为了节省挑战的气体成本,Arbitrium采用了简化的AVM(非常方便的状态表示)。通过快速分段,只需在链上执行一条指令即可判断状态是否正确执行。正如Arbitrium介绍文件中提到的,整个挑战需要大约500字节的数据和9W的气体。在AVM的基础上,arbitrum设计了微语言和编译器来模拟EVM的执行环境,从而与EVM兼容。

总结

与layer1相比,layer2在layer1的基础上提供了更丰富的功能和更好的用户体验。资本状况、确定性、持续时间、安全性和可编程性是目前讨论的焦点。Zkrollup是最快确定资本状况的方案。**上卷/侧链是可编程的。zkrollup支持EVM的证明是一个预期的方向。

© 版权声明

相关文章

暂无评论

暂无评论...