本文使用了四台同网段的主机,第一台做为eosio创世用户使用,另外三台做为出块者节点使用,最终实现了EOS多主机多节点的配置。最后EOSIO创世用户不再出块,由选举出来的各个节点轮流出块,下面将介绍具体的操作流程。
EOS versio: 1.0.8
system: ubuntu1804
四台服务器节点名称与对应IP:
eosio 192.168.154.157
zero 192.168.154.190
two 192.168.154.132
four 192.168.154.114
一、安装EOS
1、获取源码:git clone https://github.com/EOSIO/eos --recursive
2、cd eos
3、sudo vi ./contracts/eosio.system/voting.cpp +80 将21改成3
top_producers.reserve(3);
for ( auto it = idx.cbegin(); it != idx.cend() && top_producers.size() < 3 && 0 < it->total_votes && it->active(); ++it ) {
top_producers.emplace_back( std::pair<eosio::producer_key,uint16_t>({
{it->owner, it->producer_key}, it->location}) );
}
4、编译源码 ./eosio_build.sh
cd build
sudo make install
二、修改配置文件
1、对四台主机都在命令行先运行nodeos与keosd,让其产生各自的配置文件。
配置文件路径一般为:~/.local/share/eosio/nodeos/config/config.ini
2、为三个用户创建三组密钥对 cleos create key
account zero:
Private key: 5KXAsA1nizwEYAaWFA2uBUQqeHNhYA6hZ3dZ3tGb3X6aeW58UXF
Public key: EOS5nquErGx97QiN6m5DspwLU8wNLmVAm78ccpzV6Ht4nfcJhepyj
account two:
Private key: 5JSxqFojAkd2HARaxN5rFniK6oEu8YEZ1EcabSoFMhqxTQphKvF
Public key: EOS5VmHFnwVyiFurmFLw387xRpgXEnyF1yxqZs6JLtVwU1hv9gaEb
account four:
Private key: 5KHmyWSp6dhEoGRxx1wxAK7kSvtAAy7WDmumMLK3UNg6cqTCWYm
Public key: EOS8UXVwDadaS8pLDjQ2vRa6Jaqy5k1rqpMHUNCFqzeDF4KfoguJe
3、修改创世节点配置文件
eosio sign的密钥对(被记录在./tutorials/bios-boot-tutorial/genesis.json的initial_key里面):
EOS8Znrtgwt8TfpmbVpTKvA2oB8Nqey625CLN8bCN3TEbgx86Dsvr
5K463ynhZoCDDa4RDcr63cUwWLTnKqmdcoTKTHBjqoKfv4u5V7p
eosio key的密钥对(被记录在默认的eosio配置文件的signature-provider里面):
EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
注意:要改这俩秘钥的话需要同步更改配置文件和创世节点里对应的密钥对
p2p-server-address = 192.168.154.157:9876
p2p-peer-address = 192.168.154.114:9876
p2p-peer-address = 192.168.154.132:9876
p2p-peer-address = 192.168.154.190:9876
enable-stale-production = true
producer-name = eosio
unloc