【订阅,获取关键资讯】

Vitalik 长文回顾:那些以太坊“没有走过的路”

 以太坊开发社区在以太坊的前期阶段做出了许多决议,这些决议对项目的开展轨道产生了巨大的影响。在某些状况下,以太坊开发者有意识地做出决议,在咱们认为比特币存在问题的当地进行改进。在其他当地,咱们正在发明一些全新的东西,咱们仅仅有必要想出一些东西来填补空白,但有许多东西能够挑选。还有一些当地,咱们需求在更杂乱和更简略的东西之间进行权衡。有时分,咱们会挑选比较简略的东西,但有时分,咱们也会挑选比较杂乱的东西。

这篇文章将着眼于我记忆中以太坊的这些道路岔路口。许多这些功用在中心开发圈内被仔细讨论过;有些简直没有被考虑过,但或许真的应该考虑一下。但即便如此,咱们仍是有必要看看一个不同的以太坊会是什么样子,以及咱们能够从中学到什么。

咱们是否应该选用更简略的 PoS 机制?

以太坊行将合并的 Gasper PoS 机制是一个杂乱的体系,但也是一个十分强壮的体系。它的一些特点包括:

  • 十分强壮的单区块承认:一旦买卖被归入区块,一般在几秒钟内,该区块就会被终究确认,除非有很大一部分节点是不诚实的,或许有极端的网络推迟,否则它是无法被逆转的。
  • 经济终究性:一旦一个区块被终究承认,它就不能被逆转,除非攻击者能顶住丢失数百万 ETH 被罚没。
  • 十分可猜测的奖赏:验证者在每个 epoch(6.4 分钟)都能可靠地取得奖赏。
  • 支撑十分高的验证器数量:与其他大多数具有上述特性的链不同,以太坊信标链支撑数十万个验证器(例如:Tendermint 供给了比以太坊更快的终究性,但它只支撑几百个验证器)

但是发明一个具有这些特性的体系是困难的。这需求数年的研讨,数年的失利试验,一般需求许多的尽力,终究的输出适当杂乱。

PoS

假如咱们的研讨人员不需求忧虑那么多的一致,有更多的空闲考虑时刻,那么或许,仅仅或许,rollups 能够在 2016 年被发明出来。这就引发了咱们的一个考虑:咱们真的应该对咱们的 PoS 要求如此高的标准吗?由于即使是一个更简略和更弱的 PoS 也会比 PoW 的现状有很大的改进。

许多人有一个误解,认为 PoS 自身就很杂乱,但实践上有许多 PoS 算法简直和 中本聪 PoW 一致相同简略。NXT 的 PoS 自 2013 年以来就存在,原本也是一个现成的候选;虽然它存在一些问题,但这些问题很简略被修补,咱们能够从 2017 年,甚至从一开端就有一个合理可行的 PoS。Gasper 之所以比这些算法更杂乱,仅仅由于它企图完结的任务比它们多得多。但是,假如咱们在一开端就不要好高骛远,咱们能够先专注于完成一套更有限的目标。

在我看来,从一开端施行 PoS 是一个过错;PoW 对于扩展初始发行量分发和使以太坊更具可拜访性方面是有协助的,并且能够鼓舞爱好者社区。但在 2017 年,甚至 2020 年,改用更简略的 PoS,或许会导致更少的环境损坏(以及因环境损坏而产生的反加密钱银心态),并有更多的研讨人才干够自在考虑扩展问题。咱们终究会不会不得不花费许多的资源来制造一个更好的 PoS 呢?我看仍是会的,但现在看来,无论如何,咱们终究都会这样做。

分片的去杂乱化

以太坊分片自 2014 年开端研讨以来,一直在朝着越来越不杂乱的方向开展。首要,咱们有内置履行和跨分片买卖的杂乱分片;然后,咱们经过将更多的责任搬运给用户来简化协议,在跨分片买卖中,用户有必要分别为两个分片支付 Gas 费用;接着,咱们切换到以 Rollup 为中心的道路图,其间,从协议的视点来看,分片仅仅数据分片。最后,经过 danksharding,分片费用商场被合并成一个全体,终究的规划看起来就像一个非分片链,但在这儿,数据可用性采样能够完成分片验证。

PoS

但假如咱们走的是相反的道路呢?实践上有一些以太坊的研讨人员,他们深化探究了一个更杂乱的分片体系:分片将作为链,会有分叉挑选规矩,其间子链依赖于父链,跨分片消息将由协议路由,验证器将在分片之间轮换,甚至 DApp 将在分片之间主动取得负载平衡。

这种办法的问题是:这些形式的分片在很大程度上仅仅主意和数学模型,而 Danksharding 是一个完好的、简直能够施行的标准。因而,鉴于以太坊的状况和约束,在我看来,分片的简化和去歧义化肯定是正确之举。也就是说,更雄心勃勃的研讨也有十分重要的作用:它确认了有出路的研讨方向,即使是十分杂乱的主意往往也有 "合理的简略 "版本,这些主意仍然供给了许多优点,并且很有或许在未来几年内大大影响以太坊的开展(甚至是二层协议)。

EVM 中功用的挑选

实际上,除了安全审计之外,EVM 的标准基本上在 2014 年中期就能够推出。但是,在当时接下来的几个月里,咱们继续积极探究咱们认为或许对去中心化区块链真实重要的新功用。有些功用加进 EVM 了,有些没有。

  • 咱们曾考虑添加一个 POST 操作码,但决议不这样做。POST 操作码会进行异步调用,会在买卖完结后被履行。
  • 咱们曾考虑过添加一个 ALARM 操作码,但决议不这样做。ALARM 的功用类似于 POST,仅仅在未来的某个块中履行异步调用,答应合同组织操作。
  • 咱们添加了日志(logs),它答应合约输出不触及状况的记录,但能够被 DApp 接口和钱包解释。值得注意的是,咱们也考虑过让 ETH 转账宣布日志,但决议不这样做,理由是 "反正人们很快就会转到智能合约钱包"。
  • 咱们考虑过扩展 SSTORE 以支撑字节数组,但由于忧虑杂乱性和安全性而决议不这样做。
  • 咱们添加了预编译(precompiles),这是一种运用本地完成履行专用加密操作的合约,比在 EVM 中履行要便宜得多。
  • 在上线后的几个月里,咱们反复考虑了状况租金(state rent),但从未包括在内。这实在是太杂乱了。今日,人们正在积极探究更好的状况过期(state expiry)方案,虽然无状况验证和提议者/构建者别离(PBS)意味着它现在是一个低得多的优先级。

现在来看,大多数不添加功用的决议都被证明是十分好的决议。没有明显的理由来添加一个 POST 操作码。ALARM 操作码实践上是很难安全完成的:假如 1...9999 区块中的每个人都设置了一个 ALARM,在 100000 区块履行许多的代码,会发生什么?那个区块会不会花几个小时来处理?一些预订的操作会被推到后面的区块吗?但是假如这种状况发生了,那么 ALARM 还能保留什么保证呢?字节数组的 SSTORE 很难安全地做到,并且会大大扩展最坏状况下的见证巨细。

状况租金问题更具应战性:假如咱们从第一天起就真实完成了某种状况租金,以太坊就不需总是环绕耐久化状况的正常化假定而开展。以太坊会更难构建,但它或许会更有扩展性和可持续性。同时,咱们当时的状况过期计划确实比咱们现在的要差得多。有时分,好的主意就是要花上几年的时刻才干达到,没有更好的办法。

LOG 的备选方案

LOG 能够经过两种不同的办法来完结。

  1. 咱们能够让 ETH 转账主动宣布一个 LOG。这将为买卖所和许多其他用户节省许多的精力和软件过错问题,并将加快每个人对 LOG 的依赖,这将有助于智能合约钱包的选用。
  2. 咱们彻底能够不需求 LOG 操作码,而把它变成一个 ERC:会有一个标准合约,它有一个函数 submitLog,并运用以太坊存款合约的技能来计算该区块中所有日志的 Merkle 根。无论是 EIP-2929 仍是区块规模的存储(适当于 TSTORE,但在区块之后被铲除)都会使这个便宜。

咱们强烈考虑过第一种办法,但回绝了它。首要原因是,日志只来自于 LOG 操作码,这更简略。咱们还十分过错地预计大多数用户会迅速迁移到智能合约钱包,这能够明确运用操作码来记录转账。

咱们没有考虑第二种办法,但回过头来看,这其实也是一个挑选。第二种办法的首要缺点是缺乏一个快速扫描日志的布隆过滤器机制(Bloom filter)。但事实证明,布隆过滤器机制太慢了,对 DApp 来说并不友好,所以现在越来越多的人运用 TheGraph 来进行查询。

总的来说,这些办法中的任何一种都有或许优于现状。不归入 LOG 会使工作更简略,但假如归入 LOG,主动记录所有 ETH 的搬运会使它更有用。

今日,我或许会赞成终究撤销 EVM 的 LOG 操作码。

假如当时 EVM 挑选了彻底不同的路,会怎样?

当初 EVM 有两条十分不同的路能够选:

  1. 使 EVM 成为一种更高档的言语,具有变量、if 句子、循环等内置结构。
  2. 使 EVM 成为某些现有虚拟机(LLVM、WASM 等)的副本。

第一条路从未被真实考虑过。这条路的吸引力在于,它能够使编译器更简略,并答应更多的开发者直接在 EVM 中编码。它还能够使 ZK-EVM 的结构愈加简略。这条路的缺点是它会使 EVM 代码在结构上愈加杂乱:它不再是一排简略的操作码列表,而是一个更杂乱的数据结构,有必要以某种办法进行存储。也就是说,咱们错过了一个两全其美的时机:一些 EVM 的改动能够给咱们带来许多优点,同时坚持基本的 EVM 结构不变:制止动态跳转,添加一些旨在支撑子程序的操作码(另见:EIP-2315),只答应在 32 字节的字鸿沟拜访内存等等。

第二条路被主张过许屡次,也被回绝过许屡次。支撑它的观念一般是,它将答应程序从现有言语(C、Rust 等)编译到 EVM 中。对立的观念一直是,鉴于以太坊独特的约束,它实践上不会供给任何优点:

现有的高档言语的编译器往往不关心总的代码巨细,而区块链代码有必要许多优化以削减每一个字节的代码巨细。

咱们需求虚拟机的多种完成,并严格要求两个完成不能以不同办法处理相同的代码。在咱们没有编写的代码上进行安全审计和验证会更难。

假如虚拟机标准发生变化,以太坊将不得不一直与它一起更新,或许越来越不同步。

因而,EVM 或许永久不会呈现与咱们今日所具有的彻底不同的可行途径,虽然有许多更小的细节(跳转,64 位 vs 256 位等),假如它们能够以不同的办法进行,将会带来更好的结果。

ETH 供给是否应该以不同办法分配?

现在的 ETH 供给量大致能够用 Etherscan 的这个图来表明:


PoS

现在大约有一半的 ETH 是在以太坊公募中出售的,任何人都能够将 BTC 发送到一个比特币地址,最初的 ETH 供给分配是经过一个开源脚本计算出来的。其他的大部分基本也现已过挖矿产出。黑色部分的 1200 万 ETH 标记为“other”,其实是预挖部分,在以太坊基金会和大约 100 位以太坊协议的前期贡献者之间分配的额度。

对于这个进程有两个首要的批判:


  • 预挖以及以太坊基金掌管公募资金这两件事,都不具备可信的中立性。一些收款人地址是经过一个关闭的进程人工挑选的,以太坊基金会有必要被信赖,不能经过借款来进一步利用公募所得的资金,以取得更多的 ETH (咱们没有,也没有人声称咱们有,但即使是被信赖的要求也冒犯了一些人)。
  • 预挖过火奖赏了十分前期的贡献者,而留给后来的贡献者的太少。75%的预挖用于奖赏上线前贡献者的工作,而在上线后,以太坊基金会只剩下 300 万个 ETH。在 6 个月的时刻里,为了生计而出售的需求使存量削减到 100 万 ETH 左右。

在某种程度上,这些问题是相关的:希望尽量削减对中心化的看法促成了较小的预挖,但较小的预挖会更快地耗尽。

这并不是仅有的解决办法。Zcash 则选用了一个不同的办法:区块奖赏的 20%固定分配给协议中硬编码的一组承受者,这组承受者每四年从头洽谈一次(到现在为止,这种状况现已发生过一次)。这将愈加可持续,但它会由于过于中心化而遭到更严厉的批判(Zcash 社区似乎比以太坊社区更公开地承受更多的技能专家领导)。

一个或许的替代途径是类似于今日在一些 DeFi 项目中盛行的 "DAO from day 1" 道路。这儿是一个或许的稻草人提议:

  • 咱们同意在 2 年内,从每个区块奖赏中区分 2 ETH 投入到开发基金中。
  • 任安在以太坊公募中购买 ETH 的人都可认为他们喜爱的开发基金分配投票(例如:"每个区块奖赏中 1ETH 给以太坊基金会,0.4ETH 给 Consensys 研讨团队,0.2 个 ETH 给 Vlad Zamfir...")
  • 被投票支撑的承受者得到的开展基金份额等于每个人投票的中位数,按份额计算,总数等于每区块 2ETH(中位数是为了防止自我买卖:假如你为自己投票,你什么也得不到,除非你让其他购买者中至少有一半人提到你)。

公募能够由一个法律实体来运作,承诺依照 ETH 开发基金的相同份额来分配公募进程中收到的比特币(或许烧掉,假如咱们真的想让比特币玩家高兴的话)。这或许会导致以太坊基金会得到许多的资金,非以太坊基金会的集体也得到许多的资金(导致更多的生态体系去中心化),所有这些都没有损坏可信的中立性一丝一毫。当然,首要的缺点是,通证投票真的很糟糕,但务实地说,咱们能够意识到,2014 年仍然是一个前期和理想化的时刻,通证投票最严重的缺点在公募结束后好久才会开端发挥作用。

这样做会不会是一个更好的主意,并树立一个更好的先例?或许!虽然从实际的视点来看,即使开发基金是彻底可信的中立的,今日那些对以太坊的矿工大喊大叫的人,很或许反而会对 DAO 分叉开端加倍地大喊大叫。

咱们能从这一切中学到什么?

总的来说,有时我觉得以太坊最大的应战来自于在两个愿景之间的平衡:一个重视安全和简略纯粹的区块链,以及一个用于构建高档应用程序的高度性能和功用的平台。上面的许多比如仅仅其间的一个方面:咱们是具有更少的功用而更像比特币,仍是具有更多的功用而更适合开发者?咱们是忧虑让开发资金变得更中立,更像比特币,仍是咱们首要忧虑的是确保开发者取得满足的奖赏,让以太坊变得更好?

我个人的愿望是企图同时完成这两个愿景。一个根底层,其标准每年都比前一年小,以及一个以二层协议为中心,强壮的开发者友好的高档应用生态体系。也就是说,要达到这样一个理想的世界需求很长的时刻,假如能更明确地认识到这需求时刻,咱们需求一步步地考虑道路规划,或许会对咱们有很大的协助。

今日,有许多工作咱们无法改动,但也有许多工作咱们仍然能够改动,并且仍然有一条坚实的道路来改善功用和简略性。有时这条道路是弯曲的:咱们需求先添加一些杂乱性以完成分片,而分片又能在上面完成许多的二层可扩展性。也就是说,下降杂乱性是或许的,以太坊的前史现已证明了这一点。

  • EIP-150 使调用堆栈深度约束不再相关,削减了合约开发者的安全担忧。
  • EIP-161 使“空帐户”的概念与字段为零的帐户别离开来。
  • EIP-3529 删除了部分退款机制,使 Gas 代币不再可行。

酝酿中的主意,如 Verkle 树,甚至也能进一步下降杂乱性。但如安在未来更好地平衡这两种愿景,是咱们应该开端更积极考虑的问题。


评论