Layer2是个大的论题。是否去中心化,是否安全,资金状况确认时刻是Layer2的首要的评论论题。最近有点时刻,总结一下Layer2的了解和考虑。

Layer2交互模型

Layer2,相对于Layer1,在Layer1的基础上供给更丰厚功能,更好的用户体会。笼统一下Layer2的逻辑以及交互模型如下:L2 - 理解和思考

L2 - 理解和思考

除了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完成分类如下:

L2 - 理解和思考

zkRollup,按照选用的零常识证明协议又分为三类:1/ Groth16 2/ PLONK 3/ STARK。Groth16协议需求针对每一个电路进行初始设置(Trusted Setup)。PLONK协议在一定规模下的电路只需求一次初始设置。STARK协议不需求初始设置。但是,相对别的两种算法,STARK协议,证明数据量大,验证时刻长。相对来说,在Layer2的场景下,PLONK是现在广泛使用的算法。

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

L2 - 理解和思考

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

总结一下,从安全性视点看,各种Layer2的排序如下:zkRollup,optimistic Rollup,侧链。从提现的时刻也印证了安全性,zkRollup的提现是分钟级别,其他两种计划,小时甚至是天级别。zkSync是比较完善的zkRollup开源项目,感兴趣的小伙伴能够检查之前的分析文章:

L2 - zkSync源代码导读

L2 - 深化了解zkSync电路

zkRollup,虽好,现在存在很大的缺陷:可编程性差。

细看zkRollup

相对其他Rollup计划,zkRollup计划多了zk证明体系。也便是说,在Layer2每个买卖除了“履行”外,还需求生成证明,证明履行进程的正确性。熟悉零常识证明技能的小伙伴都知道,零常识证明的安全性在于”电路“的安全性。对于Layer2,每种买卖的处理”固化“为电路,电路逻辑完全公开。对应于每种电路,存在唯一的验证秘钥。验证秘钥用在Layer1验证状况证明。经过验证的状况证明,符合固化电路的逻辑。L2 - 理解和思考

L2 - 理解和思考

要害就在于Layer2买卖的履行和固化电路语义是否共同。公开电路便是一种共同方法,供一切人查阅电路逻辑。简略的说,为了完成zkRollup,需求完成Layer2履行对应的电路。事实上,电路的完成相对杂乱,没有高档语言,许多情况下都是手写R1CS。进一步,为了利用zk证明体系,为了优化电路的完成,整个Layer2的状况常常优化为电路友爱结构(merkle树)。所以,zkRollup的体系需求考虑电路的结构,然后约束了Layer2买卖以及账户模型。细心的小伙伴能够发现,不管是zksync/zkswap/loopring,都只完成了特定买卖场景。

反过来说,假如需求经过zkRollup支撑EVM的买卖履行,需求将EVM的买卖笼统成电路友爱的账户模型。这种笼统并不简略,再者,EVM的描绘电路能够预见比较大。从零常识证明的性能看,这方面会约束整个zkRollup的性能。

再看看zkRollup计划在Layer1的gas耗费。整个zkRollup计划的首要gas耗费为三部分(withdraw不考虑在内):

  • Transaction Raw Data:在zksync中称为pub data。为了确保data availability,一切的Layer2的买卖都会以裸数据的方法提交到Layer1。

  • Layer2 Block管理:在Layer2提交区块状况时,Layer1维护着Layer2的区块结构和状况。

  • 验证Layer2 Block状况:在Layer2提交证明时,Layer1需求验证状况证明。

以一个区块350笔买卖,每个买卖的Transaction Raw Data的大小为20字节为例,一个区块处理的gas耗费:

L2 - 理解和思考

尽管上述的数据不是准确值,但是足以说明买卖原始数据在整个zkRollup计划中的gas耗费占比是十分高的。从这个视点看,Layer2的有些项目选择经过其他链下的方法存储买卖数据。

Optimism vs. Arbitrum

Optimistic Rollup兼容EVM。也便是说,Layer2支撑可编程性,并且在以太坊上的程序简直无缝迁移。为了确保链上的状况正确,这两种计划都供给一段时刻内的应战机制。应战者供给应战的证据,Layer1选择正确与否。深化了解Optimism和Arbitrum能够检查之前的文章:

L2 - 深化了解Arbitrum

L2 - 深化了解OVM

Optimism选用OVM履行Layer2买卖。取名OVM是为了区分Layer1的EVM。因为提交到Layer1的状况需求检验正确性,Layer1需求“重放”Layer2的买卖,也便是说,Layer1在有些情况下需求履行OVM买卖的履行。Optimistic Rollup最杂乱的当地也在于此,用EVM模仿OVM,并履行Layer2的买卖。可想而知,在Layer1的EVM模仿OVM的履行是比较繁琐,耗费较大的操作。

Arbitrum也是选用应战机制。为了防止应战的gas费用低,Arbitrum引入了AVM:L2 - 理解和思考

L2 - 理解和思考

相对于EVM,AVM是一个相对简略的虚拟机。Arbitrum在AVM虚拟机上模仿EVM履行环境。也便是说,一切的Layer2买卖都是在AVM履行,买卖的履行状况能够用AVM状况表明。在提交到Layer1的状况有不合时,应战两边(Asserter和Challenger)先将状况切割,找出“不合点”。明确不合点后,应战两边都可供给履行环境,Layer1履行相关操作确认之前提交的状况是否正确。在Layer1应战的是AVM的状况,不合点的AVM的指令履行。

简略的说,为了省应战的gas费用,Arbitrum选用了精简的AVM(十分方便状况表明),经过快速切割,在链上只需求履行一个指令,判别状况是否履行正确。Arbitrum介绍文档中提到,整个应战需求大约500字节的数据和9w左右的gas。在AVM的基础上,Arbitrum规划了mini语言和编译器,模仿了EVM的履行环境,然后兼容EVM。

总结:

Layer2,相对于Layer1,在Layer1的基础上供给更丰厚功能,更好的用户体会。资金状况确认性时长,安全性,可编程性是现在评论的焦点。zkRollup是资金状况确认性最快的计划。optimistic Rollup/侧链具有可编程性。zkRollup支撑EVM的证明是个期待的方向。

视野开拓

1939年之前的物价总水平变动。 从20世纪初到1935年,中国总体物价水平受三个主要因素的影响:国内农业收成、世界大宗商品价格以及国际银价。粮食和服装这两项在自给经济中占绝对比中的关键商品,引领其他商品价格波动,从而影响生活成本-《通胀螺旋》

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注