Bitcoin Forum
July 01, 2024, 01:25:54 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: 手把手教你快速建立MN节点  (Read 261 times)
lucky268 (OP)
Newbie
*
Offline Offline

Activity: 68
Merit: 0


View Profile
October 17, 2018, 02:54:57 AM
Last edit: October 17, 2018, 03:06:43 AM by lucky268
 #1

对各种节点币,大家一般可以在在钱包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.xz

3)解压钱包
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大佬的无私奉献,希望能帮到大家!


JWKY
Member
**
Offline Offline

Activity: 602
Merit: 13


View Profile
November 09, 2018, 02:39:55 AM
 #2

这是一个相当详细的建立主节点指南,任何新手应该可以获益良多。 Shocked
不懂地方大家可以留言询问帖主

●⚫ ▬▬▬▬▬ Bitcoin RM(First smart fork of Bitcoin,100% Proof-of-Work) ▬▬▬▬▬ ⚫●
▬ ● ▬   Bitcoin RM is NOW LIVE, Pool mining, ECI apply now HERE   ▬ ● ▬
●⚫ ▬▬▬ Website | ANN | Discord | GitHub | Reddit | Youtube | Medium | Facebook | Twitter | Pool ▬▬▬ ⚫●
Outlander
Legendary
*
Offline Offline

Activity: 1218
Merit: 1000



View Profile
November 09, 2018, 03:04:25 AM
 #3

谢谢分享,这份材料非常详细,很适合做收藏研究。大部分可以挖矿的项目,都会提供搭建节点的教程,初学者可以借鉴一下。

moxl
Legendary
*
Offline Offline

Activity: 1246
Merit: 1000


View Profile
November 09, 2018, 06:58:00 AM
 #4

不错,大佬辛苦了,熊市还这么研究技术,实在是难得 Grin
lucky268 (OP)
Newbie
*
Offline Offline

Activity: 68
Merit: 0


View Profile
November 21, 2018, 02:20:26 PM
 #5

纯技术探讨,欢迎指正.
opdinc
Newbie
*
Offline Offline

Activity: 55
Merit: 0


View Profile
November 22, 2018, 08:05:05 AM
 #6

节点币最近sem和loki貌似很稳
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!