EOS

多节点EOS网络搭建

简介

此篇重点讲述如何在docker下部署6个节点的eos网络。使用eos1.4.1,并且再上一篇单节点docker部署的基础上完成。

多节点搭建的过程如下

创世节点搭建->创建钱包->解锁钱包->导入所有的私钥->创建系统账户->部署系统合约->发行SYS Token->授予eosio.msig特权->创建节点账号与普通账号->注册为生产者->配置新的EOS节点->用户投票->新的节点开始轮流出块->移除eosio特权账户

系统账号包含

  • eosio.token 发行和管理token的账户;
  • eosio.msig 多重签名管理的账户;
  • eosio.ram 内存买卖管理的账户;
  • eosio.ramfee 内存买卖收取手续费的账户,按照每笔交易千分之5的费率收取手续费;
  • eosio.stake 管理EOS抵押的账户;
  • eosio.names 靓号账户拍卖管理的账户;
  • eosio.saving 增发EOS临时存放账户,增发总量 5%,其中80%放在此账户,另外 20%再分成25%和75%,分别给eosio.bpay和eosio.vpay;
  • eosio.bpay 矿工获取出块奖励的临时代管账户,增发EOS的1%的25%会先转到这个账户;
  • eosio.vpay 矿工按照获得投票多少比例获取奖励的临时代管账户,增发EOS的1%的75%会先转到这个账户。

系统合约包含

  • eosio.token
  • eosio.msig 此部署后需要授予eosio.msig特权
  • eosio.system 最后部署,并且部署前将合约代码中的21全部修改为5(共两处;主网为21个生产节点)。

第一个EOS节点

首先请看上一篇单节点docker部署,完成docker环境的基本搭建,并使用如下命令创建第一个nodeos(相比上一篇仅仅多开放一个8288端口,是用来组建p2p网络的端口)

再使用上篇一样的命令创建一个keosd的容器:

确认两个容器都再正常运行,然后创建数个密钥。


然后开始:创建钱包->解锁钱包->导入所有的私钥->创建系统账户->部署系统合约->发行SYS Token->授予eosio.msig特权->创建节点账号与普通账号->注册为生产者。这个流程看起来比较长,写成shell脚本执行。如下:

上述的过程省略部分内容,比如钱包的创建、普通用户、分配token等,这些比较简单,可以自己搞定。


将用户注册为生产者之后就可以查看他们得票数了:

然而我们并没有给他投票,这只是确认节点账户被我们正确的添加为生产者。再最后一部我们再给节点投票,让其开始工作。

创建生产节点

将用户注册为生产者之后,重新创建两新的docker容器为我们producer.cyaproducer.cyb账号使用,其他几个账号也是同样的方法,不过我这里会将其他生产者部署到别的机器上,但是基本方法都是雷同的,这里就使用这两个作为例子:

其他生产节点的配置

在这里我将再同一个docker内新增两个eos节点容器nodeos2nodeos3

节点 docker内部网络 p2p-port RPC-port 绑定账户
nodeos1 172.18.0.11 0.0.0.0:8288 0.0.0.0:8888 eosio
nodeos2 172.18.0.12 0.0.0.0:8289 0.0.0.0:8889 producer.cya
nodeos3 172.18.0.13 0.0.0.0:8290 0.0.0.0:8890 producer.cyb
|
|

其他节点雷同。
创建后这两个容器处于待机中,先将这两个容器关闭,让我们先配置对应的config.ini,以下是nodeos2的配置文件(依然是除去默认配置之外的修改项),nodeos3的配置雷同。


一定要将p2p-peer-address配正确,再同一个的服务器内docker容器连接容器需要使用docker网络的IP,比如下图nodeos1172.18.0.11,但是不适用与两台不同的机器:

配置完节点的config.ini然后就可以启动容器了,如果启动成功的话,打印容器的日志能看到节点再同步之前的区块,而新的区块依然是由eosio生产的:

其他的几个节点也是雷同的方法。

用户选举投票

实质上之前我们已经完成了多节点网络的搭建,只不过我们设定的生产者并没有开始生产区块,要让特定的节点生产区块必须要全网的投票达到一定数量,此规则这里不再赘述,直接开始投票;可以使用节点用户为自己投票,也可以使用其他账号进行不同的投票:

我们发行的tonken总量为10亿,按照要求需要至少15%的投票主网才算成功,及1.5亿的token投票;上述一个账户为0.2亿抵押的token,按照上边的多创建几个账户并进行投票:

已经投票的token总量可以使用以下命令查看:

其中total_activated_stake除10000及为已经投票的token数量,再这里发现一个问题:如果是eosio账户直接转账出来的token进行抵押投票不会改变此字段,但是会影响投票比率。

节点得票比例:

当达到15%的要求之后,我们新部署的节点就开始替代eosio交替生产区块了:

eosio账户权限消除

到这里多节点网络已经是完整的搭建了,但是还是有一点瑕疵,存在eosio特权账户,作为区块链网络这种特权不应该存在,所以需要将此账户的控制权限移除。比如eosio、eosio.token等等,按照官网的介绍使用以下命令移除密钥:

当然自己的测试环境还是保留此类账户控制权比较好。

.
.
.
.
.
.
【本文章出自NM1024.com,转载请注明作者出处。】

2 thoughts on “多节点EOS网络搭建”

  1. 按照教程的方式,创建了3个节点,但是 Scaled votes 为0.5 不知道为啥 不会生产区块

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据