对各种节点币,大家一般可以在在钱包github文档中、或其他单独发布的地方找到各个系统下的节点搭建指南。这样按照每一步操作下来,一般能够成功启动节点,但这类指南往往是根据模板改写,新手尤其是没接触过linux系统的朋友,往往都需要自己摸索一番,费时费力。
这篇指南不仅会从vps选择、linux系统配置、本地钱包操作等几个方面,来指导大家完成节点搭建步骤,还会解释相关的linux命令、conf文件中各字段的含义等等。让大家不仅学会怎样建节点,还能明白为什么要这样做。
一、建立节点需要从哪几个方面做准备
1.1 VPS
主节点币与纯pow/pos币的最大区别在于,能够通过持币人各自搭建的节点来支持区块网络,而不需要完全依靠开发团队自有的节点资源。但也需要用户建立的节点要有固定的ip地址,并且24小时在线,这就是为什么我们需要用到vps。vps能够以较低的价格提供稳定的平台系统,并且为你节省电费开支,让你无需为硬件担心。vps供应商一般能够提供预装windows或linux两类系统的服务器。为什么我们推荐大家选择linux服务器?因为ubuntu等linux平台有纯命令行的非图形化版本,这样相比windows系统或图形化的linux系统能够节省很多系统资源,有利于降低服务器运行成本,这也就是为什么vps供应商提供的linux服务器一般比windows的租金要便宜很多。
1.2 VPS钱包
有了VPS,我们就需要在VPS的linux系统中安装钱包并运行。这个钱包起的作用,是把自己标识为区块网络中的节点之一,并向全网广播自己的ip地址,让其他钱包同步区块数据的时候,能够通过自身下载数据,这也就是主节点存在的意义。
因为仅仅是起到同步区块网络的作用,VPS上这个钱包的地址(wallet.dat)可以是任意,为了安全起见,我们一般采用随机创建的、里面没有币的空钱包。而为了把这个钱包表示为主节点,我们通过2个关键标志进行识别:节点私钥(masternodeprivkey)和节点ip(externalip)。这两个字段储存在VPS钱包目录的币名.conf文件中,钱包程序运行的时候,通过读取这个配置文件中的节点私钥和节点ip,将节点私钥作为这个节点的唯一识别码、并与节点ip同步向区块网络广播。
1.3 本地钱包
本地钱包起到的作用,一方面是在创建并启动节点的过程中,生成节点地址和节点私钥、完成节点保证金的发送并获取交易编号。另一方面是在节点运行中,监控节点的状态并接收节点奖励。在本地钱包中,是通过masternode.conf文件起到复数主节点的管理作用。这个配置文件中存有各个节点的地址 (externalip)、私钥(masternodeprivkey)、保证金交易号(tx id)、保证金指数(index)。和VPS上钱包中的配置文件相似,通过本地钱包启动节点的时候,各几点私钥作为节点的唯一识别码、与节点ip同步向区块网络广播。而保证金交易号和指数,则作为该节点保证金支付的凭证,在本地钱包中通过区块网络进行验证,如果日后这个交易号支付的保证金被解锁并转出,该节点会因无法验证而自动失效。
二、节点搭建步骤
2.1 VPS端准备工作
这里推荐选用Vultr的vps:
Vultr: High Performance SSD Cloud.
https://www.vultr.com美国的一家云服务器供应商,无论从规模和服务,说世界第一应该不为过。
首先是费用,Vultr采用较为自由的账户余额支付类型,即先充值再建立服务器,然后按小时计费消耗余额中的费用。
然后开始选择服务器物理位置、操作系统和配置等信息。物理位置这里仅作为中国大陆推荐,美国国内的西雅图、迈阿密、硅谷,连线速度尚可接受且不易被墙。服务器类型选择Ubuntu 16.04 x64。配置推荐选择$3.5或$5一个月的服务器,当然如果你只作dstra节点(ipv6),$2.5的也可以。附加选项中,如果计划用ipv6作为节点地址就请勾选enable ipv6。服务器hostname和label可以自由输入,hostname就是你每次登陆vps时候显示的用户名,label只作为识别标签在Vultr的管理页面中出现。服务器选好之后等待安装完成,就可以点进vps的详细页面查看ip地址、用户名和密码。
接下来可以通过xshell、putty等ssh软件登陆服务器进行操作。其中putty是免费软件,xshell绿色版破解版之类的很多,大家自行下载即可,我自己用的是xshell。当然Vultr自己也会提供一个网页形式的登陆页面,但操作较为不便,不能进行复制粘贴等等,这里还是推荐采用ssh访问你的vps。这通过ssh访问vps的操作就不再具体介绍,大家通过xshell或putty、输入上面获取的ip地址、用户名、密码连接vps即可。
进入系统后,在我们介入节点及钱包操作前,还有2项准备工作要做。
2.1.1 建立swap虚拟内存
因为$5服务器只提供1g的物理内存,我们要适量的增加一些虚拟内存来满足节点钱包的运行需求。这里1g物理内存vps的推荐虚拟内存至少设置为2g以上。如果运行多个钱包程序可以适量增加虚拟内存量,推荐最多不超过8g。虚拟内存的设置步骤大家可以参考digital ocean(也是位于北美的一家不错的vps供应商)的这篇指南:
How To Add Swap Space on Ubuntu 16.04 | DigitalOcean
https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04一步一步复制粘贴敲命令就好,原文里建的是1g swap,如果大家要建8g就1改成8。
2.1.2 启用ipv6地址(用ipv4的可跳过)
在Vultr管理页面的settings→ipv6查看自己的ipv6地址段。这里大家会看到2个地址名,network是属于你的网段(4段),address是给出的ipv6地址样例(8段),也就是说在这个网段下任意的地址都可以选用,也就是后4段你可以随意输入。这里给大家科普下,ipv6地址是以冒号分隔,一般为8段,每段4个字符,如果有两个冒号连续出现,就说名这两个冒号之间的段都为0,被省略掉了。举例来说,我的网段是2001:19f0:8001:1bf9::,那么我的ipv6地址可以命名为2001:19f0:8001:1bf9::1001、2001:19f0:8001:1bf9::1002类似这样。
决定好你的ipv6地址之后,我们在根目录下用这个命令进入到linux系统的网卡配置文件中添加地址信息。
nano /etc/network/interfaces
这里你可以直接在ipv6管理页面的configuration examples中参考Vultr为你给出的配置格式。也可以参照我下面给出的(这里我配置了1个ipv4、2个ipv6),并把你的ipv4、ipv6、网关、掩码、dns服务器地址等更改为自己的。
auto lo
iface lo inet loopback
auto ens3
iface ens3 inet static
address 144.202.84.33
netmask 255.255.254.0
gateway 144.202.84.1
dns-nameservers 108.61.10.10
post-up ip route add 169.254.0.0/16 dev ens3
iface ens3 inet6 static
address 2001:19f0:8001:1bf9::1001
netmask 64
dns-nameservers 2001:19f0:300:1704::6
iface ens3 inet6 static
address 2001:19f0:8001:1bf9::1002
netmask 64
dns-nameservers 2001:19f0:300:1704::6
2.2 本地钱包中的准备工作
在将节点钱包安装在vps上之前,我们要在本地钱包中新建一个地址,并在控制台中输入masternode genkey命令,生成一个主节点私钥。然后向这个新建的地址发送30000个币,注意是扣除手续费整30000,不要多也不要少。等待交易确认(至少1个确认),这里的30000币是指节点需要的币数,不同节点币要求的节点币数不同,具体的参考该节点币具体的信息为准,接下来在控制台中输入masternode outputs,获得交易id(很长的一段字符)和index(0或1)。
然后在钱包目录/masternode.conf中分别将节点名称(随便写例如mn01)、节点地址:端口、节点私钥、交易id、index按顺序填入。每个字段中间有一个英文空格,具体可参照masternode.conf中的模板。注意ipv6地址要用尖括号[]括起来:如[2001:19f0:8001:1bf9::1001]:5269,其中5269为节点币指定端口,不同币种选择的专用端口不同,具体参节点币详细信息而定。
2.3 VPS端开启节点钱包(以DSTRA币为例)
1)首先进入执行文件目录
cd /usr/local/bin
2)从dstra的github页面下载linux钱包
wget
https://github.com/DSTRACoin/dstra/releases/download/v1.0.0/dstra2-v1.0.0-linux-amd64.tar.xz3)解压钱包
tar -zxvf dstra2-v1.0.0-linux-amd64.tar.xz
4)将钱包程序设置为可读
chmod +x dstra-cli dstrad dstra-tx
5)建立钱包目录
dstrad -daemon
killall dstrad
6)进入钱包目录编辑配置文件
cd
nano .dstra2/ dstra.conf
编辑好之后按ctrl+x保存,y确认并退出
这个配置文件是节点能否成功启动的关键,要仔细编辑。
下面是我的dstra.conf文件,大家可以参考
rpcuser=user
rpcpassword=password
rpcallowip=127.0.0.1
rpcport=5271
daemon=1
server=1
promode=1
listen=1
masternode=1
staking=0
masternodeprivkey=key
externalip=[2001:19f0:8001:1bf9::1001]:5269
bind=[2001:19f0:8001:1bf9::1001]
logtimestamps=1
为了方便大家理解配置文件,每一行的含义我都解释一下。
rpcuser、rpcpassword:用户名密码可以随便写,没什么用。
rpcallowip:固定为127.0.0.1,这个没商量。
rpcport:本地端口。这个基本上也是随意,但是如果有多钱包运行的情况,就要用不同的。
daemon:钱包进程是否后台运行
server:是否作为服务器
promode:这个啥意思我忘了,不加这句也可以
listen:是否开启外部侦听,做节点填1
mastenode:是否为节点,做节点填1
staking:是否开启pos,做节点填0
masternodeprivkey:你的主节点私钥,注意是在本地钱包masternode genkey生成的那个,不是节点地址。
externalip:外部ip及端口,如果采用ipv6的话,记得加尖括号。外部端口的话每个币种是固定的,dstra固定为5269。注意与前面提到的rpcport本地端口区别。
bind:节点绑定的地址,这句可以不写
logtimestamps:在log文件中记录时间标签,也可以不写。
7)启动钱包
dstrad -datadir=.dstra2
这里的-datadi=是通过读取这个目录中的conf文件来运行钱包,如果只有一个钱包的话,也可以不加后面的条件,只通过
dstrad
来启动节点
8)查询钱包区块运行状态
dstra-cli getinfo
查看钱包是否同步好区块
9)查询钱包主节点信息同步状态
dstra-cli mnsync status
等待RequestedMasternodeAssets显示为999,,说明钱包已经同步好全网的主节点信息,可以在本地钱包上启动了。
2.4 本地钱包启动主节点
重启本地钱包,等待同步完成。在主节点页面已经可以看到我们刚才在本地钱包目录中masternode.conf输入的节点信息,现在节点的状态是missing。点击这个节点,选择启动,节点状态会显示为pre-enable或enable。
2.5 在vps上查看节点状态
dstra-cli masternode status
查看节点状态,如message显示为Masternode successfully started则说明节点启动成功了
2.6 在本地钱包监控节点状态
正常情况下本地钱包的节点页面会显示节点状态为enable,以及激活的时间,最后一次的通讯时间,在交易页面会显示节点地址的收益交易。如果vps钱包断线时间较长的话,本地钱包的状态会变成new start required或missing。如果这种弄情况发生,就要和第一次启动节点的步骤相同,先确保vps钱包正常运行,节点信息同步为999,再从本地钱包重新启动一次节点。
三、linux常用命令
这里列举一些linux系统操作的常用命令,以Ubuntu为例
df -h:查看磁盘空间
free -h:查看swap虚拟内存空间
du -h abc:查看所在目录下abc目录或文件的大小。如abc为根目录下的文件夹,需用.abc表示
cd abc/xyz:进入当前目录的子目录abc下的子目录xyz。直接cd为返回根目录
ls -a:列出所在目录下的所有文件
nano abc:用文本编辑器nano编辑abc文档。在nano中,ctrl+x为退出,选y保存,n不保存。
rm -r abc:删除文件或目录abc
ps -ef:查看进程
killall abc:关闭名为abc的所有进程。如killall dstrad,则关闭所有运行中的dstra钱包
kill -9 123:关闭进程id为123的进程
wget abc:下载链接为abc的文件并保存到当前目录
tar -zxvf abc:用tar解压缩abc文件
chmod +x abc:给当前目录下的abc文件读写权限
以上技术来自好友@tehzoca大佬的无私奉献,希望能帮到大家!