以太坊生态的最大挑战之一是怎么在资源有限(例如,CPU、带宽、内存、磁盘空间)的前提下完结低推迟和高吞吐量。

体系的去中心化程度取决于网络中最弱的节点验证体系规矩的能力。能够在低资源硬件上运转的高功能协议被称为 “可伸缩的(scalable)”。

在本文中,咱们将深化探求现代 “Layer 2 计划” 的原则,这些计划的安全模型,及其在处理以太坊可扩展性问题上采纳的策略。

本文的预设读者是那些对密码学技能感兴趣的人。假如你想要深化了解以太坊前沿可扩展性技能,以及怎么规划并构建这类体系,千万不要错过这篇文章。

在本文中,重要的关键词和概念都已加粗,由于这些都是你在了解密码学钱银技能时常常遇到的术语。本文触及的概念比较复杂。假如你在阅览中遇到困惑,请不要抛弃,守得云开见月明。

区块链资源要求

在比特币和以太坊等去中心化网络中,运转节点的资源要求主要有三种[1]:

  • 带宽:下载并播送区块链相关数据的本钱。

  • 核算:在脚本或智能合约中运转核算的本钱。

  • 存储:出于索引目的存储业务数据的本钱,以及为了继续处理新的业务块而存储 “状况” 的本钱 [2]。

影响功能的因素有:

  • 吞吐量:体系每秒可处理业务(transaction)的数量

  • 推迟:处理一笔业务所需的时间

比特币和以太坊等新式密码学钱银网络的抱负特性是去中心化。那么问题来了,网络是怎么完结去中心化的呢?

  • 低信赖:有了这个特性,任何人都能自主验证比特币的总供应量永久不会超过 2100 万个,及其持有的比特币不是伪造的。运转节点软件的人能够独立核算最新状况,并验证出块流程是否遵从一切规矩。

  • 低本钱:假如节点软件的运转本钱很高,人们就会挑选依靠可信第三方来验证状况。本钱高意味着信赖要求也高,这是咱们竭力想要防止的。

另一个抱负特性是可扩展性:吞吐量(和推迟)能够随运转节点的本钱添加呈超线性添加(削减)。这个界说很棒,可是并未指明与 “信赖” 惯性。因而,咱们另外界说了“去中心化可扩展性”:在简直不会进步体系信赖假定的状况下完结可扩展性

以太坊的运转时环境是 EVM(以太坊虚拟机)。在 EVM 中,业务在履行不同操作时需求承担的本钱不同(例如,存储操作的本钱大于添加操作)。业务的核算单位叫做 “gas”。在以太坊体系中,每个区块的 gas 上限被设为 1250 万 gas。均匀每 12.5 秒能够挖出一个区块。由此可得,以太坊的推迟是 12.5 秒,吞吐量是每秒 100 万 gas

你或许会问一个问题:每秒 100 万 gas 能做什么?

  • 每秒可完结大约 47 笔 “简单转账” 业务。所谓 “简单转账” 业务,便是指 “A 向 B 转了一笔 ETH” 这样最基础的业务。每笔业务需求 2.1 万 gas。

  • 每秒可完结大约 16 笔 ERC20 代币转账。这类业务相比 ETH 转账业务需求履行更多存储操作,因而每笔业务需求约 6 万 gas。

  • 每秒可完结大约 10 笔 Uniswap 资产交流操作。代币对业务的均匀本钱约为 10.2 万 gas。

  • ……挑选你感兴趣的业务,用 100 万 gas 除以其 gas消耗量(1250 万/12.5/gas)。

请注意,随着业务的履行复杂度进步,体系的吞吐量急剧下降。还有很大的提升空间!

计划 1:运用中间方

咱们能够运用咱们都信赖的第三方来达到一切业务。这样一来,咱们就能够得到很高的吞吐量,并将推迟降至亚秒级。简直太棒了!这样也不会改动任何体系参数,可是咱们需求参与一个由第三方单方面设置的信赖模型。第三方或许会对咱们进行检查,乃至夺走咱们的资产,这就不妙了。

计划 2:扩展区块容量并进步出块频率

咱们能够经过削减出块时间来下降时延,咱们还能够经过进步区块 gas 上限来进步吞吐量。这一改动或许会导致节点运营本钱进步,然后阻碍人们运转节点(就像 EOS、Solana 和 Ripple 那样)。

计划 1 会进步对信赖的需求,计划 2 会添加本钱。因而,二者都不是抱负的可扩展性计划。

从头认识 Optimistic Rollup

接下来会触及一些关于哈希函数和默克尔树的常识。

了解了这么多之后,咱们来模仿一段苏格拉底式对话,看看能否找到一个既能进步以太坊的实践吞吐量,又不会添加用户和节点运营者负担的协议。

:咱们想要进步以太坊的可扩展性,又不想改动其信赖和本钱假定。咱们该怎么做?

:能够测验下降现有操作的本钱(拜见上述三类操作)。不过,说起来简单做起来难,咱们先来看一下以太坊的架构:

以太坊网络中的每个节点现在都存储并履行来自用户的每笔业务。业务是在 EVM 中履行的,并与 EVM 的状况(例如,合约存储项、余额等)进行交互(这一本钱很高)。常见的智能合约优化技能主要聚焦于在最大程度上削减与状况交互的次数,可是它们起到的效果很有限。

:是否存在不与状况交互就能达到交互的方法,以此下降资源本钱?

:在极端状况下,咱们是否能够将一切履行都转移到链下,并将数据保存在链上?咱们能够引进第三方,即,排序者(sequencer),来做到这点。排序者担任在本地存储并履行用户提交的业务。为了保持体系的活性(liveness),排序者会定时将它们收到的业务的默克尔根以及状况根提交到以太坊上。这个思路是正确的,由于O(N) 笔链下业务只需在以太坊上存储 O(1) 的状况数据。

:经过运用排序者履行链下核算,只将默克尔根发布到链上,咱们就能增强以太坊的可扩展性了是吗?

:是的。

:也便是说,只需咱们挑选了排序者,就能大幅下降转账本钱。那用户怎么存钱进去呢?

:你在以太坊区块链上把钱存进某个合约,就能参加这样的体系了。排序者会将相应的存款记在你的名下。用户只需求发送一笔业务称 “我想要取出 3 ETH,我当时的账户余额大于 3 ETH,这是证明”,就能够取出资金。即便 L1 上没有该用户的实践状况,该用户也能够供给默克尔证明并引用排序者发布的状况根来证明自己在当时状况下具有足够多的资金。

:咱们现已确认用户需求供给默克尔证明才能取出资金。用户怎么获得构建默克尔证明所需的数据?

:用户能够要求排序者来供给数据!

:假如总是联络不上排序者,该怎么办?

:这种状况或许是由于排序者作恶,或因技能问题掉线,这会导致功能退化(乃至偷盗)。因而,咱们有必要要求排序者将完整的业务数据提交到链上,只用于存储,不用于履行。这儿的目的是完结数据可得性。由于一切数据都永久存储在以太坊上,即便一个排序者倒下了,新的排序者也能够从以太坊上从头找回一切与 Layer2 相关的数据,从头构建最新的 L2 状况,并顶替上一个排序者的作业。

:假如排序者在线却拒绝向我供给默克尔证明数据,我能够从以太坊上下载这些数据对吗?

:对的,你能够自己同步一个以太坊节点,也能够从众多节点保管服务供给商中挑选一家。

:我还有个不明白的当地……怎么将数据存储在以太坊上却不履行它?莫非不是每笔业务都要经过 EVM 履行的吗?

:假定你提交了 10 笔 A 向 B 转 ETH 的业务。履行每笔业务需求履行以下操作:添加 A 的 nonce,削减 A 的余额,并添加 B 的余额。这需求屡次写入和读取世界状况。你能够将一切业务的编码发送至智能合约的publish(bytes _transactions) public https://bicoin8.com/wp-content/uploads/2023/04/202304211cHpE0.jpg }函数。请注意,这个函数的函数体是空的!也便是说,如此发布的业务数据是不会被解释、履行或访问的。它只存储在区块链的历史日志中(写入日志的本钱很低)。

:咱们能信赖排序者吗?假如排序者发布不合法的状况转化怎么办?

:不管排序者何时发布一批状况转化,都会有 “争议期”。在 “争议期” 内,任何人都能够发布 “诈骗证明” 来证明其中某个状况转化是无效的。诈骗证明便是经过重放导致链上发生状况转化的业务,并将得到的状况根与排序者发布的状况根进行比照。假如两个状况根不同,则诈骗证明成功,状况转化被撤销。跟在该无效状况转化后面的状况转化也会被撤销。争议期一过,就无法再对业务提出争议,即,业务被敲定

:等等!你之前明明说过,只需(a)会添加本钱,或(b)引进新的信赖假定,便是不可行的可扩展性计划。你这儿提到的计划不是要假定时间有人会报告诈骗吗?

:没错。咱们假定有一组被称为 “验证者” 的实体担任监控诈骗行为。假如 Layer 1 和 Layer 2 之间出现状况不匹配的状况,验证者就会发布诈骗证明。咱们还假定验证者能够在争议期内将其诈骗证明发布到以太坊区块链上。咱们认为,验证者的存在是一个弱假定。想象一下,假如有数万名用户采用该计划,你只需求 1 个人来担任验证者的人物。听起来不是那么不切实践吧!另外,改动以太坊的信赖模型,或添加运转以太坊节点的本钱是一个强假定,会做出咱们不想要的改动。这便是咱们的中心化可扩展性界说中的 “简直不会改动底层体系的想象” 的意思。

:我赞同会有人担任验证者的人物,由于这个新的处理计划牵涉到很多人的利益。可是,具体怎样还得取决于实践本钱。那么,运转验证者和排序者需求消耗多少资源?

:排序者和验证者有必要运转一个以太坊全节点(而非归档节点),以及一个 L2 全节点来生成 L2 状况。验证者运转创建诈骗证明的软件,排序者运转打包并发布用户业务的软件。

:就这些吗?

:没错!恭喜!你现已从头发现了 Optimistic Rollup [3],这个 2019 至 2021 年最有远景的可扩展性计划。我可没有在说大话,这是以太坊社区经过多年研讨得出的成果。也便是你在这段简短的对话中听到的。

注:

[1]:咱们建议读者阅览 Vitalik 的雄文《区块链资源定价》。

[2]:请注意,存储 “状况(账户余额、合约字节码和 nonce)” 的本钱比存储原始业务数据的更高。

[3]:Optimistic Rollup 便是 “optimistic contract(乐观合约)” 和 “on chain data availability(链上数据可得性,又称 “数据汇总”)” 的合体。

视野开拓

有许多人已经清楚地看到了法西斯主义经济政策所带来的种种祸害,但他们都认为,与布尔什维克主义的苏维埃主义造成的祸害相比,法西斯的祸害至少要小一些。 …… 不可否认的是,法西斯主义及其类似的独裁努力完全是处于一种最良好的愿望,它此时介入了欧洲的生活,是为了拯救欧洲的文明。法西斯主义在这方面所作出的贡献奖永远载入史册。-《自由与繁荣的国度》

发表回复

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