Ξ

    Search by

    1559状态更新006 🔥

    摘要:大型状态测试网出现了漏洞,矿工社区发出反对声音


    TB

    Tim Beiko        2021-01-26

    来源 | The State of 1559

    ⭐我已经编译了《1559资源汇总》列表,它包括了分析、文档、释义性文章等分类。⭐


    要点速览👀

    • 大型状态测试网出现了一个漏洞,我们正在重启 🐞
    • 现在正在完善规范以支持EIP-2718,关于BASE FEE操作码的EIP现在在起草中!💅
    • Vitalik发表了文章解释为什么主网可以承载“200%满”的区块 !📈
    • 关于如何管理交易池,我们现在有了一个“相当不错”的策略✅
    • 对1559的交易以及BASE FEE操纵有了新的模拟研究&分析!📃
    • 有些矿工发出反对1559的声音,我们在想如何才是推动事情发展的最佳办法⛏

    客户端更新⛓

    在过去的假期里,客户端方面的工作主要在构建大型状态测试网。简而言之,此测试网旨在创建与主网相仿的条件,用以测试节点在处理大型状态时是否足以负载“200%满”的区块。

    我们本来打算在1.15的实现者会议里计划这个测试,但我们在最后一刻发现了漏洞!Besu用于初始化测试网的一些配置不被其他客户端支持,且在快速修补这个漏洞后,我们发现在BASE FEE计算上有一个溢出漏洞。

    因为测试网是用Besu的实现来构建的,所以目前最简单的路径是重新生成测试网的数据,这大概需要2周,Besu、Nethermind和Geth才能从头开始同步。这样,其他的漏洞也能在数据生成过程而不是之后被发现。

    但无须担忧,同时我们还有很多其他工作需要忙!

    随着柏林分叉即将准备就绪,现在是时候更新EIP-1559,以符合EIP-2718。2718对处理多种交易类型提出了一个框架。第一种新的交易类型在柏林通过EIP-2930引入。因此,EIP-1559会成为被引入的第二种新交易类型。与此配合,我们起草了一份关于增加BASE FEE 操作码的EIP。这对于合约直接请求区块的BASE FEE很有帮助,且会带来Gas Token以外更好的选择。

    最后,Vitalik分享了旨在解决1559里“200%满区块”疑问的文章。文章很简短,值得一读,以下是文章概要:

    • 大区块的多数问题都与平均区块容量有关,而不是区块的最大容量。1559对这个问题并不带来实质性改变[0];
    • 大区块难以持续生成主要是因为DoS攻击;
    • 柏林之后,EIP-2929将能减轻最严重的DoS攻击;
    • 实行EIP-1559后,不断上涨的BASE FEE会使得DoS攻击的成本上升得非常快;
    • 这会给我们留下“大区块的短时暴涨”问题,由于区块生成遵循泊松过程,这个问题在今天的以太坊已经出现了。

    希望这篇文章和我们接下来的大型状态测试网测试能帮我们完成“主网准备清单 ([Mainnet Readiness Checklist](https://github.com/ethereum/pm/blob/master/Fee Market Meetings/mainnet-readiness.md#client-level-open-issues)) ”中Client-level Open Issues 部分的最后一项🤞。


    研发更新 🤖

    研发方面的三个主要更新有:我们提出了一个当不错的方法来管理EIP-1559下的交易池,关于从我们目前的状态过渡到1559的新模拟研究,以及Nethermind对BASE FEE操纵的一些分析。

    交易池管理

    在最近的一次实现者会议里,Ansgar分享了一个关于交易池在后1559时代要如何运作的简明提案 。提案针对挖矿与非挖矿节点的方法都基于这样一个事实——在1559下,待处理但能被打包的交易数量在大多数时候都会变得非常少[1].。

    对矿工来说,把交易池分为能被打包与不能被打包交易两部分将使他们更容易开启把能被打包的交易打包到区块的工作。对于非矿工节点来说,区别只在于通过FEE CAP把交易进行简单分类,尽管不是最理想,但对大多数情况来说已相当不错。

    幸运的是,因为交易池行为不属于共识部分,客户端既可以自由改变它们的实现,也可以在网络升级之外的时间更新它。这意味着,我们可以按Ansgar的提议推出1559,同时在有了使用数据后完善所需事项。

    由于交易池的主要风险就是没找到足够好的方法,我们认为这点现在已经完成了。在《主网准备清单 ([Mainnet Readiness Checklist](https://github.com/ethereum/pm/blob/master/Fee Market Meetings/mainnet-readiness.md))》打勾✅!

    过渡到1559

    Barnabé和Fred发布了一篇新的模拟研究notebook,文章分析了过渡到1559新方式的影响,其中遗留交易可以通过把它们的FEE CAP设为GAS PRICE,把TIP设为FEE CAP - BASE FEE仍然保留在网络里。

    文章显示当两种类型的交易都能存在在网络里时,gas价格预言机可以根据1559式交易支付的价格来为遗留交易提供更好的价格估算。换句话说,如报告所述,“1559用户的行为驱使预言机更接近真实的市场价格。”

    Barnabé在推特里对研究结果进行了更详尽的解释🐦

    基本费用的操纵

    Nethermind团队一直在研究EIP-1559下BASE FEE可能被操纵的不同情景,无论是在以太坊主网还是潜在的本地网络实现,比如Oiler Network

    他们最近的分析研究里的一个要点是,尽管在一些情况里,单个行动者可以操纵 BASE FEE,把它调高 [2],但需要矿工卡特尔协作才能把BASE FEE往下调。

    下图来自该分析研究,显示了能成功通过操纵把BASE FEE调低的可能性是基于卡特尔控制的哈希率:

    basefee

    报告推荐,为了使卡特尔更难操纵BASE FEE,更新规则不应该是对称的。这不是第一次有研究显示BASE FEE的更新规则并非最理想的:Tim Roughgarden也在他的分析里提到这点。

    对这个规则的改善在“主网准备清单”里是开放的、“有则更好”的一项。如果你觉得你可以提供帮助请联系我们!


    挖矿问题⛏

    最后,过去几周已经看到矿工社区对EIP-1559发出的忧虑。简言之,因为每笔交易里的BASE FEE都会被销毁,在EIP-1559下矿工的收入将会减少。

    我和其他一起推动EIP-1559的人对此都有不同意见,但尽管的确在EIP-1559下矿工的收入会减少,但以下几点也值得关注:

    • 直到最近,交易费一直只占矿工收入很小的一部分 (来源);
    • 收费链可能会导致矿工因争夺高额交易费用而增加近链头重组的风险。(来源)。
    • 其他影响矿工收益的因素,比如网络哈希率 (现在是历史最高)和ETH价格 (也接近历史最高);
    • 我们还不知道在1559下被销毁的交易费比率是多少。有可能情况是尽管大多数的交易都是小额小费,但急需尽可能早被打包的交易 (例如:DeFi套利) 会愿意支付高额小费,导致被销毁的部分或收益减少的部分比预期少。这里欢迎有更准确的估算!

    也就是说,当在最近的一次实现者会议讨论矿工时,我们对做到以下几点达成了共识:

    1. 关于EIP-1559的影响,为矿工群体提供更好的文档资料与沟通 (只是一个开始);

    2. 记下支持/反对1559的矿池,最好附上相关的哈希率,并在 AllCoreDevs会议上分享,作为1559相关决策过程的参考。

    3. 当在决定是否要在主网上线1559时,要向社区说明,这些反对意见是有被考虑过的,且如果1559上线,为什么这些反对意见没有被采纳。

    我创建了一个discord房间,想要参与1559与挖矿相关讨论的朋友可以前往讨论。我们希望那里的对话保持文明与有效,且如果讨论变得很难看的话我会很快介入协调。🔨

    编辑:Alex Stokes也发表了一篇很好的文章,关于为什么1559可以使矿工激励与社区其他人的利益更一致。


    Next Steps 后续工作 ✅

    这次更新内容很多,感谢看到这里!以下是接下来要做的工作:

    • 解决Besu与其他客户端之间的共识问题,并重启大型状态测试网;
    • 当上一个任务完成了,策划一个Besu、Geth与Nethermind在测试网上的性能测试;
    • 在1559规范里增加对EIP-2718的支持;
    • 关于1559对矿工的影响提供更好的文档资料;
    • 接触多个矿工实体,收集他们对1559的意见
    • 当以上的工作都完成了,在AllCoreDevs会议上分享成果😁

    再次感谢阅读。下次见!


    [0] 在1559下,即使我们偶尔有大区块暴涨,BASE FEE会快速上涨使得暴涨很快结束。这意味着长时间的平均区块容量不会被严重影响。

    [1] 这是因为,平均来说,区块只会用50%的容量。这意味着如果交易的 FEE CAP高于 BASE FEE,新交易几乎都可以直接被打包到区块里。也就是说,大多数交易不是无法被打包(FEE CAP太低) 就是已经被打包了 (因为区块有空间容纳它们)。

    [2] 价格可以非常高,大概每20个区块花费250个ETH。


    Ethereum Community Network
    以太坊社区网络
    Ethereum Community Network
    以太坊社区网络