本文使用了四台同网段的主机,第一台做为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
unlock-timeout = 90000
plugin = eosio::producer_plugin
plugin = eosio::chain_api_plugin
plugin = eosio::chain_plugin
plugin = eosio::http_plugin
plugin = eosio::http_client_plugin
plugin = eosio::bnet_plugin
plugin = eosio::net_plugin
plugin = eosio::net_api_plugin
plugin = eosio::history_api_plugin
plugin = eosio::history_plugin 

4、修改其他节点配置文件

p2p-server-address = 192.168.154.132:9876
p2p-peer-address = 192.168.154.114:9876
p2p-peer-address = 192.168.154.157:9876
p2p-peer-address = 192.168.154.190:9876
enable-stale-production = false
producer-name = two
signature-provider = EOS5VmHFnwVyiFurmFLw387xRpgXEnyF1yxqZs6JLtVwU1hv9gaEb=KEY:5JSxqFojAkd2HARaxN5rFniK6oEu8YEZ1EcabSoFMhqxTQphKvF
plugin = eosio::chain_api_plugin
plugin = eosio::history_api_plugin
plugin = eosio::chain_plugin
plugin = eosio::history_plugin
plugin = eosio::net_plugin
plugin = eosio::net_api_plugin

注意:不同的节点p2p-server-address和signature-provider需要改动,对应不同用户的IP和秘钥

三、创建钱包,导入秘钥

1、创建并解锁钱包

bee2@ubuntu:~/eos$ cleos wallet create
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5HwJAUXcgD1veDewfEAJAj2MGmfYfCc19Pu5srsnMLhCvFpRQGT"
bee2@ubuntu:~/eos$ cleos wallet unlock --password PW5HwJAUXcgD1veDewfEAJAj2MGmfYfCc19Pu5srsnMLhCvFpRQGT

出现解锁成功或者Error 3120007: Already unlocked字样即可

2、导入三个普通用户和创世节点eosio(eosio key ,eosio sign)的秘钥:

cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 wallet import 5KXAsA1nizwEYAaWFA2uBUQqeHNhYA6hZ3dZ3tGb3X6aeW58UXF
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 wallet import 5JSxqFojAkd2HARaxN5rFniK6oEu8YEZ1EcabSoFMhqxTQphKvF
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 wallet import 5KHmyWSp6dhEoGRxx1wxAK7kSvtAAy7WDmumMLK3UNg6cqTCWYm
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 wallet import 5K463ynhZoCDDa4RDcr63cUwWLTnKqmdcoTKTHBjqoKfv4u5V7p

注意:最后两个秘钥必须导入,不然会提示各种权限不足的错误

四、创建九个系统账户

这九个系统用户的名称及其作用如下说明:

eosio.bpay:矿工获取出块奖励的临时代管账户,增发EOS的1%的25%会先转到这个账户;

eosio.msig:多重签名管理的账户;

eosio.names:靓号账户拍卖管理的账户;

eosio.ram:内存买卖管理的账户;

eosio.ramfee:内存买卖收取手续费的账户,按照每笔交易千分之5的费率收取手续费;

eosio.saving:增发EOS临时存放账户,增发总量 5%,其中80%放在此账户,另外 20%再分成25%和75%,分别给eosio.bpay和eosio.vpay;

eosio.stake:管理EOS抵押的账户;

eosio.token:发行和管理token的账户;

eosio.vpay:矿工按照获得投票多少比例获取奖励的临时代管账户,增发EOS的1%的75%会先转到这个账户.

cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 create account eosio eosio.bpay EOS8Znrtgwt8TfpmbVpTKvA2oB8Nqey625CLN8bCN3TEbgx86Dsvr
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 create account eosio eosio.msig EOS8Znrtgwt8TfpmbVpTKvA2oB8Nqey625CLN8bCN3TEbgx86Dsvr
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 create account eosio eosio.names EOS8Znrtgwt8TfpmbVpTKvA2oB8Nqey625CLN8bCN3TEbgx86Dsvr
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 create account eosio eosio.ram  EOS8Znrtgwt8TfpmbVpTKvA2oB8Nqey625CLN8bCN3TEbgx86Dsvr
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 create account eosio eosio.ramfee EOS8Znrtgwt8TfpmbVpTKvA2oB8Nqey625CLN8bCN3TEbgx86Dsvr
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 create account eosio eosio.saving EOS8Znrtgwt8TfpmbVpTKvA2oB8Nqey625CLN8bCN3TEbgx86Dsvr
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 create account eosio eosio.stake EOS8Znrtgwt8TfpmbVpTKvA2oB8Nqey625CLN8bCN3TEbgx86Dsvr
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 create account eosio eosio.token EOS8Znrtgwt8TfpmbVpTKvA2oB8Nqey625CLN8bCN3TEbgx86Dsvr
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 create account eosio eosio.vpay EOS8Znrtgwt8TfpmbVpTKvA2oB8Nqey625CLN8bCN3TEbgx86Dsvr

五、加载四大合约,发行代币

cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 set contract eosio.token ~/eos/build/contracts/eosio.token/
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 set contract eosio.msig ~/eos/build/contracts/eosio.msig/
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 push action eosio.token create '["eosio", "1000000000.0000 SYS"]' -p eosio.token
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888  push action eosio.token issue '["eosio", "1000000000.0000 SYS", "memo"]' -p eosio
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 set contract eosio ~/eos/build/contracts/eosio.system/
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 push action eosio setpriv '["eosio.msig", 1]' -p eosio@active

六、创建普通用户

加载了eosio.system之后就不能使用create account命令了,只能用system newaccount创建账户

cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 system newaccount --transfer eosio zero EOS5nquErGx97QiN6m5DspwLU8wNLmVAm78ccpzV6Ht4nfcJhepyj --stake-net "100000000.0000 SYS" --stake-cpu "100000000.0000 SYS" --buy-ram "20000.0000 SYS"
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 transfer eosio zero "20000.0000 SYS"
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 system newaccount --transfer eosio two EOS5VmHFnwVyiFurmFLw387xRpgXEnyF1yxqZs6JLtVwU1hv9gaEb --stake-net "100000000.0000 SYS" --stake-cpu "100000000.0000 SYS" --buy-ram "20000.0000 SYS"
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 transfer eosio two "20000.0000 SYS"
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 system newaccount --transfer eosio four EOS8UXVwDadaS8pLDjQ2vRa6Jaqy5k1rqpMHUNCFqzeDF4KfoguJe --stake-net "100000000.0000 SYS" --stake-cpu "100000000.0000 SYS" --buy-ram "20000.0000 SYS"
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 transfer eosio four "20000.0000 SYS"

七、注册节点候选人

cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888  system regproducer zero EOS5nquErGx97QiN6m5DspwLU8wNLmVAm78ccpzV6Ht4nfcJhepyj
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888  system regproducer two EOS5VmHFnwVyiFurmFLw387xRpgXEnyF1yxqZs6JLtVwU1hv9gaEb
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888  system regproducer four EOS8UXVwDadaS8pLDjQ2vRa6Jaqy5k1rqpMHUNCFqzeDF4KfoguJe

可以用下列命令查看节点候选人:

cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 system listproducers

八、给创建的账户转账

cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 push action eosio.token transfer '["eosio", "zero","1000.0000 SYS","vote"]' -p eosio
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 push action eosio.token transfer '["eosio", "two","1000.0000 SYS","vote"]' -p eosio
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 push action eosio.token transfer '["eosio", "four","1000.0000 SYS","vote"]' -p eosio

九、使用命令进行投票(自己给自己投票)

所有代币的15%进行投票后eosio会停止出块,主网会自动启动。在这里我们的代币数据数量总共是10亿,那么我们的主网启动需要1.5亿质押的代币进行投票后才能启动,质押的代币计算方式:staked = cpu + net:

cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 system voteproducer prods zero zero
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 system voteproducer prods two two
cleos --wallet-url http://127.0.0.1:8900 --url http://192.168.154.157:8888 system voteproducer prods four four

十、结尾

过一段时间后就能看到节点轮流产块,创世节点只需同步块,如下所示

本文是在学习了q_776355102的博客后做的简单总结,有诸多详细命令请参考原文:

https://blog.csdn.net/weixin_39842528/article/details/81034018

十一、更改节点出块数目

按上面的步骤可以让节点轮流出块了,但是每个节点出块个数是12,而不是像官网白皮书说的那样是6个,修改下相关代码就可以让节点出块个数变为6。

执行指令:vi libraries/chain/include/eosio/chain/config.hpp +99

//const static int producer_repetitions = 12;
const static int producer_repetitions = 6;

保存退出之后编译下源码,在按照上面的步骤再来一遍就可以看到如下界面:

EOS多节点环境配置(搭建自己的EOS主网)相关推荐

  1. Hadoop集群环境配置搭建

    一.简单介绍 Hadoop最早诞生于Cutting于1998年左右开发的一个全文文本搜索引擎 Lucene,这个搜索引擎在2001年成为Apache基金会的一个子项目,也是 ElasticSearch ...

  2. Android可视化环境配置搭建方法

    2019独角兽企业重金招聘Python工程师标准>>> 工具 个人电脑一台 JDK1.6 下载网址: http://java.sun.com/javase/downloads/ind ...

  3. 安卓 php 环境,初尝PFA ----- PHP 在 Android 环境配置搭建

    能用php开发android上的程序应该是所有phper所期待的事,现在愿望有可能即将实现了.PFA (PHP For Android)加上ASE 就可以实现php调用android上的一些功能达到开 ...

  4. 【钱包·RPC搭建】以太坊主网节点搭建

    01. 搭建节点需要什么配置 推荐配置: CPU: 8 core 内存: 16G 硬盘: 500G SSD (固态硬盘) 网络: 5M+ 最低配置: CPU: 4 core 内存: 8G 硬盘: 50 ...

  5. Hadoop的环境配置——搭建一个主机hadoop102,两个从机hadoop103,hadoop104,并运行分布式词频统计

    本文是跟着B站上的视频实现的,链接如下: https://www.bilibili.com/video/BV1Qp4y1n7EN?p=18 Hadoop运行环境搭建 重来3遍是正常的,这篇针对的是怎么 ...

  6. dpdk 的环境配置搭建

    文章目录 安装的dpdk环境 1 给vmware 添加两块网卡 修改网卡的配置信息 修改ubuntu系统的启动参数 编译运行dpdk 设置DPDK的环境变量 再次运行 /usertools/dpdk- ...

  7. YOLOV8做实例分割(环境配置+搭建模型+数据集制作+训练+预测全套)

    目录 一.安装Anaconda3 1.下载 2.安装 3.验证 二.搭建windows上yolov8环境 1.cuda+pytorch+python版本选择 ①查看自己电脑的cuda型号 ②显卡驱动版 ...

  8. 真传x深度学习第一课:环境配置搭建

    真传x课程的配置笔记,基本参考高老师的01_实验docx, 机器ubuntu16.04, 默认python2.7 之前常用的python版本也是2.7 01 修改默认python为python3 参考 ...

  9. IOS越狱插件开发一(环境配置搭建)

    开发工具就不多说了,推荐使用iOSOpenDev,之前有Theos用来开发,但我直接忽略了,谈繁琐了. 1.下载地址 http://iosopendev.com/download/ 2. 安装的过程中 ...

最新文章

  1. js提取url参数的几种方法。(搜集)
  2. 【项目管理】ITTO-相关方管理
  3. 简述hdfs工作原理_hdfs工作机制和原理 简述hdfs的原理
  4. 国内手机号正则表达式
  5. MaxCompute中如何通过logview诊断慢作业
  6. text 两端对齐 小程序_leetcode 68 文本左右对齐
  7. AutoEncoder概念【常用】
  8. 5 年迭代 5 次,抖音基于 Flink 的推荐系统演进历程
  9. 怎么批量删除 Excel 中第一个工作表或者其它指定的工作表?
  10. Unicode编码详解(一):Unicode简介及其分类
  11. 华为认证云服务架构专家正式发布!
  12. 详解clickhouse分区目录的合并过程
  13. 如何申请百度地图用户Key
  14. 云测平台iOS环境搭建
  15. 数据分析-如何搭建业务指标体系
  16. Error processing line 1 of D:\**\anaconda3\lib\site-packages\matplotlib-3.3.2-py3.8-nspkg.pth:
  17. 关于Office Professional Plus 2013 VOL 和Office Professional Plus 2013 - DVD的区别
  18. linux cads
  19. ros插件php,ROS软路由终于可以拨号上网了 - 服务器技术 - PHP技术交流,php blog,ph......
  20. Flutter 流式布局组件

热门文章

  1. 小程序流量全面爆发,谁会湾道超车
  2. WPF学习日记(二)——XAML语法
  3. 巴菲特价值投资的六项法则
  4. Task03 复杂一点的查询
  5. ArcMap中获取要素的Extent值
  6. 计算机基础知识形考 客观题,2015-电大形考-计算机应用基础---Windows-7操作系统-- -客观题(答案).pdf...
  7. 怎样防止苹果系统更新_【干货】安卓系统防止更新时丢失账号
  8. java10大低级错误,你肯定也犯过!
  9. 卷积神经网络特征融合,两个神经网络同时训练
  10. OpenWrt之IPv6设置详解