作者:Vitalik,以太坊创始人
原标题:《Theroadsnottaken》
翻译:马艳丽,吴硕区块链
。以太坊开发社区在以太坊前期做了很多决策,对项目的发展轨迹影响很大。在某些情况下,以太坊的开发者有意识地决定在我们认为比特币有问题的地方进行改进。在其他地方我们正在创造一些全新的东西,我们只需要拿出一些东西来填补空白,但有很多东西可供选择。还有一些地方需要我们去权衡更复杂和更简单的东西。有时候,我们会选择简单一点的,但是有时候。我们也会选择更复杂的。
本文将重点介绍我记忆中以太坊的这些路线分叉。这些功能中有很多已经在核心开发圈里认真讨论过了;其中一些几乎没有被考虑过,但也许它们真的应该被考虑。但即便如此,我们还是有必要去看看一个不一样的以太坊会是什么样子,我们能从中学到什么。
是否应该采用更简单的PoS机制?
以太坊即将合并的GasperPoS机制是一个复杂的系统,但也是一个非常强大的系统。它的一些属性包括:
非常强大的单块确认:一个事务一旦被包含在一个块中,通常在几秒钟之内。区块会最终确定,除非大量节点不诚实或者有极端的网络延迟,否则无法逆转。
经济终局:一个区块一旦最终确认,就无法逆转。除非攻击者能够承受数百万ETH被没收的损失。
非常可预测的奖励:验证者可以在每个历元(6.4分钟)内可靠获得奖励。
支持数量非常多的验证器:与其他大多数具有上述特征的链不同,以太坊信标链支持数十万个验证器(例如,Tendermint提供了比以太坊更快的终结性,但它只支持数百个验证器)
。但是很难创建一个具有这些特征的系统。这需要多年的研究,多年失败的实验,通常要付出很多努力,最后的输出也相当复杂。如果我们的研究人员没有';不需要担心那么多共识,他们会有更多的自由思考时间。那么也许,仅仅是也许,2016年就可以发明上卷了。这让我们思考:我们真的应该对我们的PoS要求这么高的标准吗??因为即使是更简单更弱的PoS也会大大改善PoW的现状。很多人有一个误区,认为PoS本身很复杂,但实际上很多PoS算法几乎和中本聪PoW共识一样简单。。NXT'sPoS从2013年就有了,本来就是现成的候选;虽然它有一些问题,但这些问题很容易解决。我们可以从2017年甚至一开始就有一个合理可行的PoS。。Gasper比这些算法更复杂,只是因为它试图完成比它们多得多的任务。但是,如果我们不';不要一开始就定太高的目标,我们可以先专注于实现一系列更有限的目标。
在我看来。从一开始实施PoS就是一个错误;PoW有助于扩大初始流通分布,让以太坊更易接触,可以鼓励业余爱好者群体。但是2017年,甚至2020年,换一个更简单的PoS。,可能会导致更少的环境破坏(以及环境破坏导致的反加密货币心态),更多的研究者可以自由思考扩张。我们最终将不得不花费大量资源来制造更好的PoS吗?我想会的,但是现在看来无论如何,我们最终会做到的。
碎片的解补
以太坊碎片的研究从2014年开始,就一直朝着越来越不复杂的方向发展。首先,我们有内置执行和跨段事务的复杂段;然后我们通过将更多的责任转移给用户来简化协议。在跨片交易中,用户必须分别为两个片支付气费。然后,我们切换到以Rollup为中心的路线图,其中,从协议的角度来看,分片只是数据分片。最后通过danksharding,分段的成本市场被合并成一个整体,最终的设计看起来像一个不分段的链条,但在这里,数据可用性抽样可以实现分段验证。
但是如果我们走相反的路呢??事实上,以太坊有一些研究人员已经深入探索了一个更复杂的碎片系统:碎片将作为一条链,会有分叉选择规则,其中子链依赖于父链,跨碎片的消息将由协议路由,验证者将在碎片之间轮换。甚至DApp也会自动实现片间负载平衡。
这种方法的问题是,这些形式的碎片很大程度上只是想法和数学模型,而Danksharding是一个完整的、几乎可以实现的规范。因此鉴于以太坊的情况和局限性,在我看来,切分的简化和消歧绝对是正确之举。换句话说,更宏大的研究也起着非常重要的作用:它决定了有前途的研究方向,即使是非常复杂的想法也往往有合理的简单版本。这些想法仍然提供了许多好处,并且很有可能在未来几年内极大地影响以太坊(甚至是第二层协议)的发展。
EVM的功能选择
其实除了安全审计EVM的规格基本上可以在2014年中期推出。然而,在接下来的几个月里,我们继续积极探索新的功能,我们认为这些功能对于分散的区块链可能非常重要。EVM增加了一些功能,有些没有。
我们考虑添加POST操作代码,但决定不这样做。POST操作代码将被异步调用,并将在事务完成后执行。
我们考虑添加一个报警操作码,但决定不这样做。。ALARM的功能类似于POST,只是异步调用是在一个future块中进行的,允许契约调度操作。
我们增加了日志,允许合约输出不触及状态的记录,但是可以被DApp界面和wallet解读。。值得注意的是,我们也考虑过让ETHtransfer发送日志,但决定不这么做,理由是反正人们很快就会改用智能合约钱包。
我们考虑扩展SSTORE以支持字节数组。,但出于对复杂性和安全性的考虑,决定不这样做。
我们添加了precompiles,这是一个使用本地实现来执行特殊加密操作的合同,这比在EVM执行要便宜得多。
推出后的几个月,我们反复考虑州租,但始终没有包括。这真的太复杂了。如今,人们正在积极探索更好的状态过期方案。尽管无状态认证和提议者/构建者分离(PBS)意味着它现在的优先级低得多。
现在,大多数不添加功能的决策已经被证明是非常好的决策。没有明显的理由添加POST操作码。。ALARM操作码实际上很难安全地实现:如果块1中的每个人都.9999在block100000里设置了一个警报并执行了很多代码?处理那个阻塞需要几个小时吗??一些预定的操作会被推到后块吗?但如果发生这种情况,报警能保持什么保证?字节数组的SSTORE很难安全地完成,它会大大扩大最坏情况下的见证大小。
状态租金的问题更具挑战性:如果我们真的从第一天就实现了某种状态租金,以太坊并不总是需要围绕持久状态的规范化假设发展。以太坊会更难建造,但可能更具可扩展性和可持续性。同时我们当时的身份过期计划确实比我们现在的差很多。有时候,一个好的想法需要几年才能实现,没有更好的办法了。
LOG
LOG的替代方法有两种。
我们可以让ETHtransfer自动发布日志。这将为交易所和许多其他用户节省大量的精力和软件错误,并将加速每个人';这将有助于智能合约钱包的采用。
我们完全可以把它变成一个没有LOG的操作码的ERC:会有一个标准契约,有一个函数submitLog,利用以太坊存款契约的技术计算这个块中所有日志的Merkle根。。EIP-2929和块范围存储(相当于TSTORE,但在块之后清除)都将使这变得便宜。
我们强烈考虑过第一种方式,但拒绝了。主要原因是日志只来自LOG操作码。它';it’这更容易。我们还非常错误地预测,大多数用户将很快迁移到智能合约钱包,这显然可以使用操作码来记录转账。我们没有';我不考虑第二种方法,但回想起来,这实际上是一种选择。。第二种方法的主要缺点是缺少快速扫描日志的Bloomfilter机制。但事实证明,布鲁姆过滤机制太慢,对DApp不友好。所以现在越来越多的人使用图形来查询。
总的来说,这些方法中的任何一种都可能比现在的情况要好。不包含LOG会使事情变得更简单,但是如果包含LOG,自动记录所有以太网传输将使其更加有用。
今天,我可能会赞成最终取消EVM';的日志操作码。
如果现在的EVM选择了完全不同的道路呢??当初,EVM有两种截然不同的方式可以选择:
让EVM成为一种内置变量、if语句、循环等结构的高级语言。
使EVM成为一些现有虚拟机(LLVM、WASM等)的副本。).
第一条路从来没有真正考虑过。这种方法的吸引力在于,它可以使编译器更简单,并允许更多的开发人员直接在EVM中编码。。它还可以使ZK-EVM的结构更简单。这种路径的缺点是,它会使EVM代码的结构更加复杂:它不再是简单的操作码列表,而是更复杂的数据结构,必须以某种方式存储。换句话说我们错过了一个一举两得的机会:一些EVM的改变可以给我们带来很多好处,同时保持基本的EVM结构不变:禁止动态跳转,增加一些支持子程序的操作码(另见EIP-2315)。只允许在32字节的字边界上访问内存,依此类推。
第二种方式已经提出过很多次,都被否决了。支持它的论点通常是,它将允许程序从现有的语言(C,Rust等)编译成EVM。).反对意见一直是鉴于以太坊特有的局限性,它实际上不会提供任何好处:
现有高级语言的编译器往往不会';我不在乎总的代码大小,区块链码必须大大优化,以减少每个字节的代码大小。
我们需要虚拟机的多种实施。并严格要求两个实现不能以不同的方式处理相同的代码。对我们没有编写的代码进行安全审计和验证会更加困难。
如果虚拟机规范发生变化,以太坊就不得不一直与之更新,否则就会越来越不同步。
因此,EVM可能永远不会有与我们今天完全不同的可行路径,尽管有许多更小的细节(跳转、64位vs256位等。),如果能以不同的方式进行会带来更好的效果。是否应该以不同的方式分配ETH供应?ETH目前的供应量大致可以用Etherscan的这张图来表示:
目前ETH在以太坊的公募中大约有一半是卖出去的。任何人都可以将BTC发送到一个比特币地址,初始的ETH供应分配是通过开源脚本计算的。其余大部分基本上都是通过采矿生产出来的。黑色的1200万以太网标记为"其他"。实际上是预挖掘部分,在以太坊基金会和以太坊协议的约100个早期贡献者之间进行分配。
关于这个过程,主要有两种批评:
预挖掘和以太坊基金掌管公募基金的事实。,不具备可信的中立性。一些收款人';地址是通过封闭的过程手动选择的。以太坊基金会必须是可信的,公募获得的资金不能进一步通过贷款获得更多的ETH(我们不';我没有,也没有人说我们有。但即使是被信任的要求也会冒犯一些人。
预挖掘过度奖励了非常早期的贡献者,给后来的贡献者留下的太少。前期挖掘的75%用来奖励上线前的贡献者,而上线后。以太坊基金会只剩下300万ETH了。在六个月内,为生存而出售的需求使库存减少到大约100万ETH。在某种程度上这几个问题是有关联的:最小化集权视野的愿望导致了较小的预掘,但较小的预掘会更快耗尽。这不是唯一的解决方案。。Zcash采取了一种不同的方式:20%的块奖励分配给协议中硬编码的一组接受者,这组接受者每四年重新谈判一次(到目前为止发生过一次)。这样会更可持续。但会因为过于集中而受到更严厉的批评(Zcash社区似乎比以太坊社区更公开地由更多的技术专家领导)。
一个可能的替代路线是DAOfromday1路线,该路线目前在一些DeFi项目中很流行。下面是一个可能的稻草人提案:
我们约定,2年内。2ETH从每块奖励中分出,投入发展基金。
凡是在以太坊公募中购买ETH的,都可以投票选出自己喜欢的发展基金分配(比如每块奖1个ETH给以太坊基金会。,0.4ETH给Consensys研究团队,0.2ETH给VladZamfir.)
投发展基金份额的受助人等于所有人的中位数';s投票,按比例计算。总数等于每块2ETH(中位数是为了防止自我交易:如果你投给自己,你什么也得不到,除非你让至少一半的其他买家提到你)。
公开发行可以由法人实体经营。承诺将公募时收到的比特币按照ETH发展基金的相同比例进行分配(或者如果真的想让比特币玩家开心就烧掉)。这可能会导致以太坊基金会获得大量资金。非以太坊基金会团体也获得了大量资金(导致了更分散的生态系统),这些都丝毫没有破坏中立的可信度。当然,主要缺点是通过投票真的很糟糕,但务实地说,我们可以认识到这一点2014年还是一个早期的、理想化的时间,pass投票最严重的缺点要在公募结束后很久才开始发挥作用。
这是不是一个更好的主意,并树立一个更好的先例?也许吧!虽然从现实的角度来看,即使发展基金是完全可信和中立的,今天在以太坊吼矿工的人,也很可能开始对道岔大吼两倍。我们能从这一切中学到什么?通常有时候我觉得以太坊最大的挑战来自于两个愿景的平衡:一个重视安全性和简单性的区块链,一个构建高级应用的高性能和功能的平台。。以上很多例子只是一个方面:我们是更像功能更少的比特币,还是更适合功能更多的开发者?我们是担心让开发资金变得更中性,更像比特币,还是担心先保证开发者获得足够的回报?让以太坊变得更好?
我个人的梦想是尝试同时实现这两个愿景。一个基础层,它的规格一年比一年小,一个强大的开发者友好的高级应用生态系统,以第二层协议为中心。换句话说要达到这样的理想世界,还需要很长的时间。如果能清楚的认识到这需要时间,需要一步一步的考虑路线规划,可能对我们有很大的帮助。今天,我们可以做很多事情';不要改变。但是还有很多我们可以改变的地方,还有一个很扎实的方法来提高功能性和简洁性。有时候这条路是曲折的:我们需要增加一些复杂度来实现碎片化,而碎片化可以在上面实现很多二层的可扩展性。换句话说降低复杂度是可能的,以太坊的历史已经证明了这一点。
EIP-150使调用堆栈深度限制变得无关紧要,并减少了合同开发人员的安全顾虑。
EIP-161分离了"空帐户"从字段为零的帐户。
EIP-3529删除了部分退款机制,这使得燃气令牌不再可行。
构思中的创意,如Verkletrees。并且甚至可以进一步降低复杂性。但未来如何更好地平衡这两种愿景,是我们应该开始更积极思考的问题。