织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币 > 以太坊

不用分片也能扩展 10 倍性能?简单了解以太坊 Turbo

时间:2020-09-22 13:46来源:未知 作者:admin 点击:
把以太坊逐个迁移到其它编程语言上,即使不引入分片,也有可能扩展至少 10 倍的吞吐量。 原文标题:《引介 | Turbo-Geth 客户端:过去与未来》 撰文:Alexey Akhunov 翻译:阿剑 Turbo-Geth
把以太坊逐个迁移到其它编程语言上,即使不引入分片,也有可能扩展至少 10 倍的吞吐量。

原文标题:《引介 | Turbo-Geth 客户端:过去与未来》
撰文:Alexey Akhunov
翻译:阿剑

Turbo-Geth 作为一个纯粹出于好奇心的项目,始于 2017 年(没错,就是在 CryptoKitties 导致的疯狂拥堵时期)。一开始是为了探究基于 trie 的数据库模式的替代方案。在 2018 年 3 月,Turbo-Geth 项目从以太坊基金会处获得了一笔小额的奖金(2.5 万美元)。在 2019 年第一第二季度,Turbo-Geth 被用作状态租金(State Rent)研究的状态分析平台。到了 2019 年第三第四季度,Turbo-Geth 也被用于执行无状态以太坊的回溯检验(back testing)。在 Devcon5 举办以前,我认为它在概念上已经很可靠了。

在 Devcon5 上,我提议在一年内不再接受 EIP,好把所有的实现都转成类似的数据模式。但因为大家有所怀疑,而且 「核心开发者」 团体也没有这个积极性,我的提议没有被采纳。

怀疑意见主要围绕着高效计算和更新状态根哈希的方法。在 2020 年 3 月 的 EthCC 2020 大会上,我们提出了解决方案:额外的数据结构,叫做 「中间哈希值(Intermediate Hashes)」。接下来几个月里我们就完全实现了这个方案。

阶段式同步(staged sync)的想法来自于对按表写入变更量(per-table write churn)的测量值的观察。对数据变更(churn)的解决的方案是在一个预先排序号的序列中插入数据。我们在 2019 年末仔细观察了这些现象,但我们的第一个实验性的实现在 2020 年 2 月才表现出有重大的性能优势。

阶段式同步在架构层面上是一个非常重大的改变(但没有大改数据模式),我们在 2020 年 3 月至 7 月实现了这一功能。正是有了它,我们才能大幅(10 倍)压缩同步时间。

引介 | Turbo-Geth 客户端:过去与未来

引介 | Turbo-Geth 客户端:过去与未来

在 2020 年 8 月,我们又发现了将状态表示数据从 50 GB 缩减到 10 GB 的方法。

在 2020 年 9 月,「中间哈希值」 功能的粒度做得更细,将计算状态根哈希的速度提升了 4 倍(从 200 ms 缩减到 50 ms),同时将其数据规模从 7 GB 减小到了 2.5 GB.

当前我们正在开发合适的日志索引(indexing of logs)

那么,这一切到底意味着什么呢?

其实,这都不意味着什么,因为当前的实现还没有到达效率的极限。

还有几个 「未解之谜」:

  1. 对久远历史中的状态的默克尔证明还无法高效生成(对近期历史的默克尔证明的生成效率是没问题的。可以通过引入中间哈希值的快照来缓解(这些数据相对来说也不大) (责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容