草庐IT

全面易懂的分析现有L2环境

chinadefi 2024-06-07 原文

全面易懂的分析现有L2环境

介绍

区块链领域中最具争议的话题之一无疑是可扩展性。

更具体地说,扩展以太坊已经被证明是一个具有挑战性但必要的操作;随着其日益流行,要求将交易包含在区块中的请求增加,从而导致交易成本增加。以太坊主网以每秒处理约15笔交易,所以似乎有必要提高吞吐量。

为了减轻以太坊节点的负担,出现了许多限制主网所需处理或存储量的解决方案,每个解决方案都有自己的优点和缺点。

为了提高以太坊网络在其实际单链配置中的速度,现在正在使用多种可替代的扩展策略;它们都旨在从以太坊主区块链上卸载交易处理以提高可扩展性,但它们确实这以各种不同的方式。

值得注意的是,这些扩展技术并不仅限于以太坊,也可能用于其他网络。

今天这篇文章的目的是介绍区块链生态系统中主要的扩展可能性。

实际上,现有技术有各种共识算法和新的实现,比如分片方法,它们直接在基础层解决可扩展性问题。

正如在之前的报告中所预期和解释的,分片链仅占当前区块链的一小部分,这些区块链在最近几个月引起了人们的极大兴趣,包括在 Harmony One 上的DeFi Kingdoms和Aurora (Near Protocol的EVM兼容链)的引入。这些生态系统发展的主要驱动力是部署在其中的应用程序,其更快的速度和更便宜的gas费用会给用户带来更好的体验。

在分片链家族中,有可能找到以太坊2.0。

此外,还有构建在rollup之类的侧链和解决方案;这种技术继承了来自主层的所有安全性和共识协议,使它们比大多数其他扩展技术具有更大的优势。在这方面,这些解决方案可以被归类为“非托管”侧链。

从本质上讲,rollup收集大量的交易,在链下计算它们,然后将它们作为单个链上交易进行广播。

目前在以太坊主网上活跃的rollup分为两种类型:

  • Zk Rollup(其中Zk代表零知识),由有效性证明支持
  • Optimistic,通过欺诈证明实现

在深入这个领域之前,有必要提一下什么是“零知识”证明。

零知识证明

从它的纯定义开始,零知识证明(Zero Knowledge Proof, ZKP)是一组工具,可以在不揭示潜在假设的情况下验证信息。

“零知识”的表达源于没有提供任何(“零”)关于特定事实的信息的想法:这是由一组加密技术实现的,该技术使“证明者”能够在不披露任何数据的情况下,以数学方式向“验证者”表明一个计算断言是有效的。

ZKP已经被引入到区块链域以改进其功能。零知识证明可以分为交互式和非交互式两种类型。

  • 交互式ZKP要求证明者进行一系列的活动或行动,以说服验证者他们拥有某些知识。交互式ZKP中所需的大部分活动都包含了数学概率思想。
  • 非交互式zkp不需要证明者和验证者之间的交互,否则验证可能会在之后发生。在这种情况下,这类ZKP需要额外的计算机或软件。

所有的零知识证明(交互或非交互)必须满足三个先决条件:

  • 完整性:如果一个陈述为真,验证者可以验证证明者持有所有必要的输入。
  • 有效性:断言不能被反驳,验证者不能被说服证明者有必要的输入。
  • 零知识:验证者除了断言是真还是假之外没有其他信息。其他各方的信息和个人数据保持匿名。

ZK-Rollups

零知识Rollups将所有交易数据提交到主链,它们使用所谓的Zk-Snark验证交易。

该加密工具由Vitalik Buterin于2018年推出。

缩写SNARK代表s uccinct, n on-interactive argument of Knowledge:

  • 简洁意味着证明比基础数据更短。
  • 知识论证表明,如果没有适当的“证人”或证据来证明他们所证明的东西是真实的,一个证明者就不能构建被验证的证明。

一旦这些验证证明完成并发布到主链,其中包含的所有交易都被声明为final。L2节点构造这些证明所需的处理能力非常高,因为它们使用加密活动。

ZK-rollup通过中继者(也称为操作者或验证者)合并交易,然后由中继者生成零知识证明来证明交易的真实性。在此之后,在主层上提交并发布证明。

Optimistic Rollups

Optimistic Rollups的基本假设是,所有已处理的交易都是有效的。事实上,这个名字来源于节点对链的乐观状态。

每当发现交易无效时,节点可以通过提供欺诈证明来质疑发现错误交易的整批交易:支持乐观的底层系统将在主链上重新运行一批交易rollups(乐观虚拟机,OVM)。

总的来说,OVM 允许L2上的交易完成,即使它们已被L1拒绝为无效;如果交易被认为无效,L2链会重置到欺诈交易被发现之前的状态。由于欺诈性交易,所有后续交易都变得无用。

由于这种乐观的方法是建立在提交的交易总是真实的前提下,直到被证明是不同的,所以它被认为有点“基于信任”。

如果在生态系统中为玩家提供了适当的激励,那么这个假设就会变得现实。然而,为了防止出现最坏的情况,也有必要采取额外的预防措施。例如,当将资金从L2转移到L1时,Optimism 有7天的持有时间,以便为验证者提供足够的时间来发现和标记任何欺诈性交易。

Optimism和Arbitrum是在以太坊上实现的两个最新的Optimistic Rollups,它们是同类中最重要的。这些解决方案在以太坊社区中得到了大量关注和报道。

Validium

以类似于ZK-rollup的方式运行,不同之处在于数据保存在链下。因为交易数据不是发布在区块链上的,所以有必要采用额外的信任假设,因为用户必须信任运营者,以便在需要时可以访问数据。

Validium的链下数据存储有很多好处,包括更快的交易速度和保障了客户隐私,因为交易是不允许公众访问的。

然而,由于数据是在链下保存的,因此用户将无法轻松显示他们在智能合约中的可用金额。

因此,为了筹集资金,他们必须从中继者那里获得数据,并且必须对中继者的可用性做出假设。

为了解决这个问题,,StarkWare等解决方案提供了一个数据可用性委员会(DAC),使它存储所有链下数据并在紧急情况下可以公开访问,从而使用户能够减少对这些中继者的依赖。因为它们仍然是使用零知识证明,不存在传播错误状态的危险;相反,用户此时必须相信的只是信息的及时性。

Validium 解决方案是最近才出现的,因为它们建立在ZK-rollup所奠定的基础上,如果扩展解决方案的有效性证明套件越来越流行,它们可能会获得动力。

Validium的项目包括DeversiFi、ZKSwap(支付和交易平台)、Sorare(足球NFT游戏)和Immutable X (NFT市场)。

Plasma

在Plasma家族中,你可以找到几个基本复制以太坊的区块链,它们通过信任最小化的桥架构连接到以太坊。每个Plasma链都可以采用自己的交易验证流程,但以太坊区块链仍然是真理的最终权威。

Plasma用户不需要对运营者抱有信心,而且总是有机会收回他们的现金,即使是在运营者不诚实或进行阻碍的情况下。虽然Plasma的发布在以太坊社区引起了极大的兴趣,但它也带来了一些挑战:新数据可用性的混合网络攻击,要求用户监控交易来检测恶意行为,以及对如果大量用户试图同时退出 Plasma 链,主链上的数据容量会减缓基于 Plasma 的系统的采用。

此外,许多 Plasma 设计一直受到一系列用户体验和安全问题的困扰,它们并不能促进智能合约的开发。例如,OMG和Polygon现在已经放弃了Plasma,这让一些人认为它已经死了。

比较

到目前为止,由于其允许开发者将他们的以太坊应用“复制和粘贴”到L2平台上的特性,Optimistic Rollups得到了最大的关注和接受。

领先的以太坊主网应用,如Uniswap和Synthetix,已经开始使用基于概率Rollups解决方案的Optimistic Rollups解决方案部署他们的应用。类似地,ZK-rollup和Validium解决方案虽然目前对通用智能合约提供的支持非常有限,但仍在积极实施中。

ZK-rollup相对于Optimistic rollup的一个主要优势是没有退出时间。中继者将无法欺骗系统,因为使用零知识证明来建立交易的真实性。

一般而言,这些举措的发展高度依赖于他们可以提供什么。零知识证明 EVM 兼容性的未来有望很好地促进基于有效性证明的 L2 解决方案组合的增长。

随着Matter Labs和StarkWare率先通过选择数据可用性来使用这些证明的可访问性,它们可能会超过Optimistic rollup。零知识证明所提供的安全性,以及中继者发布恶意活动的难度,使得L2系统使用它们的能力的未来看起来更加光明。

截至今天,整个L2领域的锁定总价值约为60亿美元。

从下面的图表中可以看出,我们已经从门户网站L2Beat获得了更新的数据,其中突出显示了Optimistic Rollups如何保持市场领先地位,占总市场价值的70%,其中Arbitrum以31亿美元排名第一。采用ZK-Rollup的L2应用程序dYdX以9.95亿美元的价值位居第二。到目前为止,Validium 提供了一个较低的 TVL,随着 IMX 和 Sorare 的出现,这看起来很有希望。

结论

预计rollup的使用将是未来最常见的扩展方法。考虑到功能完备的以太坊2.0的发布还有很长一段时间,它们可能还会存在很长一段时间。

可组合性是以太坊的一个关键元素,它使网络中的任何人都可以轻松地在现有资产之上或围绕现有资产构建新的用例。

事实上,如果你是以太坊网络的用户,这给了你很多自由;你可以在同一个安全框架下进行相对复杂的交易,在同一条链上,通过一些用户友好的活动进行相对复杂的交易。

虽然L2解决方案通过降低费用明显改善了用户体验,但它们也提供了独立执行环境的选项。

最近,在实现方面出现了很多犹豫不决的情况,因为应用程序开发人员在选择部署在哪个平台上之前,一直在等待看到哪个L2解决方案受到欢迎。

一个或几个L2之间的集成将是未来的关键发展。它不仅对整个以太坊生态系统的网络效应有影响,而且对更广泛的智能合约平台环境也有影响。

Source:https://medium.com/coinmonks/how-to-scale-ethereum-a-comprehensive-analysis-of-all-the-actual-layer-2-environment-3e909d4e679f

关于

ChinaDeFi - ChinaDeFi.com 是一个研究驱动的DeFi创新组织,同时我们也是区块链开发团队。每天从全球超过500个优质信息源的近900篇内容中,寻找思考更具深度、梳理更为系统的内容,以最快的速度同步到中国市场提供决策辅助材料。

Layer 2道友 - 欢迎对Layer 2感兴趣的区块链技术爱好者、研究分析人与Gavin(微信: chinadefi)联系,共同探讨Layer 2带来的落地机遇。敬请关注我们的微信公众号 “去中心化金融社区”

有关全面易懂的分析现有L2环境的更多相关文章

  1. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  2. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  3. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  4. ruby-on-rails - ruby gem如何在rails环境下工作 - 2

    我试图在rails中了解rubygems是如何变得可以自动使用的,而不是在使用required的文件中gem? 最佳答案 这是通过bundler/setup完成的:http://bundler.io/v1.3/bundler_setup.html.它在您的config/boot.rb文件中是必需的。简而言之,它首先将环境变量设置为指向您的Gemfile:ENV['BUNDLE_GEMFILE']||=File.expand_path('../../Gemfile',__FILE__)然后它通过要求bundler/setup将所有ge

  5. ruby-on-rails - 在现有数据库上进行 Rails 迁移 - 2

    我正在创建一个新的Rails3.1应用程序。我希望这个新应用程序重用现有数据库(由以前的Rails2应用程序创建)。我创建了新的应用程序定义模型,它重用了数据库中的一些现有数据。在开发和测试阶段,一切正常,因为它在干净的表数据库上运行,但是当尝试部署到生产环境时,我收到如下消息:PGError:ERROR:column"email"ofrelation"users"alreadyexists***[err::localhost]:ALTERTABLE"users"ADDCOLUMN"email"charactervarying(255)DEFAULT''NOTNULL但是我在迁移中有这

  6. ruby-on-rails - 我需要一个真正的 UNIX RoR 开发环境 - 2

    从一开始,我就是一个Windows高手。我从MS-DOS开始。我安装了Windows2.1以及此后的所有Windows。现在,我家里有10台不同的Windows机器在运行,从Windows7Ultimate到各种版本的WindowsServer。我还没有完成Windows8,也不想去那里。我在服务器和各种软件方面都有UNIX经验,但它并不是我的首选环境。但是,我想我正在转换。我试图假装使用Cygwin和MSYS在Windows下运行UNIX。我的目的是搭建一个开发环境。两者都让我失望了。我花了比开发更多的时间来解决一系列技术问题。这是NotAcceptable。到目前为止,我的Ruby

  7. ruby - 有人可以解释一下在 Ruby 中注入(inject)的真实、通俗易懂的用法吗? - 2

    我正在学习Ruby,遇到了inject。我正处于理解它的风口浪尖,但当我是那种需要真实世界的例子来学习一些东西的人时。我遇到的最常见的例子是人们使用inject来添加一个(1..10)范围的总和,我不太关心这个。这是一个任意的例子。在实际程序中我会用它做什么?我正在学习,所以我可以继续使用Rails,但我不必有一个以Web为中心的示例。我只需要一些我可以全神贯注的目标。谢谢大家。 最佳答案 inject有时可以通过它的“其他”名称reduce更好地理解。它是一个对Enumerable进行操作(迭代一次)并返回单个值的函数。它有许多有

  8. ruby-on-rails - ActiveRecord 如何将现有记录添加到 has_many :through relationship in rails? 中的关联 - 2

    在我的Rails项目中,我有三个模型:classRecipe:recipe_categorizationsaccepts_nested_attributes_for:recipe_categories,allow_destroy::trueendclassCategory:recipe_categorizationsendclassRecipeCategorization通过这个简单的has_many:through设置,我怎样才能像这样获取给定的食谱:@recipe=Recipe.first并根据现有类别向此食谱添加类别,并在相应类别上对其进行更新。所以:@category=#Exi

  9. ruby-on-rails - 如果特定语言环境中缺少翻译,如何配置 i18n 以使用 en 语言环境? - 2

    如果特定语言环境中缺少翻译,如何配置i18n以使用en语言环境翻译?当前已插入翻译缺失消息。我正在使用RoR3.1。 最佳答案 找到相似的question这里是答案:#application.rb#railswillfallbacktoconfig.i18n.default_localetranslationconfig.i18n.fallbacks=true#railswillfallbacktoen,nomatterwhatissetasconfig.i18n.default_localeconfig.i18n.fallback

  10. ruby-on-rails - Ruby on Rails - has_one 关系,如何检查它是否具有现有关联? - 2

    我有一个简单的问题,与关联有关。我有一个书的模型,它有_onereservation。预订属于_书本。我想在预订Controller的创建方法中确保在预订时没有预订一本书。换句话说,我需要检查该书是否存在任何其他预订。我该怎么做?编辑:Aaa我做到了,感谢大家的提示,学到了一些新东西。当我尝试提供的解决方案时,出现no_method错误或nil_class等。这让我开始思考,我尝试处理的对象根本不存在。Krule给了我使用book.find的想法,所以我尝试使用它。最终我得到了它的工作:book=Book.find_by_id(reservation_params[:book_id])

随机推荐