BinanceSmartChain最初作为go-ethereum的分叉,目的是提升互操作性、可编程性以及与以太坊智能合约的兼容性。BinanceSmartChain成功的同时也带来了可扩展性问题,这一问题可以追溯到其起源时期。
运行BSC存档节点的关键问题之一是对本地存储数据高达约17TB的需求。这种笨重的存储量导致更多的时间来index或压缩数据,同时还降低了Geth客户端的请求数据性能。Geth(GoEthereum)是一个命令行界面,用于与EVM同时运行。
EVM兼容性是BSC的主要优势之一,它具备支持大量现有以太坊工具、提升区块速度和低成本等特点。我们需要创建一个更高效的存储机制以保障BSC的最佳性能,同时需确保Geth平稳运行。
关于Erigon解决方案
Erigon最初开始于turbo-geth和Geth的改进,而后因快速快演变成与Geth截然不同的产品有了新命名。
Ankr正在实现基于https://github.com/ledgerwatch/erigon的BSCErigon开源客户端,从而解决BSC中存在的诸多问题。Erigon客户端旨在通过以下几个关键方式提高数据存储效率和提高区块链性能:
Erigon采用模块化设计,支持客户端的并行开发
与state交互时,数据库的读/写操作更少
在存储引擎之外对数据进行预处理,显著提高了数据库效率
通过同一系列同时进行,实现整体更快的同步
Erigon的优势
与Geth和其他现有的以太坊客户端相比,Erigon客户端的改进具有显著的优势:
磁盘存储空间大幅减少:存档节点为1.2TB,修剪节点为430GB
同步速度更快:每秒大于10块
引导归档节点更快:低于3天内完成
崩溃恢复能力更强:Erigon数据库可承受电力故障
更模块化:P2P和Web3RPC服务可以作为组件运行
Erigon解决方案对BSC和Ankr是互利的。Erigon开源客户端意味着BSC节点用户可以自由使用,并能够为Ankr协议和多链RPC网络贡献算力。凭借快速和可靠的BSC节点网络,Ankr将能够更好地为BSC协议和dApp开发人员提供服务。
Ankr的困难和挑战
Erigon是一个备受期待的解决方案。然而,由于BSC的共识机制和分块处理方式,Erigon与BSC并不完全兼容。因此,Ankr长期与BSC团队合作,力求解决关键迁移挑战并将Erigon功能合并到BSC。在从BSCGeth到Erigon的整个迁移过程中,优先确保所有节点的兼容性。
从BSC节点迁移的特性:
Genesis块和链配置——Erigon将Genesis的所有信息存储在源本身而不是JSON文件中,并且在运行节点之前不需要预先初始化区块链状态。这一点十分重要,但意味着需要对源文件中所有可能提供额外的支持。此外,它还通过提供具有BSC值的链标志来帮助运行节点。
Parlia共识引擎——BSC使用自己的共识引擎Parlia,而Erigon的共识接口与Geth不完全兼容。因此,Ankr决定修改接口促使两个系统兼容,避免牺牲与块处理的兼容性,这使得合并Erigon变得更加容易。
BSC的兼容系统调用——Erigon已经支持系统调用,但由于被调用者和Gas限制的差异,它们不能与BSC的系统调用兼容。BSC的关键区别为每个系统交易都需要一个中间块终结,而这是Erigon不支持的。此外,如果多个系统调用修改相同的状态对象可能会导致Gas计算问题。
分叉——我们支持所有的BSC分叉,包括Ramanujan、Niels、MirrorSync和Bruno.
块处理——BSC块处理方法相对棘手,它将系统交易和收据附加到每个块执行中,区块修改同时会改变交易、收据根和状态根,这也是Erigon的块处理部分改变的原因,即Erigon共识引擎的条款只能验证但不能修改状态。
系统合约——所有BSC系统合约都有一个传输层来支持,以促进BNB交叉通信功能。
Erigon的里程碑
在第一个BSC?Erigon客户端中,我们决定不启用Validator模式,让它作为一个完整的区块链节点工作。目前,Erigon不支持记帐以避免节点中断,未来Erigon更新后将支持此功能。
第一个里程碑是确保Erigon解决方案在BSC全节点(主网和测试网)的运行中没有错误,当全节点功能完成后,我们将验证Erigon是否与BSC验证器节点兼容。
Erigon对BSC的改进
提高速度和性能——Erigon提升了MDBX存储库速度。MDBX是最快、最轻量级的嵌入式数据库之一,Erigon减小了数据库大小并提高BSC性能。当然,MDBX有一些局限性,如它仅支持231文件系统页面进行寻址,并将数据库大小限制为8TB,解决办法是通过增加FS上的页面大小来修复。目前,使用Erigon和MDBX驱动程序在数据库中存储一个完整的存档BSC节点大约需要2.5TB,与RocksDB或LevelDB等数据库相比,MDBX驱动程序提高了约30%的性能。
新的RPC守护进程功能——Erigon的主要功能之一是RPC守护进程。通过从节点中删除所有RPC功能,我们可以在节点和RPC守护进程之间创建一个独立的传输函数,让开发人员使用远程数据库功能扩展他们的RPC。这种机制十分强大,只需设置一个Erigon全同步模式并增加其可扩展性,就可以从节点构建集群。
提升同步过程——同步节点是一个耗时且艰巨的过程,Erigon通过高效地数据处理能力和减少数据库覆盖来加快了这一过程。分阶段同步的主旨是将同步过程分成15个部分,例如下载报头或主体、块执行或状态验证。这种划分通过使用批处理和共享缓存来利用设备的所有资源,每个阶段后都会删除所有中间缓存,从而节省磁盘空间和IO操作。大多数阶段都允许进行特定的优化,这些优化很难在没有分阶段同步架构情况下实现。最重的阶段仍然是块执行,由于交易本身的严格顺序性导致很难并行化,但所有其他部分对同步过程的影响被最小化。
基准测试和结果
在基准测试中,ErigonBSC客户端表现非常出色。以下是我们测试流程的简要概述,您也可以在Ankr官网Docs——节点——ErigonBSC?测试网存档节点的初步测试了解详情
硬件规格
我们使用了DigitalOcean的一个低于平均水平的服务器来测试Erigon在BSC中的出色性能:
·?处理器:4vCPU
·?内存:8GB
·?操作系统:160GB
·?存储:1TGB磁盘用于BSC测试网存档数据
同步过程
测试网同步过程从开始。
一路进行到Completedonblock=14778509。
整个同步过程耗时25小时10分钟。值得关注的是Erigon仅使用了单个CPU处理器,这为未来改进留下了很大空间。只有1个CPU使得加速变得非常具有挑战性,因为块和交易本质上是连续而非并行的。我们估计实际过程可能比我们的试验提升4-5倍,这明显优于目前基于Go-Ethereum的客户端。
基准测试
Ankr团队使用ethspam和versus来测试Erigon客户端的性能,分别对100、200和300个并发请求进行测试,错误率为0%;在与相同服务器进行的100个GethGoreli测试网进行比较,GethGorelitestnet测试遇到了6.75%的连接错误,测试结果Erigon显著优异。
Erigon100个并发请求
Erigon200个并发请求
Erigon300个并发请求
GETHGoreli测试网100个并发请求
在完全相同规格的DigitalOcean服务器进行类似的基准测试,结果显示,tp95和tp99的性能较差,连接错误为6.75%。
Erigon下一步规划
Ankr现在有更多的改进机会,我们将与BSC团队持续沟通以规划和调整我们未来的工作内容。首先,我们将优先进行以下事项。您可以关注我们的Github了解更多Erigon相关信息和测试结果。
利用多核CPU不断提高BSCErigon性能
启用验证器模式
BSC2.0
BinanceSmartChain生态系统优势
Ankr与BSC生态系统有着密切的关系,我们坚信这个新项目非常有利于BSC社区和应用程序。
Ankr通过我们的bscrpc.com公共RPC进一步提升了BSC开发人员的能力。这种开放、免费的RPC允许任何人对链发出请求并接收响应,就像他们自己运行一个完整的BSC节点。
Ankr?产品主管JoshNeuroth认为:“随着DeFi、NFT和游戏等新兴市场大量构建在BSC上,BSC上的交易量达到了历史新高。低Gas和EVM兼容性使其备受欢迎,然而这是有代价的,即节点的跟进步履维艰。通过Ankr?开源我们对Erigon实现了自定义,我们可以帮助节点提供商保持区块高度,确保?BSC?社区持续繁荣。”
BSC生态协调员Samy也表示:“我们很自豪BSC作为一个开放协议和社区驱动的生态系统正在实现崇高的目标。”
BSC项目和用户将从网络升级中收益良多。随着BSC更快、更高效的发展,它将能够处理更大流量和交易,这意味着新项目将建立在更高度进化的BSC上,开发者可以更快速构建BSCdApps,加密技术的各个领域都有拥有BSC的身影。
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。