乐趣区

关于区块链:如何运行一个-Conflux-节点

Conflux 是一个基于 PoW(工作量证实) 的齐全去中心化网络,如果想要参加此去中心化网络挖矿,或者领有本人的 RPC 服务须要本人运行一个 node (也称 client)。本文将介绍如何运行一个 Conflux 节点。

Archivenode VS fullnode

Conflux 的节点分为三种类型:归档节点(archivenode),全节点(fullnode),轻节点(lightnode)。不同类型节点的区别在于保留存储的数据量不同,归档节点最全,轻节点起码。当然存储数据越多耗费的零碎硬件资源越多。对于不同类型节点的具体介绍参看这里

通常状况下如果想参加挖矿, 运行一个全节点即可,如果想作为 RPC 服务来应用则须要运行一个 Archivenode. 轻节点则次要用于作为钱包来应用。

机器配置

运行一个 archivenode 的机器资源大抵如下:

  • CPU:4Core
  • 内存:16G
  • 硬盘:200G

fullnode 对机器配置的要求会低一些,如果想参加挖矿出块的话,须要有独自的 显卡

另外: 倡议将零碎的最大文件关上数调高到 10000。个别 Linux 零碎默认为 1024, 不太够用。

如何获取节点程序和配置

Conflux 网络节点程序的获取形式,首推到官网 Github Conflux-rust 仓库的 Release 页面进行下载, 个别间接下载最新 Release 的版本即可。每个 Release 的版本不仅蕴含源代码,还提供 Windows, Mac, Linux 三大平台预编译好的节点程序。

须要留神 的是目前主网和测试网节点程序的版本公布是两条线: 主网个别是 Conflux-vx.x.x, 测试网则为 Conflux-vx.x.x-testnet. 下载程序时须要依据集体的需要抉择正确的版本线。

下载的 zip 包,解压后是一个 run 文件夹,外面蕴含如下内容:

➜  run tree
.
├── conflux  # 节点程序
├── log.yaml # 日志配置文件
├── start.bat # windows 启动脚本
├── start.sh # unix 启动脚本
├── tethys.toml # 主网配置文件
└── throttling.toml # 限流配置文件

0 directories, 6 files

其中次要文件为 confluxtethys.toml, 如果下载的是 windows 包的话, 节点程序为 conflux.exe

另外一种形式是从源码编译节点程序,如果有趣味的话,能够参考此文档自行编译。

次要配置项

在运行节点前须要先筹备好节点配置文件,在下载的程序包里能够找到配置文件,个别主网是 tethys.toml, 测试网则为 testnet.toml. 两个配置文件次要区别在于 bootnodeschainId 的配置值不同。开发者也能够到 conflux-rust Github 仓库的 run 目录 上面查找配置文件。文件名同样为 tethys.tomltestnet.toml

通常状况用户不须要批改任何配置,间接运行启动脚本即可(不想理解配置细节?间接跳到下一章节运行节点)。但如果想关上某些性能或自定义节点某些行为,就须要自行设置一些配置参数,以下为最罕用的一些配置:

节点类型

  • node_type: 用于设置启动节点的类型,可选值为 full (默认值), archive, light

chainId

  • chainId 用于配置节点要连贯的链的 ID,主网为 1029, 测试网为 1 (个别不须要批改)

Miner related

  • mining_address: 节点挖矿处分接管地址,能够配置 hex40 地址或 CIP-37 地址(留神:地址的 network prefix 须要与以后配置的 chainId 统一),如果配置了该项 minint_type 默认为 stratum
  • mining_type: 可选值为 stratum, cpu, disable
  • stratum_listen_address: stratum 地址
  • stratum_port: stratum 端口号
  • stratum_secret: stratum 连贯凭证

RPC related

  • jsonrpc_cors: 用于管制 rpc 域名验证策略,可选值为 none, all, 或者逗号 (无空格) 分隔的域名
  • jsonrpc_http_keep_alive: false or true 用于管制是否为 rpc HTTP connections 设置 KeepAlive
  • jsonrpc_ws_port: websocket rpc 端口号
  • jsonrpc_http_port: http rpc 端口号
  • public_rpc_apis: 对外开放拜访的 rpc api,可选值为 all, safe, cfx, debug, pubsub, test, trace (safe=cfx+pubsub)。个别倡议设置为 safe
  • persist_tx_index: true or false 如果须要解决 transaction 相干 RPCs 的话,须要同时关上此配置,不然将只能拜访到最近的交易信息
  • persist_block_number_index: true or false 如果想要通过 blockNumber 查问 block 信息,须要关上此配置
  • executive_trace: true or false 是否关上 trace EVM execution 性能,如果关上 trace 会被记录到 database 中
  • get_logs_filter_max_epoch_range: Event log 获取办法 cfx_getLogs 调用,对节点性能影响很大,能够通过此选项配置 该办法一次能查问的 epoch 范畴最大值
  • get_logs_filter_max_limit: cfx_getLogs 办法一次查问可能返回 log 数量的最大值

Snapshot

  • additional_maintained_snapshot_count: 用于设置 stable checkpoint 之前 snapshot 须要保留的个数,默认为 0,stable genesis 之前的 snapshot 都会被删掉。如果用户想查问比拟长远的历史状态,须要设置此选项。此选项开始后,磁盘用量同样会减少许多。

directries

  • conflux_data_dir: 数据(block data, state data, node database)的寄存目录
  • block_db_dir: block 数据寄存目录,默认状况会寄存到 conflux_data_dir 指定目录下的 blockchain_db 目录中
  • netconf_dir: 用于管制 network 相干的长久化目录,包含 net_key

Log related

  • log_conf: 用于指定 log 具体配置文件如 log.yaml,配置文件中的设置会笼罩 log_level 设置
  • log_file: 指定 log 的门路,不设置的话会输入到 stdout
  • log_level: 日志打印的级别,可选值为 error, warn, info, debug, trace, off

日志的 log 级别越高,打印的日志越多,响应的会占用贡多的存储空间,也会影响节点的性能.

开发者 (dev) 模式

Conflux-rust 还提供一个开发者 (dev) 模式,该模式下会启动一个单节点链,并默认关上所有的 RPC 办法。此模式节点非常适合智能合约开发者疾速部署和调试合约。
其配置形式如下:

  • bootnodes: 正文掉此配置
  • mode: 将模式选项配置为 dev
  • dev_block_interval_ms: 出块间隔时间, 单位为毫秒(ms)

配置 genesis 账户

在 dev 模式下能够通过一个独自的 genesis_secrets.txt 文件,配置 genesis 账户,该文件中须要一行搁置一个私钥(不带 0x 前缀), 并在配置文件中增加 genesis_secrets 配置项,将值配置为 该文件的门路:

genesis_secrets = './genesis_secrets.txt'

这样节点启动之后,每个账户初始会有 10000,000,000,000,000,000,000 Drip 也就是 1w CFX。

其余

  • net_key: 是一个 256 bit 的私钥,用于生成惟一 node id,该选项如果不调会随机生成,如果设置能够填一个长度为 64 的 hex 字符串
  • tx_pool_size: 交易容许寄存的最大交易数 ( 默认 50W)
  • tx_pool_min_tx_gas_price: 交易池对交易 gasPrice 的最小限度 ( 默认为 1)

对于残缺的配置项,能够间接查看配置文件,其中有所有的可配置项,以及具体的正文介绍.

运行节点

配置文件配好了,就能够通过节点程序,运行节点了。

# 运行启动脚本
$ ./start.sh

如果你在 stdout 或日志文件看到如下内容,示意节点曾经胜利启动了:

2021-04-14T11:54:23.518634+08:00 INFO  main                 network::thr - throttling.initialize: min = 10M, max = 64M, cap = 256M
2021-04-14T11:54:23.519229+08:00 INFO  main                 conflux      -
:'######:::'#######::'##::: ##:'########:'##:::::::'##::::'##:'##::::'##:'##... ##:'##.... ##: ###:: ##: ##.....:: ##::::::: ##:::: ##:. ##::'##::
 ##:::..:: ##:::: ##: ####: ##: ##::::::: ##::::::: ##:::: ##::. ##'##:::
 ##::::::: ##:::: ##: ## ## ##: ######::: ##::::::: ##:::: ##:::. ###::::
 ##::::::: ##:::: ##: ##. ####: ##...:::: ##::::::: ##:::: ##::: ## ##:::
 ##::: ##: ##:::: ##: ##:. ###: ##::::::: ##::::::: ##:::: ##:: ##:. ##::
. ######::. #######:: ##::. ##: ##::::::: ########:. #######:: ##:::. ##:
:......::::.......:::..::::..::..::::::::........:::.......:::..:::::..::
Current Version: 1.1.3-testnet

2021-04-14T11:54:23.519271+08:00 INFO  main                 conflux      - Starting full client...

节点启动后会在 run 目录里新建两个文件夹 blockchain_data, log 用于存储节点数据和日志。

启动一个全新的主网或测试网节点后,它会从网络同步历史区块数据,追赶中的节点处于 catch up 模式,能够从日志看到节点的状态和最新的 epoch 数:

2021-04-16T14:49:11.896942+08:00 INFO  IO Worker #1         cfxcore::syn - Catch-up mode: true, latest epoch: 102120 missing_bodies: 0
2021-04-16T14:49:12.909607+08:00 INFO  IO Worker #3         cfxcore::syn - Catch-up mode: true, latest epoch: 102120 missing_bodies: 0
2021-04-16T14:49:13.922918+08:00 INFO  IO Worker #1         cfxcore::syn - Catch-up mode: true, latest epoch: 102120 missing_bodies: 0
2021-04-16T14:49:14.828910+08:00 INFO  IO Worker #1         cfxcore::syn - Catch-up mode: true, latest epoch: 102180 missing_bodies: 0

你也能够通过 cfx_getStatus 办法获取以后节点的最新 epochNumber,并跟 scan 的最新 epoch 比拟从而判断数据是否曾经同步到了最新。

RPC 服务

节点启动之后,并且关上了 RPC 相干的端口号和配置的话,则钱包,Dapp 能够通过 RPC url 拜访节点. 例如

http://node-ip:12537

Portal 钱包中增加网络,或者 SDK 实例的时候能够应用此地址.

应用 Docker 运行节点

对 Docker 比拟相熟的小伙伴也能够应用 Docker 来运行一个节点。官网提供了各个版本的 Docker image 能够自行 pull image 并运行。

因为节点数据比拟大,所以倡议在运行 image 时,挂载一个数据目录用于寄存节点数据。

目前公布的镜像 tag 有三条 pipeline:

  • x.x.x-mainnet: 主网镜像
  • x.x.x-testnet: 测试网镜像
  • x.x.x: 开发模式镜像,此模式下会主动初始化十个账号,可用于本地疾速开发

常见问题

为什么重启后,同步须要很久?

节点重启后会从上个 checkpoint 开始同步,并从新 replay 区块数据,依据以后间隔上一 checkpoint 的远近,须要期待不同的时长,能力开始从最新区块开始同步.
这是失常景象,个别会等几分钟到十几分钟不等。

为什么节点同步的区块高度卡住,不再增长?

如果发现区块同步卡住,不再增长。可查看日志或终端是否有谬误,如果没有谬误大概率是因为网络起因,可尝试重启节点。

批改配置后,重启节点须要革除数据么?

分状况,有的须要,有的不须要。如果批改的配置波及到数据存储或数据索引,须要清数据重启节点,比方:

  • persist_tx_index
  • executive_trace
  • persist_block_number_index

批改其余配置不须要清数据,间接重启即可.

目前的 archive node 数据有多大?

截止到 2021.11.04 区块数据的压缩包大小为不到 90 G

如何参加挖矿?

挖矿须要应用 GPU 参加,具体可参看这里

如何疾速同步数据,从而运行一个 archive node

可应用 fullnode-node 下载归档节点的数据快照,应用快照的节点数据,能够疾速同步到最新数据。

节点运行 error 日志怎么看?

如果是通过 start.sh 运行的节点,能够在雷同目录中的 stderr.txt 查看谬误起因。

如何运行一个 PoS 节点?

TO BE UPDATE

参考

  • 官网运行节点文档
  • 节点程序源码

原文链接:如何运行一个 Conflux 节点

相干资料库:

  • Conflux 开发材料包
  • conflux-chain github
  • conflux-fans github
退出移动版