What's new
  • Thank you for your input for the last few days regarding the list of exchanges you want to see DSTRA in.
    These are our targets for fundraising going forward. Learn more

主节点一机多开的简明指南

tehzoca

Junior Member
#1
今天和大家谈谈节点的一机多开

一、一机多开的优缺点

优点:最大化利用硬件资源;最大化节点收益

一机多开可以有效地节省vps租金,让你在一台机器上同时运行同种/多种币的多个节点,而不用特地租用多台机器。一机多开也可以帮助你有效地将手中的节点币收益最大化,也就是够几个就开几个。

缺点:与分散化的节点原则相违背;占用硬件资源大

一机多开的缺点也很明显。节点存在的意义在于通过分散化的节点,建立全球节点网络,从而使网络更稳定、同步更快,交易更迅速。而一机多开造成了复数节点位于同一网络环境下,如出现各类硬件/网络故障,很容易使同一台机器上的节点全部掉线,对节点网络造成重大影响,与节点尽可能分散的原则相违背。另一方面,如果一台机器上的节点运行数量超出了机器的cpu或内存瓶颈,很容易造成节点进程卡链或自行终止,对节点运行的稳定性影响较大。此外,复数节点的区块文件体积增加速度极快,硬盘空间有限的机器要格外注意这一点,防止可用空间被多个钱包进程的区块文件迅速填满。
 

tehzoca

Junior Member
#2
二、一机多开的工作原理

我们这里只讨论linux下同一币种/钱包的一机多开,不同币种/钱包因为不存在进程冲突问题,按常规步骤操作即可。硬件方面,一机多开要求你在一台服务器上拥有多个公网ipv4或ipv6地址,cpu/内存/硬盘越大越好。

1、建立多个区块数据目录

同一币种节点的一机多开,是通过在一台机器上同时运行多个钱包进程实现的。而通常来说,同一钱包进程是无法同时运行多个的。这就需要我们在运行钱包进程的时候指定数据目录的位置。以dstra为例,按默认安装位置,dstrad、dstra-cli等钱包程序在目录/usr/local/bin下,而区块数据存放在根目录.dstra下。如果我们要同时运行多个dstrad进程,就需要将当前的区块文件夹.dstra复制多个,如.dstra01、.dstra02、……。复制完成后通过-datadir=来指定各dstrad进程运行时分别读取哪个数据目录。复制区块文件夹的命令可以参考:

cp -r -p .dstra .dstra01
cp -r -p .dstra .dstra02
 
Last edited:

tehzoca

Junior Member
#3
2、编辑各目录下的.conf文件

要使多个钱包节点进程能够同时启动,还要对区块文件夹内的.conf文件进行正确配置,使各个进程运行的时候能够以独立的rpc端口和外部ip运行。以dstra为例,我们继续上面的操作,在.dstra01和.dstra02文件夹中分别编辑dstra.conf。其中rpcport需要指定不同的内部端口,只要不与系统其它端口冲突即可。主节点私钥也要通过masternode genkey来生成不同的私钥。externalip和bind行要填入不同的ipv4或ipv6地址。其余的内容保持一样就好。

.dstra01的dstra.conf:

rpcuser=dstra
rpcpassword=lijing21
rpcallowip=127.0.0.1
rpcport=5271

daemon=1
server=1
promode=1
listen=1
masternode=1
staking=0

masternodeprivkey=key01
externalip=[2001:19f0:8001:1bf9::1001]:5269

bind=[2001:19f0:8001:1bf9::1001]
logtimestamps=1


.dstra02的dstra.conf:

rpcuser=dstra
rpcpassword=lijing21
rpcallowip=127.0.0.1
rpcport=5272

daemon=1
server=1
promode=1
listen=1
masternode=1
staking=0

masternodeprivkey=key02
externalip=[2001:19f0:8001:1bf9::1002]:5269

bind=[2001:19f0:8001:1bf9::1002]
logtimestamps=1

操作命令参考:

nano .dstra01/dstra.conf
复制粘贴以上字段
ctrl+x 保存退出

nano .dstra02/dstra.conf
复制粘贴以上字段
ctrl+x 保存退出
 

tehzoca

Junior Member
#4
3、启动多个节点进程

编辑好.conf配置文件后,就可以启动各个节点进程了。具体命令参考:

dstrad –datadir=.dstra01
dstrad –datadir=.dstra02

成功启动后,再用getinfo和mnsync status命令查询各节点进程的同步状态。具体命令参考:

dstra-cli –datadir=.dstra01 getinfo
dstra-cli –datadir=.dstra02 getinfo

dstra-cli –datadir=.dstra01 mnsync status
dstra-cli –datadir=.dstra02 mnsync status
 

tehzoca

Junior Member
#5
4、本地钱包中的节点控制文件配置

至此为止各个节点进程已经成功在vps上运行,要在节点列表中激活他们,还要通过本地钱包来进行。在本地钱包目录中编辑masternode.conf文件,还是以上面dstra的2个节点为例,参考如下格式:

mn01 [2001:19f0:8001:1bf9::1001]:5269 key01 txid01 index01(0或1)
mn02 [2001:19f0:8001:1bf9::1002]:5269 key02 txid02 index02(0或1)

保存退出并重启本地钱包,这时候就可以从我的节点列表中看到2个状态为missing的新节点了。

待步骤3vps中查询的mnsync status返回999之后,就可以在本地钱包中启动各个节点了。如果是第一次启动全部,直接点start all就好。如果要启动新加的部分节点,点start missing可以一次启动所有missing状态的。也可以选中要启动的节点后,点start alias启动选中的节点。

最后回到vps上查看节点状态,显示successfully started就好。

注意:
如果返回的是各种错误,如not in masternode list、cannot connect to 等等,要等待至少30分钟之后再在本地钱包上start alias一下。
如果vps持续返回错误,在30分钟以内本地钱包上多次重启节点是无效的(这时候本地钱包节点启动时间会变为负值),每次start alias的间隔要大于30分钟。
重复这个步骤一直到vps端返回successfully started。
 
Last edited:

tehzoca

Junior Member
#6
三、结语

关于节点一机多开的教程就先写到这,欢迎感兴趣的朋友们多来交流。

我从今年4月开始接触节点币,到现在半年多,其实一机多开这个问题,我也纠结了很久。期间大部分时间是自己探索,当然也曾在discord请教过各路朋友。从查阅dash的详细conf说明文档,实验每一个配置的含义和用法,到后来的ipv6、内网地址等等。怎样以最经济的通用方法实现稳定的一机多开,一直是我追寻的目标。当然这些内容也只是我作为一个从未写过一行代码,甚至linux的初学者自己总结的一些常规通道。比如其他一些朋友提出的用docker启动进程、共用一个区块目录不同conf文件等等多开方法,也都非常具有实用性,我也非常希望今后有机会能够逐一尝试并写成教程带给大家。

主节点币从2017年发展至今,保证金的设定也从固定发展到到动态再到多档。无论今后节点币何去何从,这种通过建立节点币生币的模式,都给我带来了很多快乐,也让我学会了很多知识。希望这种模式也能跟上加密货币的发展节奏,在未来拥有更加健康可持续的生存机制。

再次祝dstra一飞冲天,所有人早日实现财务自由!
 
Last edited:

vagrom

Junior Member
#10
晚上认真的把大佬的贴子看了遍,如果大佬早点发这个帖子,我也不至于折腾这么久了,哈哈。不过还好,最终还是在大佬的指导下,初步实现。
我前几天差点就准备研究docker来实现这个需求了,不过,后面有空还是要了解下docker。
再次感谢大佬的无私分享。
 

dumh

Junior Member
#17
大佬这个贴子真的很不错, 篇幅很长, 说的也很详细.
现在没多少时间精力投在技术方面, 有大佬这样的人在, 技术才能不断的进步.
 
#19
今天开始又进入MN更多奖励的区块,已经到0.75币,就是30%的奖励了 (y)
即将会有更多人进入MN行列了吧?:dstraheart:
到时候这个帖子就是新人的依靠,呵呵:love:
 

vagrom

Junior Member
#23
下一期可能会写一个内网地址做节点的教程
感觉主节点这个话题总能聊很多
现在感觉这些节点对IP地址没有作啥验证,随便填一个就好了。
但我有台内网机器建了四五个节点后再建节点就不行了,具体现象是节点当时是启动的,过几个小时就显示没启动,然后锁定的币也自动解锁了。
 

tehzoca

Junior Member
#26
现在感觉这些节点对IP地址没有作啥验证,随便填一个就好了。
但我有台内网机器建了四五个节点后再建节点就不行了,具体现象是节点当时是启动的,过几个小时就显示没启动,然后锁定的币也自动解锁了。
恩有点奇怪。我现在只遇到一类钱包,就是那种钱包程序只有xd,没有xcli的,内网地址不可用,不知道做了什么验证。

技术帖子,不能聊天什么吧。。。。。:ROFLMAO:
聊吧,不然更没的说了 :ROFLMAO: