以太坊核心开发者会议 86
会议: 以太坊核心开发者会议 #86
会议日期: 2020年5月1日,星期五
会议时长: 2小时
会议视频链接:
会议日程:
o EIP-2315: 用于EVM的简单子程序
o EIP-2537:BLS12-381 曲线操作
o EIP-2515: 难度炸弹
o EIP-2046: 降低对预编译程序进行静态调用的Gas成本
柏林时间表
EIP-1057: ProgPoW 工作量证明
EIP-2565: EIP-198 ModExp 预编译的价格调整
PR:EIP1里面硬分叉改成网络升级和其它通用描述语言
状态树格式的转换
EIP-2315: 用于EVM的简单子程序的分析
EIP-1559 实施者的会议更新
EIP-2583: 对访问账户树内不存在账户实施惩罚
测试回顾
前次决定的回顾
会议主要内容:
1. 会议开始。主持人Hudson先开始第一个议题柏林的EIP的回顾。James表示先回顾EIP#2315和EIP#2537,同时希望有客户端的讨论在里面一起。EIP#2537先讨论,Alex V这次会议还没有参加,所以Tim先代表Besu客户端来更新状态。Tim表示Besu客户端已经基本完成,唯一的问题是给预编译的合约地址还没找到,这个解决后就完全完成。Geth客户端说集成还没有开始,还有不少工作需要做。开放以太坊表示他们还没有开始做集成EIP#2537。原因是Alex希望先有独立的审核的验证,随后才是应用。同时他也表示EIP#2315已经做好了代码,也互相检查了几轮。现在正在做最终审查,完成后就会合并到代码的主分支里面去。Nethermind的Tomasz表示这两个EIP都没有开始实施。他表示就像上次他说的一样,实施起来没有太大的困难,所以不用担心。
https://github.com/ethereum/EIPs/pull/2537
2. James开始询问EIP#2315,用于EVM的简单子程序。他看见有很多的讨论在进行。Hudson说Alex不在,看看Martin,Greg等人有没有看法。Martin表示他先说一下背景知识。这个EIP已经做了状态转换的测试,在Besu和Geth上已经通过。但在这之后又有一些新讨论。在最新的帖子上面提到了两个问题:首先是不允许“走进”子程序(walking into subroutine),这个Martin认为容易解决。第二个是不允许“跳进”子程序(jumping into subroutine),而这个Martin认为不容易解决。之前的规范可以定义好几层子程序。但是现在只能做两层子程序。外层的子程序是执行代码的,当这个代码执行完毕就必须结束这个子程序。这个就给“跳进”带来了限制:不仅要在“跳进”时候找到终点的地址,更要确保是同一层的子程序。Martin认为这个限制增加了代码的复杂性,但从讨论的过程看大部分人是支持新帖子的建议。Greg表示他不很认同这个办法,他希望用一个纯的jump的机制而不是像615样式似的JAVA结构机制。他认为应用LLVM堆栈可能是一个坏想法。现在的EVM机制是没有流量控制(flow of control)的,他不想去改变这个。James建议去检查合约代码,看看是否真的需要这样做。Martin表示赞同,他补充说那些建议的目标之一是让代码默克尔化(code merklization)更加简单。Greg赞同这个目标,表示希望能找到一个办法用最少的结构实现这个目标。James最后表示他会后会找到Alex,看看他的想法。同时现在也不好判断是否使用这个新的建议,是否合并进柏林里面等。如果EIP#2315需要更多工作,来不及的情况下就只有EIP#2537能够合并到柏林里面去。接着Jordi Baylina快速说了一下他的实施工作。他说这个EIP已经实施,代码稳定,Gas成本他也能接受,所以一切顺利。最后,刚上线的Alex表示希望能够合并新的建议。
https://ethereum-magicians.org/t/eip-2315-simple-subroutines-for-the-evm/3941
3. James说EIP#2046 没有更新。Hudson说柏林的时间表也已经在刚才的讨论中说过了。
https://ethereum-magicians.org/t/eip-2046-reduced-gas-cost-for-static-calls-made-to-precompiles/3291
https://ethereum-magicians.org/t/eip-2515-replace-the-difficulty-bomb-with-a-difficulty-freeze/3995
4. 下一个议题是EIP#1057。主持人Hudson希望大家可以先看一下Github里关于这个EIP的评论,可以了解最新的现状。现在EIP状态是接受的状态,新的领头人是Greg。Greg介绍说关于这个EIP,没有很明确的定论,但大家都赞同先用Ben的妥协方案先做代码,接着在测试网络上运行看看。这样边做边看,时间上不会拖延太长,如果测试结果好,也有定论了,那么可以作为备选合并进主网络。他请来了BBT的Michael Carter和AndreaLanfranchi来报告现在代码和测试的状态。Michael说版本0.9.3基线版本已经被测试和验证过了,也是客户端用的最多的版本。他们现在已经在开发0.9.4版本了,但是发现了两个问题。一个是Kik发现的问题,另一个是Least Authority发现的轻客户端评估攻击(light evaluation attack)的问题。他们准备放到测试网络上让社区矿工去测试,这样也可能会给这个EIP指出正确的方向。Andrea表示LeastAuthority发现的轻客户端评估攻击的问题已经在解决。另外一个Kik发现的问题,他想指出来这个不仅仅是一个ProgPow的问题,也是一个需要在挖矿堆栈做很多改变的事情。他继续表示在Github中的PR已经最后定型了,他们增加了给每个DAG项的轻客户端缓存访问(light cache access)数量从256到最大512来帮助减缓轻客户端评估攻击的问题。另一个项目Ravecoin提供给他们一个免费的测试网络,因为他们正计划在5月6号升级到0.9.4版本上面。Hudson表示这个问题还需要更广泛的讨论,今天的会议是来展示现状,还不能做任何的决定。他问Greg还有什么没有谈到的。Greg回答说Michael和Andrew很好的告诉了大家这个EIP在技术上的现状。后面是一些公开讨论。Stefan George表示Gnosis和开放以太坊了解关于ProgPow的技术上的现状,但是他们的态度一直是和社区的意见保持一致的。现在看来社区对ProgPow还没有明确的共识。Gnosis现在还是认为ProgPow不需要,是持反对意见的。Artem表示在那些代码合并进入主线之前,他们想先明确社区的共识。Peter发言,他首先明确表示这是他自己个人的意见。他说从技术上面来说ProgPow没有明显的好处。使用ProgPow的代码需要更多的计算,使用ProgPow的区块需要更长的时间来验证。他强调这仅仅是技术上的考虑。另外他说可以考虑重启带有ProgPow的工作证明的测试网,其实之前有过这样的提议的。这样客户端就可以自己验证和创建使用ProgPow的区块。他不在意主网络是用ASIC还是GPU,他强调他非常希望保持主网络是完整的一块。接着Andrew又说到在他自己的开发环境下面,验证的时间的确从4毫秒增加到了8毫秒。Hudson询问到底哪里是比较好的技术讨论的地方。Andrew回答说是Gitter的频道和Github的PR里面。Hudson还鼓励大家多讨论,因为对于这个EIP,他很希望能有一个明确的正式的结果。James也表示如果没有社区的共识,他不赞同把ProgPow合并进来。
https://eips.ethereum.org/EIPS/eip-1057
https://github.com/ifdefelse/ProgPOW/pull/52
https://minermore.com/docs/help/ravencoin_fork/
5. 下一个是EIP#2565,EIP-198 ModExp 预编译的价格调整。Hudson说截至上周开放以太坊做了很多基准的测试。他请Kelly Olson来讲解一下。Kelly介绍说首先这个EIP是为了降低ModExp预编译的价格。几周前他们在Geth上做基准测试发现这个价格尤其的高,大概是其它预编译的十到二十倍。他们提供了三种办法来降低这个价格。第一种是简单的改变参数。第二种是更改Gas的价格计算公式来正确反映计算操作的复杂性。第三种也是改进预编译底下的库来降低价格。接着Kelly展示了图表来说明在Geth和Parity中不同测试情况下的一些数值变化。最后的结论是第一种方式不合适,因为在Parity中会有Gas成本不够的情况(underprice),导致Geth和Parity两个客户端成本相差太大。比较第二种和第三种后发现还是第二种比较好。原因是价格下降了60%左右,而且更精确的反映了计算的复杂性。他们推荐第二种方式。同时他们也想知道,如果他们确定了更有效的定价机制,开放以太坊是否愿意使用。Artem表示他们会更换库再和Kelly团队一起测试看看结果如何。随后Peter,Martin等人又围绕图表上面的数值进行了一些讨论。Kelly最后表示现在有后两种方式可以改进这个EIP。他会继续做基准测试,包括更换较好的库。希望两周后能拿出明确的证据来证明哪一个办法是最好的。
https://eips.ethereum.org/EIPS/eip-2565
6. 下一个是PR,提议把硬分叉(hard fork)改成网络升级(network upgrade)。Tim表示这个在EIPIP的会议里面提出过好几次。他先解释了为什么要这么做,他觉得硬分叉有时候会带来预期的混淆,有些人认为是升级,有些人认为是分链。而且还有些人觉得硬分叉可能会带来一些新的免费的币。同时他表示在更改这一个术语的同时,也想规范大家对一些通用行为的讲法。Greg,Martin等人有一些讨论。Hudson表态说他赞同更换成网络升级的原因是因为他认为网络升级描述的是在升级的时候没有任何有争议的事项。而硬分叉给人的预期就是可能会分链。James表示以太坊从比特币那边继承了很多术语过来,有一些已经在广泛的用户里面达成了共识。所以要不就需要告诉大家有些术语并不是大家想象中那样的含义,要不就是用另外一个被广泛接受的术语来代替。随后又有一些人发表了自己的意见。最后Hudson总结到他们会广泛扩散这个PR来获取更多的社区的意见。
https://github.com/ethereum/EIPs/pull/2516
7. 下一个是状态树的PR。Guillaume介绍说这个PR是上次在巴黎以太坊1.0开会时候提出的,是想把十六进制的树结构改成二进制的树结构。有两个办法在被讨论如何实现这个目的:一个是停止世界运行(stop the world)的办法,所有人都停止产生新的区块,然后给出一个时间让所有人都能够升级,再用新的二进制方式一起开始运行系统。另一个被讨论的方式是每次当树结构中的分支写入时候,再开始转换。这个办法的好处是可以不用停止所有人的活动。技术上可以在每次需要写入的分支的上面在覆盖一层新的分支(overlay tire),随后把原分支做成只读的状态。这样转换可以在后台完成。接着在第二阶段就可以把原分支给去掉,所有分支都用二进制的方式。Peter提出疑问,如果用第一种方式,从外部黑盒看是这样的,但是内部其实并没有什么可以阻碍产生新的二进制的树结构。比如在硬分叉三周前可以十六进制和二进制的树结构可以同时进行。他举例说Geth里面大概25到50毫秒产生一个树结构,如果两个同时大概就是50-100毫秒,这样也不影响效率。他不了解为什么不这么做而要用更加复杂的办法。Guillaume和Peter有一些技术上的讨论,比如到底是协议层还是客户端来完成这个转换,比如转换时候Gas成本增加的问题等等。Peter坚持认为原本的办法太过于复杂。Martin等人还想发表一些评论,但是主持人说没有时间,讨论太过于具体了,大家可以去PR下面发表评论或者以太研究(Eth research)上面继续讨论。
https://github.com/ethereum/EIPs/pull/2584
8. 下一个是EIP#2315,James表示这个还需要做更多的功课,可以放到下次讨论。
https://ethereum-magicians.org/t/eip-2315-simple-subroutines-for-the-evm/3941
9. 下一个是EIP#1559,Tim说Geth的实施已经做好了,Besu客户端的也基本完成,能够和Geth互联,这样他们有一个环境可以小范围的进行测试了。在测试过程中Dan Finley提出一个不同的提议。原本的办法是用一个基础费用加上小费的方式,而Dan的提议是在执行之前就展示清楚条件,诸如最大的和最小的愿意支付的费用,和愿意等待多少个区块等等。转移的费用会随着区块的增加而增加。Tim说下一步就是权衡这两个提议,做测试看看哪一种在经济上是比较好的,有无可能把两个办法的合并在一起等。客户端来说,会搭建一个本地小测试网络来调整参数,一个月之后来看看结果。
https://twitter.com/TimBeiko/status/1255874207805837313
10. 下一个是EIP#2583。主持人说好几次都在讨论这个议题,想知道最新的状态,看看是否还需要放在会议日程里面讨论。Greg回答说可以撤掉了,因为他从Alex那里找到了更好的办法来解决这个问题。Hudson建议他把EIP改成撤回(withdraw)的状态。
https://github.com/ethereum/EIPs/pull/2583
11. 下一个是测试相关。Martin表示Hive已经开始运行,4个客户端都可以开始实施。现在他们还在做一些工作能够让Hive运行所有的测试,包括共识测试和点对点的协议测试。另外Geth也在做状态转换工具的测试。
https://hivetests.ethdevops.io/
https://github.com/ethereum/go-ethereum/pull/20958
12. 下一个议题是上次结果回顾。Hudson说之前有些EIP的状态和需要行动事宜并不是很准确,所以他让遛猫者(Cat Herders)用新的办法来改进这些混淆的地方,比如更清楚的注解,比如加上超链接等。他希望大家都可以帮忙,如果看到之前EIP不准确的地方可以提出来。
13. Hudson感谢大家提前两分钟讨论完成这次很长的会议日程,并说两周后见!会议结束。
与会开发者:
• Alex Vlasov
• Alex Beregszaszi (axic)
• Andrea Lanfranchi
• Ansgar Dietrichs
• Artem Vorotnikov
• Daniel Ellison
• Daniel Weaver
• David Mechler
• Dimitry
• Greg Colvin
• Karim Taam
• Kelly (Supranational)
• Hudson Jameson
• Mariano Conti
• Martin Holst Swende
• Michael Carter
• Pawel Bylica
• Péter Szilágyi
• Pooja Ranjan
• Rai Ratan Sur
• Robert Drost
• Sean
• Tim Beiko
• Tomasz Stanczak
• Wei Tang
• Will Villanueva
更多参考内容:
https://github.com/kilic/eip2537
欢迎转发,本内容遵循CC BY-SA 2.5协议:
https://creativecommons.org/licenses/by-sa/2.5/
你的支持,是对我们的认可。来打赏我们一杯咖啡吧!打赏地址:
以太坊:
0x7Ba18D8d4B0E4EB06a720aF2BeC29603078c806b
Gitcoin:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!