主页 > 怎么安装imtoken > 硬核丨我们在以太坊上跑了 14 个测试用例 2.0 Medalla 测试网

硬核丨我们在以太坊上跑了 14 个测试用例 2.0 Medalla 测试网

怎么安装imtoken 2023-01-17 22:49:30

拥有少量ETH的普通用户只需要一台4核8G云服务器即可顺利运行信标链和验证节点,但专业的PoS矿池需要更高的配置才能保证更高的出块率。

原标题:《经过测试的以太坊2.0,硬核的那种》

作者:王则书

Prysm 非常出色 ETH2.0 的实现是目前 Medalla 测试网上运行最多的实现。 Prysm采用信标链节点+验证者节点的架构以太坊2.0测试币,前者负责同步区块数据,后者负责签署区块和见证。由于Validator Node可以同时加载多个validator,为了对其可以加载的validator数量以及相关的validator部署步骤有一个定性和定量的了解,我们特地安排了这次测试。

硬核丨我们在以太坊 2.0 Medalla 测试网运行了 14 个测试用例

测试结论

我们分叉了 Medalla 测试网,构建了 HashQuark 自己的 ETH2.0 信标链,进行了两轮测试,总共 14 个测试用例,运行了数十万个 Validator。 Prsym 的实现非常好。对于普通用户想要用少量的 ETH(几十到几百个 Validator)参与以太坊 Staking,一台 4 核 8G 的云服务器就可以顺利运行 Beacon Chain Node 和 Validator。但是在操作过程中遇到的技术问题,不是技术人员的普通用户是无法解决的。

对于运行数万个验证人的专业 PoS 矿池,需要更高的配置来保证高出块率。区块率会随着验证者数量的增加而降低。

我们将在公共测试网 Medalla 上进行下一轮测试,以更接近主网环境。目前以太坊2.0测试币,我们在 Medalla 有近 3000 个验证者在正常运行,占全网的 5%。

测试环境

我们使用geth构建私有ETH1.0网络,和公共测试网Rinkeby或goerli一样,使用'clique'权威证明算法,因为它比PoW需要更少的资源. Prysm 在测试时使用最新版本。

以下测试使用的云主机部署,我们选择通用N型号,CPU平台为Intel/Broadwell。系统使用 Ubuntu 18.04.2 LTS。 geth 版本是 1.9.19-stable,Prysm 版本是 v1.0.0-alpha.24。

第一阶段初步试测计划

我们首先对不同数量的验证者对服务器资源的压力进行简单的测试,以获得基本的了解。

使用最基本的两个ETH1.0节点+两个ETH2.0 Beacon Chain Node+两个Validator Node架构搭建私网作为初步尝试。网络稳定运行一天作为观察期。

测试用例

下表概述了我们的测试:

硬核丨我们在以太坊 2.0 Medalla 测试网运行了 14 个测试用例

表 1

测试指标

在测试过程中,我们收集了每个实例服务器的 CPU、内存、磁盘 IO、网络带宽 IO 等指标。

测试过程

在测试一中,2核4G Beacon Chain Node的内存分阶段增加。运行约6小时后,内存使用率达到100%,导致进程出现。内存不足错误被迫停止,CPU 使用率逐渐增加。如下图所示:

硬核丨我们在以太坊 2.0 Medalla 测试网运行了 14 个测试用例

图一

硬核丨我们在以太坊 2.0 Medalla 测试网运行了 14 个测试用例

图2

之后,我们将信标链节点的配置改进为4核8G。

例2-5中,将validator数量增加1k-10k,以观察服务器CPU、内存、磁盘IO、带宽等指标数据,无压力,无异常。

之后我们在不同地域部署了ETH2.0个节点,观察不同地域的网络互联是否会对各项指标产生较大影响,实验结果均正常。

测试总结

根据私网测试情况,烽火链节点推荐4核8G配置,Validator节点2核4G配置就够了,但是导入key文件时会占用1核CPU,CPU占用率为100%(如下图所示)。为安全起见,建议配置4C6G。

硬核丨我们在以太坊 2.0 Medalla 测试网运行了 14 个测试用例

图 3

另外,在这个阶段的测试中,对磁盘I/O性能和外网带宽要求非常高。偏低,可能是私网的原因,具体对应的性能要求也需要在ETH2.0官方测试网进行测试。

第二阶段对比测试测试计划

第一阶段主要测试不同数量的验证者对服务器资源的压力。验证器是重要的指标。为此,我们进行了对比测试。在同一个网络中,不同区域部署不同数量的验证者进行对比测试。

测试指标

在测试过程中,我们会收集每个实例服务器的 CPU、内存、磁盘 IO、网络带宽 IO、要生成的块数、实际要生成的块数以及见证人。区块数、实际见证的区块数等指标。

测试用例

以下是我们的测试用例:

硬核丨我们在以太坊 2.0 Medalla 测试网运行了 14 个测试用例

表 2

ETH1.0 网络由三台 2 核 4G 云服务器组成,两台在香港,一台在圣保罗。出块时间设置为15s。

我们已经在香港、新加坡、洛杉矶、法兰克福、圣保罗和伦敦六个地区部署了信标链节点和验证者节点。各区域的信标链节点和验证者节点通过内网连接。配置和对应的验证器数量如上所示。

Instance 1和Instance 2都是1k个验证器,区别在于验证器节点的配置,用来比较不同配置的验证器数量对指标的影响。

实例 3、4、5、6 增加了验证者的数量。由于在实践中我们不太可能在一台机器上放置超过 10k 的验证器,因此我们将测试计数停止在 20k。

每个区域的信标链节点与其他节点相连。

测试网参数选择

我们首先在 ETH1.0 网络上部署存款合约,生成所需数量的验证人密钥,并批量发送存款交易。启动 Prysm 时修改了以下参数:

实际上,由于我们提前发送了所有存款交易以满足最早开始时间设置的最小验证人数量,因此整个 ETH2.0 网络在 1599811207 (2020-09-11T16:00:07) +08:00) 开始。

数据统计和测试结果

我们额外部署了一个信标链节点,连接Go到ETH2.0私网查询数据。添加 --slots-per-archive-point=1 参数,持久化每个块的数据,加快查询速度。添加--slots-per-archive-point=1 rpc-max-page-size=1000的参数可以让我们每次查询更多的数据,从而减少请求次数,加快整体速度。