共计 5894 个字符,预计需要花费 15 分钟才能阅读完成。
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
其中次要文件为 conflux
和 tethys.toml
, 如果下载的是 windows 包的话, 节点程序为 conflux.exe
另外一种形式是从源码编译节点程序,如果有趣味的话,能够参考此文档自行编译。
次要配置项
在运行节点前须要先筹备好节点配置文件,在下载的程序包里能够找到配置文件,个别主网是 tethys.toml
, 测试网则为 testnet.toml
. 两个配置文件次要区别在于 bootnodes
和 chainId
的配置值不同。开发者也能够到 conflux-rust
Github 仓库的 run 目录
上面查找配置文件。文件名同样为 tethys.toml
或 testnet.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
ortrue
用于管制是否为 rpc HTTP connections 设置 KeepAlivejsonrpc_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
orfalse
如果须要解决 transaction 相干 RPCs 的话,须要同时关上此配置,不然将只能拜访到最近的交易信息persist_block_number_index
:true
orfalse
如果想要通过 blockNumber 查问 block 信息,须要关上此配置executive_trace
:true
orfalse
是否关上 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 的门路,不设置的话会输入到 stdoutlog_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