如何运行IRISnet验证人节点

本文 IRIS Cat 用通俗易懂的方式为大家解释如何在linux操作系统中运行一个IRISnet的验证人节点,希望对想要成为IRISnet验证人节点的用户有所帮助。本文将用最简单的方式实现,更多详细可行的方式可以参考官网文档

安装IRIShub

(以ubuntu16.04为例)

关于服务器的硬件配置请参考官方文档

下载最新的irishub的releases二进制文件:https://github.com/irisnet/irishub/releases,注意下载mainnet版本。也可以自行进行编译,得到二进制文件 。(目前IRISnet官方已不再提供二进制版本,需要手动编译)

如果在编译中出现类似下列的报错,请更新本地的:libc-dev

go install -tags "netgo ledger" -ldflags " -X github.com/irisnet/irishub/version.GitCommit=a4a738e2 -X github.com/irisnet/irishub/types.InvariantLevel=error -X github.com/irisnet/irishub/types.NetworkType=mainnet" ./cmd/iris
github.com/irisnet/irishub/vendor/github.com/zondax/hid
vendor/github.com/zondax/hid/hid_enabled.go:22:11: fatal error: sys/poll.h: No such file or directory
#include
compilation terminated.
Makefile:94: recipe for target 'install' failed
make: *** [install] Error 2

mkdir -p /mnt/irisnet_bin && cd /mnt/irisnet_bin
//创建一个可执行文件夹
wget https://github.com/irisnet/irishub/releases/download/v0.12.3/irishub_0.12.3_mainnet_linux_amd64.zip
unzip irishub_0.12.3_mainnet_linux_amd64.zip
//如果系统没有unzip执行: apt-get install unzip

解压后看到 iris iriscli iriscd iristool 四个文件,执行:

cp * /usr/local/bin //将四个二进制文件复制到bin可执行path
iris version //验证是否成功

运行irishub全节点

初始化节点

mkidr -p /mnt/irisnet_data && cd /mnt/irisnet_data
//创建一个数据文件夹,下面的命令若不加--home 参数,默认是指/Users/$user/.iris
iris init --moniker=xxx --home=/mnt/irisnet_data --chain-id=irishub
//--monike是你的验证人节点名称,chain-id=irishub代表是IRISnet主网。

更新配置文件

初始化完成后,你会发现/mnt/irisnet_data目录下多出来了两个文件夹,一个是 config 一个是data,我们需要对 config 中的两个文件:genesis.json config.toml 进行替换:
genesis文件中定义了区块链网络的初始状态,而config.toml指定了iris软件模块的重要组成部分

curl https://raw.githubusercontent.com/irisnet/betanet/master/config/genesis.json > genesis.json
//从github下载最新的并替换
curl https://raw.githubusercontent.com/irisnet/betanet/master/config/config.toml > config.toml
从github下载最新的

你也可以随时使用 iris unsafe-reset-all --home= 将 home 目录重置

配置端口

如果你的节点需要与其他节点建立链接,则需要开放 26656 端口;若需要通过rpc端口查询Tendermint提供的信息,则需要开放 26657 端口。意思是说你使用的阿里云或者AWS类的云服务需要开放对应VPC的相关权限,直接配置在主机上的VPS或者物理主机则不需要,启动IRISnet的节点时会自动开启。

运行节点

iris start --home=/mnt/irisnet_data
//检查前端是否有正常的日志输出
iris start --home=/mnt/irisnet_data > log文件地址 &
//在后台运行
iriscli status
//查看节点状态

在启动时看到日志中有类似于:Error dialing seed module=p2p err="auth failure: secrect conn failed: EOF" [email protected]:26656 的错误,请注意修改 config.toml 的相关中的 seed 配置,如更换一些新的社区seed等,在config.toml的121行。

社区节点

https://github.com/irisnet/betanet/blob/master/config/community-peers.md

升级全节点至验证人节点

创建账户

升级验证人节点是指你将自己账户中的token用自委托或者接受他人委托的方式升级为可以出块的验证人节点。

iriscli keys add key_name
//运行后需要你输入至少8位的密码

之后会看到形下面的输出:

NAME: TYPE: ADDRESS: PUBKEY:
tom iriscat iaa1arlugktm7p64uylcmh6w0g5m09ptvklxrmsz9m iap1addwnpepqvlmtpv7tke2k93vlyfpy2sxup93jfulll6r3jty695dkh09tekrz37h9q9
**Important** write this seed phrase in a safe place.
It is the only way to recover your account if you ever forget your password.

blast change tumble toddler rival ordinary chicken dirt physical club few language noise oak moment consider enemy claim elephant cruel people adult peanut garden

在IRISHub中,地址经过bech32编码后将以iaa1为首字节 ,另外公钥将以 iap1为首字节。请牢记最后的24个助记词并将其放在一个安全的地方。

iriscli keys list
//列出本地所有keys

向地址中转入币

运行验证人节点是需要账户中有token的,你需要从其它地方汇入一定数额的iris代币到上面的 iaa开头的地址中。

iriscli bank account iaaxxxxx
//查询账户余额

ERROR: No account with address iaaxxx was found in the state.
Are you sure there has been a transaction involving it?
如果看到类似上这的字段,可能是你的区块还没有同步完成,需要同步完成后才可以看到。

执行验证人操作

在执行验证人操作前需要查询及获取一些相关信息:

iriscli status --node=tcp://localhost:26657
//若 catching_up 字段为 false那么你的节点就是同步的
iris tendermint show-validator --home=/mnt/irisnet_data
//获取到节点的公钥信息,以icp开头,形如icp1zcjduepq9l2svsakh9946n42ljt0lxv0kpwrc4v9c2pnqhn9chnjmlvagans88ltuj

创建验证人节点

iriscli stake create-validator --chain-id=irishub --from= --fee=0.3iris --pubkey= --amount=10iris --moniker={validator-name} --commission-rate=0.1 --commit
//--chain-id= irishub是IRISnet的主网名称
//--from= 是上面 iriscli keys add 所使用的名字,可以使用iriscli keys list确认
//--fee= 指这次操作(创建验证人所需花的手续费)
//--pubkey= 验证人节点的公钥信息
//--amount= 你将这个节点中预存多少个iris
//--moniker= 验证人节点的名称
//--commission-rate= 你接受别人委托的费用 0.1代表 10%
//--commit 可以查看更详细的创建结果

iriscli stake validator {address-validator-operator} --chain-id={chain-id} --node=tcp://localhost:26657
//查询验证人的信息
iriscli status --node=tcp://localhost:26657
//查询验证人节点的运行状况

编辑验证人的信息

iriscli stake edit-validator --chain-id=irishub --from=iriscataccount --moniker="IRIS Cat" --details="Secure and stable IRISnet validator service from China team" --identity="1A221528C4EE864E" --website="https://www.iriscat.co" --fee=0.3iris --commission-rate=0.1
//--chain-id= irisnet主网
//--from= 是上面 iriscli keys add 所使用的名字,可以使用iriscli keys list确认
//--moniker= 验证人节点的名称
//--website= 验证人的官方网站
//--fee= 指这次操作(修改验证人所需花的手续费)
//--commit 可以查看更详细的修改结果
//--commission-rat 你接受别人委托的费用,此处24小时内仅可修改一次。

使用区块链浏览器

一旦验证人节点创建完后,你就可以从区块链浏览器中更直观的查看到一些信息:

https://www.irisplorer.io (官方)
https://iris.bigdipper.live (Forbole)

其它操作

如果你想顺利的运行一个验证人节点,只是像上面的那样创建是远远不够的,因为系统在互联网中随时面临着各种各样的风险,你还需部署哨兵节点以及监控等操作,以保护你的服务器免收DDOS及其它入侵和掉线风险。

更多的高级用法和操作,请参考官方的配置文档:https://github.com/irisnet/irishub/blob/master/docs/zh/get-started/Join-the-Mainnet