图解以太坊 Turbo-Geth 客户端:性能是如何「天方夜谭」般提升?

以太坊爱好者 2020-10-21 09:00:18

Turbo-Geth 贡献者 Alexey Akhunov 解释了两项重要改进:一是将数据库模式从树式的改成扁平式的;二是阶段式同步方法。

原文标题:《引介 | Turbo-Geth 客户端:如何实现性能改进》
撰文:Alexey Akhunov,Turbo-Geth 贡献者

本文为 Turbo-Geth 项目的贡献者 Alexey Akhunov 发表的幻灯片。近期,Turbo-Geth 客户端因为出色的同步性能而备受关注。在这份名为 「too good to be true」意即 「好到不像是真的」或者说「美如天方夜谭」)的 PPT 中,Alexey 解释了 Turbo-Geth 最重要的两大改进。一是将数据库模式从树式的改成扁平式的;因为树式的数据库虽然有助于快速计算出状态根,却无助于 EVM 快速访问状态对象;而使用扁平式的数据库,再引入一种 「中间哈希值」的数据,就可以很好地满足 EVM 快速访问状态以及快速计算状态根的两大需要;二是阶段式同步(staged sync)方法,该方法将对一个区块的处理分解为特定的几个步骤,然后对连续的多个区块处理完同一个步骤之后,再从头对该批区块处理下一个步骤;这样做其实等于是在将数据插入到数据库之前先完成了预排序工作;另一方面,这也使得客户端的工作流程模块化了,允许我们针对性地优化性能。感兴趣的读者可以从文末的超链接中了解更多。

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

引介 | Turbo-Geth 客户端:如何实现性能改进

来源链接:github.com

相关资讯Relevent