以太坊正在分析EIP-1559在大型网络上的性能
概要
-
我们现在已经有了一份详细的EIP-1559的经济学分析了
-
我们正在搭建主网级容量的测试网,以分析1559在大型网络上的性能
-
对于解决由不断变化的BASE FEE引起的交易池问题,我们已取得了进展
-
我们有了新的模拟,来分析遗留交易的行为以及在一个单一网络上的1559式交易
-
OpenEthereum正在招聘一名专注在1559的全职工程师
经济学分析
在2020年12月,前沿的博弈论与计算机科学研究员Tim Roughgarden发表了一份50多页的EIP-1559经济学分析。他在推特和报告的第一部分写了报告的要点,但还是很值得在此完整分享一次:
译注:以上十点总结的翻译可以查看《以太七日谈 • 2020/12/7》。
过去,对1559的批评经常提到它欠缺一份正式的经济学分析,他们认为1559依赖的只是对以太坊交易费用市场的直觉。这份报告为EIP-1559提供了一个详尽的、总体上正面的分析。它甚至好像说服了一些著名的1559怀疑论者,比如Nick Johnson ?!
此份报告强调了1559的一些地方是值得进一步思考的,即那些矿工可能合谋的情况 [0],以及对基本费用更新规则进行更好的分析。第7次EIP-1559实现者会议对矿工合谋场景进行了讨论,但没有得出确切的结论。而在基本费用更新规则方面,我在Twitter上对这方面的专家发起了呼吁,有一些人已经联系我,希望能提供帮助 ?。
Roughgarden还提到,他希望以太坊社区可以最大程度利用这份报告,而且如果任何人有疑问、评论或担忧,他们都可以联系他。他的网站列出了他的各种联系方式。
大型状态测试网
如在之前的更新里讨论到的,对EIP-1559进行测试的下一个里程碑式在与主网相仿的条件下做测试。考虑到的第一个方法是真的在主网分叉出一个网络,降低难度然后在上面启动EIP-1559。尽管这可以给我们一份主网状态,但考虑到安全问题,这个想法还是被否决了 [1]。
相反,Besu团队一直在构建一个大型状态测试网生成器。生成器把大量账户和储存slot作为输入,开启一个名为"whale"的智能合约,让它发送少量的ETH,并为每个输入创建一个存储slot[2]。在第7次EIP-1559实现者会议里有一个完整的演示,从1:16:00开始。这是该工具运作时的截屏。
主网现在有大约1亿个账户,因此我们最近一次运行该工具,创建了一个有1亿账户和储存slot的网络。这个过程需要大概4天的时间,所需数据库容量大约240GB。随着网络容量的增长,创建网络的时间几乎成指数型增长,一个100k容量网络所需的时间是一个10k容量网络的2倍,一个1M容量网络所需的时间是一个100k容量网络的10倍,一个10M容量网络所需的时间比一个1M容量网络长15倍,一个100M容量网络所需的时间比一个10M容量网络长40倍!
现在有了这个数据库,我们将尝试把所有客户端实现同步到这个网络,然后用我们之前构建的交易生成工具对网络进行交易轰炸。这样,我们就可以深入了解客户端在必须管理主网级容量的状态时,如何在1559的规则下顺滑地处理200%满的区块。
交易池
在之前的更新里,我们讨论了一些与交易池管理相关的重要问题,它们还有待解决。我在一个文档里对它们进行了解释,但它的要点是由于区块间的BASE FEE不一样,以及交易会指定它们愿意支付的最高费用 (FEE CAP) 和矿工小费 (TIP),一个矿工打包交易收到的费用会随BASE FEE的变化而变化,这意味着潜在需要节点来对每个区块的交易池进行重新整理,这是非常低效的。
Quilt团队的Ansgar一直有关注这个问题,在第7次实现者会议他分享了一篇关于这个问题的文章。
简言之,有两个问题需要解决:矿工希望打包到区块的交易可以支付给他们最高的费用;非挖矿节点需要在它们的交易池满的时候有交易逐出的政策。
尽管该文档没有针对这个问题提出解决方案,它强调了对矿工来说交易的一个有趣特点——不断变化的收益。在1559下,你可以想象交易有两个可能的“状态”。第一个状态是”恒定的“,即交易的FEE CAP是大于BASE FEE与TIP之和的,而矿工回获得整份 TIP。第二个状态时”变化的“,即FEE CAP仍然高于BASE FEE,但低于BASE FEE与TIP之和 [4]。在这种情况下,矿工获得的是FEE CAP 与BASE FEE的差值。
当交易不处于这两种状态,你可以在它们之间创建一个相对秩序 (通过TIP分出”恒定“类的状态,通过它们的”有效小费“分出“变化”类的状态,例如:FEE CAP - BASE FEE)
Ansgar文章的洞见在于“变化”类状态的交易将保存相同的区块间相对秩序,因为BASE FEE的增加/减少将对它们产生同样的影响。这意味着问题的核心在于当BASE FEE变化时能找到一个决定哪些交易从“恒定”转为”变化“的有效方法,以及如何恰当处理这些交易。
希望在Quilt的下一篇文章里我们能得到这些问题的答案?!
模拟更新
Nethermind团队发布了一篇新的关于模拟的notebook,探讨了在网络里遗留交易与1559式交易间的相互影响,且遗留交易能被解释为1559式交易。这些研究都建基于 Barnabé Monnot及他的团队之前做的模拟成果。
这个模拟引入了三种类型的用户:天真的1559用户,他们总是把他们的TIP射到最低值;聪明的1559用户,他们会根据网络使用情况策略性地设置他们的TIP;聪明的遗留交易用户,他们会根据网络使用情况策略性地设置他们的gas price。
对于每种类型的用户,都要发送固定数量的交易到网络里。那份报告分析了哪种类型的交易被打包了,那些用户支付了多少钱,以及用户最后等了多长时间。
该报告的”总结“部分不长,且很值得完整阅读,但我还是给出了概要:
-
我们在模拟里看到两个清晰”阶段“:当BASE FEE聚集到它的均衡值的时候,以及当它是稳定的时候
-
在BASE FEE不稳定的阶段,聪明的1559用户会发起被打包的大部分交易
-
交易池的行为改变取决于我们在哪个”阶段“。当基本费用不稳定时,会有很多被逐出的交易以及需要重新整理交易池;但当它时稳定的时候,交易池只有非常少逐出的交易。
当在实现者会议上讨论模拟的时候,出现了两个有趣的问题。
第一,如果在网络上出现更多的遗留交易,BASE FEE有变得不那么稳定的风险,以及当那些阶段形成了采用1559式交易的激励时,1559式交易倾向于被优先打包。
第二,随着1559式交易的使用不断增长,且 BASE FEE 变得稳定,遗留交易的预估gas价格会变得更准确,因为他们可以在预估中使用 BASE FEE 的值。换句话说,1559用户将有助于减少网络中gas价格的波动,缩小gas价格预估器估算值的置信区间。
其他更新
上面已经写了很多更新内容了,最后一点值得一提的是OpenEthereum正在招聘一个全职开发者来从事EIP-1559的工作。
后续工作
这篇更新迟到了很多了!以下是我们接下来要忙的事:
-
分享最近研发工作成果到社区,包括AllCoreDevs,以收集反馈;
-
寻找专家为基本费用更新规则提供更好的分析
-
把所有的客户端是实现同步到大型状态的测试网,并用交易生成器工具来测试在网络上的性能
-
提出能对矿工和不挖矿节点的交易池进行分类的好算法
[0] 尽管在1559下这种情况不太可能,但这样的研究仍是有助益的。
[1] 分叉主网以及在客户端上公开主网变量容易引来攻击与欺诈重演
[2] 在后台,它是在发送 ETH 到 0x0...1, 0x0..2, 0x0..3等,并为0x0..1, 0x0..2, 0x0..3等制造储存条目,直到达到想要的账户与储存slot数量。
[3] 该文档有以下免责声明:此文档主要作为接下来的实现者会议的讨论基础。之后会再出一份更详细的文章。因为Quilt团队最近才加入到EIP-1559的事业里,有可能我们有错误的假设或忽略了现有的相关工作。
[4] 如果 FEE CAP低于BASE FEE,那么交易无法被打包到区块里。
原文链接:
https://hackmd.io/@timbeiko/1559-updates/https%3A%2F%2Fhackmd.io%2F%40timbeiko%2F1559-update-004
来源 | The State of 1559
作者 | Tim Beiko