声明:本文所描述代码非官方代码,依托于tendermint v0.34.24版本,目前测试下来兼容更高版本的tendermint,但是并不保证与所有项目均兼容。所给命令行的目的是简化测试过程中,部署配置文件的过程。
代码下载
链接:https://pan.baidu.com/s/1pQapjhGyZK90bcwhvvcWzQ?pwd=xxxx
提取码:xxxx
代码配置
上述下载文件名为init_config.go,将该文件加入tendermint/cmd/tendermint/commands目录下。
然后,修改tendermint/cmd/tendermint中的main.go文件,在main函数的rootCmd.AddCommand的参数列表中加入cmd.InitLogFilesCmd参数,如下图所示。
使用方法
编译后,使用命令tendermint initConfig -h
可以查看帮助列表。
使用如下命令配置四个节点:
tendermint initConfig --p2pIP 192.168.128.129:26656,192.168.128.130:26656,192.168.128.131:26656,192.168.128.132:26656 --rpcIP 192.168.128.129:26657,192.168.128.130:26657,192.168.128.131:26657,192.168.128.132:26657
参数说明:
p2pIP:节点P2P端口的IP地址与端口号。提供多少ip地址,就初始化多少节点以及节点的配置文件。IP地址间用英文逗号隔开,IP地址必须为数字格式,不可以使用节点映射。
rpcIP:节点RPC端口的IP地址与端口号。rpcIP的ip地址数量应该与p2p相同。
例如,上述用例中,p2pIP的第一个ip地址为192.168.128.129:26656,表示第一个节点使用192.168.128.129:26656作为p2p的端口。rpcIP的第一个ip地址为192.168.128.129:26657,表明第一个节点使用192.168.128.129:26657作为rpc的端口。
可选参数
initConfig命令除了提供端口号的配置外,还提供了一键配置config文件中其它参数的方法。
参数名 | 参数类型 | 参数介绍 | 默认值 |
---|---|---|---|
o | string | 配置文件的输出位置,默认在当前文件夹下创建一个mytestnet文件夹作为输出路径。 | “./mytestnet” |
allow-empty | bool | 共识模块是否允许每过一段时间产生空区块。 | false |
p2p-rate | int64 | p2p通信的带宽限制,如果为负数,则使用默认值5120000 (5MB/s)。 | -1 |
timeout-propose | string | propose阶段的超时时间 | “3s” |
timeout-prevote | string | prevote阶段的超时时间 | “1s” |
timeout-precommit | string | precommit阶段的超时时间 | “1s” |
timeout-commit | string | commit阶段的超时时间 | “1s” |
allow-broadcast | bool | mempool模块的broadcast功能是否开启 | true |
allow-recheck | bool | mempool模块的recheck功能是否开启 | false |
mempool-size | int | mempool中交易的数量(mempool的CacheSize默认被配置为mempool-size的50倍) | 10000 |
max-block-size | int | 区块的最大大小,单位为MB,该参数不在config文件中,而在创世区块中(区块越大,单链的吞吐量相应的就越大,但是区块大小不宜过大,否则会对网络传输产生压力)。 | 5 |
举例说明:
tendermint initConfig \
--p2pIP 192.168.128.129:26656,192.168.128.130:26656,192.168.128.131:26656,192.168.128.132:26656 \
--rpcIP 192.168.128.129:26657,192.168.128.130:26657,192.168.128.131:26657,192.168.128.132:26657 \
--o ~/mytestnet \
--allow-empty false \
--p2p-rate 51200000 \
--allow-broadcast false \
--mempool-size 20000 \
--max-block-size 8
上述命令创建了四个节点,文件的输出路径是根目录下的mytestnet文件夹中,不允许共识模块产生空区块,网络带宽限制为50MB,mempool的broadcast功能关闭,mempool的容量被设置为20000个交易,区块的大小被限制在8MB以内。