我们确定了以下两个轻松取胜的途径,可以在不做任何协议更改的情况下将状态根性能提高2-3倍:
完全并行化状态根:现在我们只重新并行计算已更改帐户的存储树,但是我们可以更进一步,当存储根作业在后台完成时并行计算帐户树。
Pipelined状态根:在执行过程中,通过通知状态根服务所涉存储slot和帐户,从磁盘预取中间trie节点。
除此之外,我们还可以偏离以太坊L1状态根活动探索一些前进路径:
更低频的状态根计算:不在每个区块上计算状态根,而是每T个区块计算一次。这减少了整个系统中投入状态根的总时间占比,这可能是最简单最有效的解决方案。
跟踪状态根:与其在同一个区块上计算状态根,不如让它落后几个区块。这样就可以在不阻塞状态根计算的情况下推进执行。
替换RLP编码器&Keccak256:相比使用RLP编码,直接合并字节并使用更快的哈希函数(如Blake3)可能成本更低。
更宽的Trie:增加树的N-arity子节点,以减少由于trie的logN深度而导致的IO增大。
这里有几个问题:
上述变化对轻客户端、L2、bridge、协处理器和其他依赖频繁帐户和存储证明的协议的次级影响是什么?
我们能同时优化SNARK证明和原生执行速度的状态承诺吗?
用我们现有的工具,我们能得到的最宽泛的状态承诺是什么?对见证大小有什么次级效应?
我们将在整个2024年执行上述多项内容,以实现每秒1GBgas的目标。
然而,垂直扩展最终会遇到物理和实操限制。没有任何一台机器可以处理全世界的计算需求。我们认为这里有两条路径可以支持我们在负载增大后通过引入更多的box来扩展:
(1)多RollupReth
如今的L2堆栈需要运行多个服务来追踪链:L1CL、L1EL、L1->L2派生函数(可能与L2EL绑定在一起)和L2EL。虽然这对于模块化来说非常好,但在运行多个节点栈时情况会变得更加复杂。想象一下必须运行100个rollup会怎样!
我们希望允许在Reth的发展过程中同步发布rollup,并将运行数千个rollup的运营成本降至几乎为零。
我们已经在我们的执行扩展项目中进行了这方面的工作,未来几周还会有更多进展。
(2)云原生Reth
高性能排序器可能在单个链上有很多需求,它们需要扩展,一台机器并不能满足其需求。这在如今的单节点部署的情况下是不可能的。
我们希望可以支持运行云原生Reth节点,将其作为一个服务栈部署,可以根据计算需求自动扩展,并使用看似无限的云对象存储来实现持久存储。这是无服务器数据库项目(如NeonDB、CockroachDB或AmazonAurora)中常见的架构。
我们希望逐步向所有Reth用户推出这一路线图。我们的使命是让所有人都能获取每秒1GBgas甚至更高的速度。我们将在RethAlphaNet上进行优化测试,我们希望人们将Reth用作SDK来构建优化的高性能节点。
有些问题我们还没有找到答案。
Reth如何帮助提高整个L2生态的性能?
我们如何适当衡量在一般情况下,我们的一些优化可能出现的最坏情况?
我们如何处理L1和L2之间的潜在分歧?
这些问题中很多我们都还没有答案,但我们有很多前景光明的最初设想,可足够让我们忙上一段时间了,我们希望看到这些努力在未来几个月结出硕果。
以上就是一文解读以太坊Reth如何实现每秒1GB gas的全部内容,望能这篇一文解读以太坊Reth如何实现每秒1GB gas可以帮助您解决问题,能够解决大家的实际问题是非常好学习网一直努力的方向和目标。