主页 > imtoken钱包可以存哪些币 > Vitalik:以太坊最大的挑战是纯粹的安全性和构建高性能功能之间的平衡

Vitalik:以太坊最大的挑战是纯粹的安全性和构建高性能功能之间的平衡

imtoken钱包可以存哪些币 2023-11-30 05:08:24

翻译:Mary Ma,Wu 说区块链

以太坊开发社区在以太坊早期做出了许多决定,这些决定对项目的发展轨迹产生了巨大影响。在某些情况下,以太坊开发人员有意识地决定在我们认为比特币存在问题的地方进行改进。在其他地方,我们正在创造一些全新的东西,我们只需要想出一些东西来填补空白,但有很多选择。还有一些地方我们需要在更复杂和更简单的东西之间进行权衡。有时我们选择更简单的东西,但有时我们选择更复杂的东西。

这篇文章将在我记得的以太坊中查看这些分叉。其中许多特性在核心开发圈中得到了认真的讨论;有些几乎没有考虑,但也许真的应该考虑。但即便如此,值得看看不同的以太坊会是什么样子,以及我们可以从中学到什么。

我们应该采用更简单的 PoS 机制吗?

以太坊即将纳入的 Gasper PoS 机制是一个复杂的系统比以太坊区块链更好的,但也是一个非常强大的系统。它的一些特性包括:

但是创建具有这些属性的系统是困难的。这需要多年的研究,多年的失败实验,往往需要大量的努力,最终的输出相当复杂。

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 操作码。ALARM 操作码实际上很难安全地实现:如果块 1...9999 中的每个人都设置了 ALARM 并在块 100000 中执行了大量代码会发生什么?该块需要几个小时来处理吗?一些预定的操作会被推到后面的区块吗?但如果发生这种情况,ALARM 还剩下什么保证?字节数组的 SSTORE 很难安全地进行,并且极大地扩展了最坏情况的见证大小。

状态租金问题更具挑战性:如果我们真的从第一天开始就实现了一些状态租金,那么以太坊就不需要总是围绕持久状态的规范化假设进行演变。以太坊将更难构建,但它可能更具可扩展性和可持续性。同时,我们当时的状态到期计划,确实比现在差很多。有时好主意需要数年才能实现,而且没有更好的方法。

LOG 的替代品

LOG 可以通过两种不同的方式完成。

我们可以让 ETH 转账自动发送一个 LOG。这将为交易所和许多其他用户节省大量精力和软件错误问题,并将加速每个人对 LOG 的依赖,这将有助于智能合约钱包的采用。我们可以完全消除 LOG 操作码并将其变成 ERC:将有一个标准合约,该合约将具有函数 submitLog 并使用以太坊存款合约的技术来计算区块中所有日志的 Merkle 根。无论是 EIP-2929 还是块级存储(相当于 TSTORE,但在块后清除)都会降低成本。

我们强烈考虑过第一种方式,但拒绝了。主要原因是日志记录仅来自 LOG 操作码,这更容易。我们也非常错误地期望大多数用户会迅速迁移到智能合约钱包,这可以明确使用操作码来记录转账。

我们没有考虑第二种方式,但回过头来看,这实际上是一种选择。第二种方法的主要缺点是缺少快速扫描日志的布隆过滤器机制。但事实证明,布隆过滤器机制太慢,对 DApp 不友好,所以越来越多的人使用 TheGraph 进行查询。

总体而言,这些方法中的任何一种都有可能超越现状。不包括 LOG 会使事情变得更简单,但如果包括 LOG,自动记录所有 ETH 转移将使其更有用。

今天,我可能赞成最终消除 EVM 的 LOG 操作码。

如果当前的 EVM 采用完全不同的路径怎么办?

那时 EVM 有两种截然不同的路径可供选择:

使 EVM 成为具有内置结构(如变量、if 语句、循环等)的高级语言。使 EVM 成为某些现有虚拟机(LLVM、WASM 等)的副本。

第一条路径从未被真正考虑过。这条路径的吸引力在于它使编译器更简单,并允许更多的开发人员直接在 EVM 中编写代码。它还可以使 ZK-EVM 的结构更简单。这条路径的弱点在于它使 EVM 代码在结构上更加复杂:它不再是一个简单的操作码列表,而是一个必须以某种方式存储的更复杂的数据结构。也就是说,我们错过了一个两全其美的机会:一些 EVM 更改可以给我们带来很多好处,同时保持基本 EVM 结构相同:禁用动态跳转,添加一些旨在支持子例程的操作码(其他参见:EIP-2315),它只允许在 32 字节字边界上访问内存,等等。

第二种方式被建议了很多次,也被拒绝了很多次。支持它的论点通常是它允许将程序从现有语言(C、Rust 等)编译到 EVM 中。反对它的论点一直是,鉴于以太坊的独特局限性,它实际上并没有提供任何好处:

现有的高级语言编译器往往不关心总代码大小,而区块链代码必须进行大量优化以减少每字节的代码大小。

我们需要虚拟机的多个实现,并且严格要求没有两个实现以不同的方式处理相同的代码。对我们没有编写的代码进行安全审计和验证会更加困难。

如果虚拟机规范发生变化,以太坊将不得不不断更新,或者变得越来越不同步。

因此,EVM 可能永远不会有与我们今天所拥有的完全不同的可行路径,尽管有许多较小的细节(跳转、64 位与 256 位等)会带来更好的结果。

ETH 供应是否应该以不同的方式分配?

当前的 ETH 供应量可以用这张来自 Etherscan 的图表粗略表示:

PoS

目前约有一半的 ETH 在以太坊公开发售中出售比以太坊区块链更好的,任何人都可以将 BTC 发送到比特币地址,并且最初的 ETH 供应分配由开源脚本计算。其余的大部分也基本已经开采完毕。黑色的 1200 万个 ETH,标记为“其他”,实际上是预挖部分,分配给以太坊基金会和大约 100 名以太坊协议的早期贡献者。

这个过程有两个主要的批评:

在某种程度上,这些问题是相关的:尽量减少对中心化的看法的愿望推动了较小的预挖,但较小的预挖消耗得更快。

这不是唯一的解决方案。Zcash 采用了不同的方法:20% 的块奖励固定分配给协议中硬编码的一组接收者,每四年重新协商一次(迄今为止已经发生过一次)。这将更具可持续性,但会因为过于集中而受到更严厉的批评(Zcash 社区似乎比以太坊社区更公开地由更多技术专家领导)。

一种可能的替代路线类似于当今某些 DeFi 项目中流行的“从第一天开始的 DAO”路线。这是一个可能的稻草人建议:

公开发售可以由一个法律实体进行,该法律实体承诺将公开发售期间收到的比特币(或者烧掉,如果我们真的想让比特币爱好者高兴的话)以与 ETH 开发基金相同的比例分配。这可能会为以太坊基金会以及非以太坊基金会团体提供大量资金(导致生态系统更加去中心化),而所有这些都不会损害可信的中立性。当然,主要的缺点是代币投票真的很糟糕,但务实地,我们可以意识到,2014 年仍然是一个早期和理想化的时间,代币投票最糟糕的缺点是在公开发行结束后很久。将开始工作。

这样做不是更好的主意,并开创一个更好的先例吗?也许!尽管从实际的角度来看,即使开发基金完全可信的中立,今天那些对以太坊矿工大喊大叫的人很可能反而会在 DAO 分叉上加倍下注。

我们可以从这一切中学到什么?

总的来说,有时我觉得以太坊最大的挑战来自于平衡两个愿景:一个重视安全性和简单性的区块链,以及一个用于构建高级应用程序的高性能和功能性平台。上面的许多例子只是一个方面:我们是功能更少,更像比特币,还是功能更多,对开发者更好?我们是否关心让开发资金更加中立,更像比特币,或者我们是否关心确保开发人员获得足够的奖励以首先让以太坊变得更好?

我个人的梦想是尝试同时实现这两个愿景。一个基础层,其规格每年都比前一年小,以及一个以第 2 层协议为中心的强大的对开发人员友好的高级应用生态系统。话虽如此,要达到这样一个理想的世界还需要很长时间,如果我们能更清楚地认识到这需要时间,可能会有很大的帮助,我们需要逐步考虑路线规划。

今天,有很多事情我们无法改变,但也有很多事情我们仍然可以改变,并且仍然有一条可靠的途径来提高功能性和简单性。有时这条路是曲折的:我们需要先增加一些复杂性来启用分片,这反过来又在它之上启用了很多第 2 层可扩展性。也就是说,降低复杂性是可能的,以太坊的历史已经证明了这一点。

管道中的想法,如 Verkle 树,可以进一步降低复杂性。但未来如何更好地平衡这两个愿景,是我们应该开始更积极思考的事情。