记录一下个人学习笔记,参考网上资料,本文主要是我个人学习笔记,内容出处均在文末注明。部分内容源自ChatGPT,如文中有错误还请不吝赐教。【文本】标识的内容文本为作者个人观点,仅供参考。L1与L2L1,也就是第一层网络,指的是底层区块链基础设施。它们是整个区块链生态系统的基石,为上层
记录一下个人学习笔记,参考网上资料,本文主要是我个人学习笔记,内容出处均在文末注明。部分内容源自 ChatGPT,如文中有错误还请不吝赐教。【文本】标识的内容文本为作者个人观点,仅供参考。
为什么要发展 L2? L1区块链的TPS有限需要扩容。区块链技术存在“不可能三角”,即无法同时达到 可扩展(Scalability)、去中心化(Decentralization)、安全(Security),三者只能得其二。【对于L1我们一般要求保障去中心化和安全,对于扩展性通过L2来实现】
为了提高 TPS 业界提出了一系列技术方案,时至今日,最主流技术方案是 zk Rollups, 关于 zk Rollups 我们会在后续的文章进行详细介绍。
L1 链上扩容:
链下扩容:链下解决方案与 L1 主网分开实施,不需要更改现有的以太坊协议。L2 直接从 L1 以太坊共识中获得安全性,例如optimistic-rollups、zk-rollups或state-channels。其他解决方案涉及创建各种形式的新链,这些链的安全性独立于主网,例如sidechains、validium或等plasma。这些解决方案与主网通信,但以不同的方式获得其安全性,以实现各种目标。
L1 网络之上的 L2 解决方案,如 卷叠(Rollups) 和 闪电网络(Lightning Network),通过在 L1 基础设施之上创建额外的协议或网络层来提高交易处理速度、降低交易成本,并提升整个网络的可扩展性。
这些 L2 项目通过将交易数据发布到底层 L1 网络(如以太坊),利用 L1 网络的安全性和数据不变性,实现在 L2 层上的高效交易处理。此外,L1 网络也为 L2 方案提供了数据可用性和最终的安全保障,使得在 L2 网络上进行的交易能够得到确认并在需要时回溯至 L1 网络验证。
大多数 L2 解决方案都以服务器或服务器集群为中心,这其中的服务器可能被称为节点(node),验证器(validator),操作器(operator),排序器(sequencer),区块生产者(block producer)或者类似的术语。根据实施情况,这些 L2 节点可能由使用它们的个人、企业或实体运行,或者由第三方运营商运行,或者由一大群个人运行(类似于主网)。 一般来说,交易会提交到这些 L2 节点,而不是直接提交到 L1(主网)。对于某些解决方案,L2 实例会将它们分批分组,然后将它们锚定到 L1,之后它们由 L1 保护并且无法更改。 不同的 L2 技术和实现之间的具体实现方式差异很大。
关于 L2 的安全性问题,可以参考 L2Beat 网站:https://l2beat.com/scaling/risk
在传统的区块链网络中,全节点执行所有交易,确保完整性和安全性。 然而,虽然安全,但该模型由于其全面的处理要求而限制了吞吐量和可扩展性。 第 2 层 (L2) 解决方案的出现是为了解决这些限制,通过将大量交易执行从主链(第 1 层)转移出来来提供增强的性能。
尽管 L2 解决方案具有优势,但它在维护数据可用性和事务完整性方面面临着挑战,尤其是以高效且经济高效的方式。 Rollups 旨在通过执行链下交易然后将汇总结果发布回主链来缓解这些挑战。 这种方法显着减轻了第 1 层的压力,从而降低了运营成本和交易费用,为区块链网络提供了更具可扩展性的解决方案。
Rollup(卷叠)技术是目前最主流的 L2 扩容方案。顾名思义,Rollup 就是把一堆交易卷起来(Rollup)汇总成一个交易,所有接收到这个交易的节点只去验证执行结果,而不会验证逻辑。因此 Rollup 交易所需 Gas 费会远小于交易 Gas 费总和,TPS(每秒钟交易次数)也增加了。
Optimistic Rollup(乐观的 Rollup 协议)采用欺诈证明方法,即对链上发布的所有 Rollup 区块都保持乐观态度并假设其有效,它仅在欺诈发生的情况下提供证据。乐观 Rollup 的优势在于能使得原生 Layer1 上的 solidity 合约可以无缝移植到 Layer2,从而最大程度提升了技术人员的研发体验,目前主流方案包括 Optimism 和 Arbitrum。
Optimistic Rollup 的运行遵循假定有效性的原则,除非另有证明,否则交易被假定为有效。 它们的生命周期涉及:
ZK-Rollup 是基于零知识证明的 Layer2 扩容方案,采用有效性验证方法(VP),默认所有交易都是不诚实的,只有通过有效性验证才会被接受。ZK-Rollup 在链下进行复杂的计算和证明的生成,链上进行证明的校验并存储部分数据保证数据可用性。目前主流的方案包括 zkSync、StarkNet、Scroll、Polygon Hermez 等。
ZK-Rollup 生命周期涉及:
从中长期来看,随着 ZK-SNARK 技术的改进,ZK rollups 将在所有用例中胜出。— Vitalik Buterin
ZK-rollups 将交易作为 calldata 写入以太坊。 calldata 是智能合约函数外部调用中存储数据的位置。calldata 中的信息会被发布到区块链上,允许任何人独立地重构 rollup 的状态。【calldata 中的数据不会做为以太坊 state 的一部分,而是类似于日志记录,所以存储成本更低】ZK-rollups 使用压缩技术来减少交易数据量——例如,通过使用索引代替地址来表示账户,从而节省了28字节的数据。链上数据发布对于 Rollup 来说是一笔巨大的成本,因此数据压缩可以为用户减少费用。
zk-rollup 是一种 off-chain 协议,然后由链上智能合约管理。 ZK-rollups 在主网之外执行交易,但定期将链下交易批次提交到链上 rollup 合约。 其核心架构如下:
ZK-rollups 是“混合扩展解决方案”——独立运行但从以太坊获得安全性的链下协议。 具体来说,以太坊网络强制验证 ZK-rollup 上的状态更新的有效性,并确保每次对 rollup 状态的更新背后的数据都是可获取的。 因此,ZK-rollups 比纯粹的链下扩展解决方案安全得多,例如 sidechains(负责其安全属性)或 validiums(也通过有效性证明验证以太坊上的交易,但将交易数据存储在其他地方)。
L2 交易确定:以太坊充当 ZK-rollups 的结算层,只有当 L1 合约接受有效性证明时,L2 交易才会最终确定。 以太坊保证用户操作一旦在 L1 上完成就无法逆转。
大多数 ZK-rollups 使用 "supernode" (the operator) 来执行交易、生成批次并将块提交到 L1。 虽然这保证了效率,但也增加了审查风险【中心化风险】:恶意 ZK-rollup 运营商可以通过拒绝包含用户交易的 batch 来审查用户【和去中心化相违背】。
作为一项安全措施,如果用户认为自己受到运营商的审查,ZK-rollups 允许用户直接向主网上的 rollup 合约提交交易。 这允许用户强制从 ZK-rollup 退出到以太坊,而无需依赖运营商的许可。
零知识证明(zero-knowledge proof),简写为 ZKP,最初由 S.Goldwasser、S.Micali 及 C.Rackoff 在 1985 年的论文 《交互证明系统的知识复杂性》 提出,指的是证明者能够在不向验证者提供任何有用信息的情况下,使验证者相信某个论断是正确的。
性质
零知识证明有何应用?
ZK-Rollup 早期为人诟病的地方是不能兼容 EVM,不能支持智能合约功能,例如早期 Gitcoin 捐赠主要支付途径的 zkSync 1.0 (Lite)仅能支持转账等基本功能。同时,由于不同 ZK 应用有各种专用电路,无法相互调用,可组合性差。因此市场急需能够支持以太坊智能合约的 ZK-Rollup,而其中关键门槛就是能够支持零知识证明的虚拟机。随着引入 EVM 兼容的 zkEVM,zk-rollups 才开始支持以太坊 dApps。
由于 zkEVM 并没有统一的设计标准,所以每个项目方基于不同角度在兼容 EVM 和支持 ZK 之间权衡设计出各自方案,目前基本分为两种思路:
对于第一种策略,由于不受原有 EVM 指令集的约束,可以更灵活的将代码编译成对零知识证明更友好的指令集,同时也摆脱了兼容所有 EVM 原有指令集所需要的艰巨而繁重的工作。
对于第二种策略,由于完全支持了 EVM 现有的指令集,其使用的是和 EVM 一样的编译器,因此天然就对现有的生态系统和开发工具完全兼容,同时还更好的继承了以太坊的安全模型。
在 Vitalik 的博文 中,他将 zkEVM 分为几种类型。其中,类型 1 是直接在以太坊上面直接开发 zkEVM,这个开发过于复杂而且目前效率太低,以太坊基金正在研究中。类型 2、类型 2.5 和类型 3 是 EVM 等效的 zkEVM,Scroll 和 Polygon Hermez 目前处于类型 3 这个阶段,朝着类型 2.5 乃至类型 2 努力。类型 4 是高级语言兼容的 zkEVM,包括 zkSync 和 Starknet。这些类型并无好坏之分,而且 zkEVM 也没有统一的标准。
从理论上讲,以太坊不需要为 L1 使用单一的 zkEVM 实现进行标准化;不同的客户可以使用不同的证明,因此我们继续从代码冗余中受益。— Vitalik Buterin
关于目前的一些 L2 项目采用的 DA 方案汇总,可以参考 L2Beat 的 DA 页面:https://l2beat.com/scaling/data-availability
数据可用性问题是区块链和分布式账本技术中的一个关键问题,其核心是使所有交易数据在网络上公开访问和验证的必要性。 这一挑战对于区块链的完整性和安全性至关重要。
在区块链系统中,每个区块的交易数据都需要网络节点的验证。 数据可用性问题的关键不仅在于发布数据,还在于确保其在网络上的可靠分发,保证所有参与者的平等访问。
由于以下几个原因,数据可用性问题在 L2 网络中尤为重要: 【L2自身问题】
【L1自身问题】
【L2与L1数据交互问题】
L2 解决方案中的数据可用性可以分为两种方法:
对于后者,由于依赖外部数据管理器,将数据可用性移至链外本质上会包含额外的信任依赖性。对于L2链下数据可用性有如下技术路线:
[1] WTF zkSync 极简入门: 1. Layer 2 基础 [2] ChatGPT [3] Docs - Avail DA [4] Docs - validium [5] Docks - zk-rollups
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!