架设¶
架设一个主节点需要对Linux和区块链技术有基本的理解,并且需要能够严格遵循指令。主节点也需要定期的维护和谨慎的安全部署,特别是当您没有把您的达世币存储在硬件钱包上的时候。在此过程中,需要做出一些选择,并采取可选的额外步骤来提高安全性。
如果您更喜欢使用主节点托管服务,则有几个社区成员提供主机服务,地址为masternode.me、node40.com、dashmasternode.io或masternodehosting。当使用这些托管服务时,您所要做的就是发送1000个达世币的单笔交易到一个特定的地址,并将交易ID传递给托管服务。只要按照此处步骤执行就行了。
本指南主要以Bertrand256、moocowmoo、tao、BolehVPN和Tungfa先前编写的指南为基础。Tao的非常受欢迎的原创指南和支持线程可在此处浏览,在论坛中还有关于更多具体案例的指南。
在您开始之前¶
本指南是假设您第一次设置单个主节点。如果您想要更新主节点,请参阅此处。您将需要:
- 1000个达世币
- 存储您达世币的钱包,最好是硬件钱包,当然也支持Dash Core钱包
- Linux服务器,最好是虚拟专用服务器(VPS)
我们还假设您将在Windows系统上工作。但是,由于大部分工作都会在Linux VPS上完成,因此将在必要时说明使用MacOS或Linux的其他步骤。
设置您的VPS¶
通常被称为云服务器的VPS,是在虚拟机中运行的操作系统(通常是Linux)的全功能安装。虚拟机允许VPS提供程序在一台物理服务器上运行多个系统,这使得它比在每台服务器的 “裸金属” 上运行单个操作系统更高效、更便宜。VPS是托管达世币主节点的理想选择,因为它们通常提供有保证的正常运行时间、硬件故障时的冗余以及确保您保持在主节点支付队列中所需的静态IP地址。虽然在家中从桌面计算机上运行主节点在技术上是可能的,但它很可能无法可靠地工作,因为大多数ISPs为家庭用户分配动态IP地址。
我们将使用Vultr托管作为VPS的示例,尽管DigitalOcean、Amazon EC2、Google Cloud、Choopa以及OVH也都是流行的选择。首先,创建一个帐户并添加信用。然后转到左侧的服务器菜单并单击 + 以添加一个新的服务器。在以下屏幕上选择您的新服务器的位置:
选择Ubuntu16.04x64作为服务器类型。我们使用的是16.04而不是最新版本,因为16.04是Ubuntu的LTS版本,它将支持5年的安全更新,而不是通常的9个月。
选择至少提供2GB内存的服务器。
为您的服务器输入主机名和标签。在本例中,我们将使用dashmn1
作为主机名。
Vultr现在将安装您的服务器。这个过程可能需要几分钟。
在安装完成后,单击 Manage ,并记下IP地址、用户名和密码。
设置您的操作系统¶
我们将从连接到您新提供的服务器开始。在Windows上,我们将首先下载一个名为PuTTY的应用程序来连接到服务器。转到PuTTY 下载页面并为您的系统选择适当的MSI安装程序。在Mac或Linux上,您可以直接从终端中 -只需键入ssh root@<server_ip>
,然后在提示时输入密码。
双击下载的文件安装PuTTY,然后从您的开始菜单中运行该应用程序。在主机名字段中输入服务器的IP地址,然后单击打开。您可能会看到证书警告,因为这是您第一次连接到此服务器。之后您可以安全地单击是来信任服务器。
您现在已连接到您的服务器,并且应该会看到一个终端窗口。 首先,使用您的主机提供商提供的用户root
和密码登录到您的服务器。
为了确保安全,您应该立即更改root密码,并将其存储在安全的地方。您可以复制和粘贴以下任何命令,方法是在您的浏览器中选择这些命令,按下Ctrl + C,然后切换到PuTTY窗口,并在窗口中右键单击。文本将粘贴在当前光标位置:
passwd root
输入并确认一个新密码(最好是长的和随机生成的)。接下来,我们将使用以下命令,将<username>
替换为您喜欢的用户名来创建一个新用户:
adduser <username>
您将被提示输入密码。输入并确认使用新密码(与您的root密码不同),并将其存储在安全的地方。您还将看到有关用户信息的提示,但可以将其保留为空白。一旦创建了用户,我们将把它们添加到sudo组中,这样它们就能以root用户的身份执行命令:
usermod -aG sudo <username>
现在,在仍是root用户时,我们将从Ubuntu软件包存储库更新系统:
apt update
apt upgrade
系统将显示可升级软件包的列表。按Y和Enter来安装软件包。现在我们将安装防火墙(以及稍后使用的其他软件包),添加交换内存和重新启动服务器以应用任何必要的内核更新,然后以新用户的身份登录到我们新的安全环境:
apt install ufw python virtualenv git unzip pv
(按Y和Enter以确认)
ufw allow ssh/tcp
ufw limit ssh/tcp
ufw allow 9999/tcp
ufw logging on
ufw enable
(按Y和Enter以确认)
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
nano /etc/fstab
在文件末尾添加以下行(按tab键来分隔每个单词/数字),然后按Ctrl + X来关闭编辑器,再按Y和Enter保存该文件。
/swapfile none swap sw 0 0
最后,为了防止暴力密码黑客攻击,请打开SSH配置文件以禁用SSH上的root登录:
nano /etc/ssh/sshd_config
找到一行PermitRootLogin Yes
,并将其设置为PermitRootLogin no
。在此下面,添加一行内容为AllowUser <username>
,将<username>
替换为您在上面选择的用户名。按下Ctrl + X来关闭编辑器,然后按Y和Enter保存该文件。
然后重新启动服务器:
reboot now
当服务器重新启动时,PuTTY将断开连接。
虽然此设置包括保护您的服务器免受攻击的基本步骤,但还可以做更多的工作。特别是使用公钥而不是用户名/密码组合来进行身份验证,安装Fail2ban来阻止登录暴力攻击,且可以启动自动安全升级。更多提示可以在此处获得。但是,由于主节点实际上并不存储任何Dash的密钥,这些步骤被认为超出了本指南的范围。
发送保证金¶
要操作一个主节点,需要一个带有单个未花费的交易输出(UTXO)为1000个达世币的钱包地址。一旦交易被发送,必须提取有关交易的各种密钥,以便稍后在配置文件中输入,来证明交易已经被成功完成。一个主节点可以从硬件钱包或官方的Dash Core钱包开始,尽管强烈推荐使用硬件钱包来增强安全性和保护自己免受黑客攻击。该指南将描述硬件钱包和Dash Core钱包的步骤。
选项1:从硬件钱包发送¶
使用https://wallet.trezor.io/上的Trezor钱包设置您的Trezor,并发送一个测试交易以验证它是否正常工作。有关此方面的帮助,请参阅此处。您也可以(小心)选择在Trezor中添加一个密码以进一步保护您的保证金。单击添加账户以在您的Trezor钱包中添加一个新的账户。然后单击接收选项卡,并准确地向所显示的地址发送1000个达世币。如果您正在设置多个主节点,则向同一新帐户内的连续地址发送1000个达世币。您应该在第一笔确认到达时立即查看交易,通常需要几分钟。
交易出现后,单击右侧的QR代码,查看区块链上的交易。在我们完成以下步骤时,请保持此窗口打开,因为我们很快将需要确认是否存在如以下屏幕截图所示的15次确认。
在我们等待15次确认时,从GitHub发布页面下载达世币主节点工具(DMT)的最新版本。解压并运行该文件。以下窗口将出现。
在主窗口的左上角单击检查RPC连接,以验证连接是否正常。然后连接您的Trezor设备,并单击测试 HW来验证Trezor连接是否正常。
现在我们将使用DMT提取交易ID。按DMT开发人员Bertrand 256的屏幕截图所示执行以下步骤顺序:
- 在此处输入您的主节点名称。在本例中,该名称应该与您设置服务器dashmn1时定义的主机名相匹配。您可以在dashman/dashman状态输出的第一行中查看这该名称。
- 在此处输入您主节点的IP地址。该IP地址是由VPS提供程序在您设置服务器时提供给您的。
- 输入TCP端口号。该端口号应该是9999。
- 单击Generate new以生成新的主节点私钥。
- 复制您从Trezor钱包发送1000个达世币的钱包地址,并将其粘贴到此字段中。
- 单击箭头 → 以从您的保证金地址派生BIP32路径。您可以通过您Trezor钱包的接收选项卡中显示的BIP 32路径来验证这一点,以获取交易。
- 单击查找以找到交易的保证金交易 ID,也就是存有保证金的钱包地址。您可以根据区块链浏览器的确认页面上显示的交易 ID来验证这一点,以获取您的保证金地址。
保持DMT打开,记录主节点私钥和保证金地址,然后继续下一步:在您的VPS上安装Dash Core钱包。
选项2:从Dash Core钱包发送¶
打开Dash Core钱包,并等待它与网络同步。当Dash Core钱包准备好的时候应该是这样的:
单击工具 > 调试控制台以打开控制台。在控制台中键入以下两个命令以生成一个主节点密钥,并获得一个新地址:
masternode genkey
getaccountaddress 0
请记录主节点私钥和保证金地址,因为我们稍后将需要它。下一步是确保您的钱包安全(如果您还没有这样做的话)。首先,通过选择设置 > 加密钱包来给钱包加密。您应该使用一个您从未在其他地方使用过的强而新的密码。记下您的密码,并把它存放在安全的地方,否则您将永远被锁在您的钱包之外,且无法使用您的资金。接下来,通过选择文件 > 备份钱包来备份您的钱包文件。将文件保存到物理上独立于计算机的安全位置,因为如果您的电脑出了什么问题,这将是您获得我们资金的唯一途径。有关这些步骤的更多详细信息,请参考此处。
现在,将单个交易中的1000个达世币准确地发送到您在上一步中生成的帐户地址中。这1000个达世币可能是从另一个钱包,或是从您当前钱包已持有的资金中发送的。交易完成后,通过搜索地址来查看在区块链浏览器中的交易。在您能够启动主节点之前,您将需要15次确认,但您现在可以继续下一步:在您的VPS上安装Dash Core。
安装Dash Core¶
Dash Core是Dash Core GUI钱包和达世币主节点工具后的软件。如果不显示GUI,它将在您的VPS上作为守护进程运行(dashd),由一个简单的命令接口(dash-cli)控制。
再次打开PuTTY或控制台,并使用您刚刚为您的新的、non-root用户创建的用户名和密码进行连接。有两种选项可以安装Dash Core,一种是使用脚本实用工具的自动选项,它被Dash Core团队成员moocowmoo称为dashman,另一种选项更复杂,该选项将允许您理解在准备您的主节点过程中所涉及的所有关键步骤。
选项1:使用dashman自动安装¶
若要使用dashman安装Dash,请在登录后输入以下命令:
cd ~
git clone https://github.com/moocowmoo/dashman
~/dashman/dashman install
(按Y和Enter以确认)
Dashman将为您的系统下载最新版本的Dash Core,以及区块链的初始情况说明,以加快引导过程。下一次下载并安装sentinel时,需要12.1版本或更高版本的主节点:
~/dashman/dashman install sentinel
您的系统现在正在作为标准主节点节点运行,并且正忙于完成与区块链的同步。我们现在需要输入在上一步中生成的主节点私钥。使用以下命令编辑配置文件:
nano ~/.dashcore/dash.conf
删除行首的 # 符号,取消对最后两行的注释,然后粘贴您在masternodeprivkey=
之后生成的主节点私钥。您只需单击鼠标右键将其粘贴到终端窗口即可。按Ctrl + X来关闭编辑器,并按Y和Enter保存文件。
此时,您应该重新启动dashd,通过键入以下命令加载新的配置文件:
~/dashman/dashman restart
按Y和Enter以确认。然后检查同步状态并等待,直到完成所有区块链同步和保证金交易的15次确认为止:
~/dashman/dashman status
如果发生系统错误,dashman不会自动重新启动您的主节点。向crontab添加一个检查功能,以确保它每分钟检查一次,从而确保主节点仍在运行:
crontab -e
选择nano作为编辑器,并在 sentinel行后面的文件末尾输入以下行:
* * * * * pidof dashd || ~/.dashcore/dashd
按Enter键以确保文件末尾有空行,然后按Ctrl + X来关闭编辑器,并按Y和Enter保存该文件。
继续使用启动您的主节点 <masternode-setup-start>的下一个步骤。
选项2:手动安装¶
要手动下载和安装您的主节点组件,请在您的计算机上访问https://www.dash.org/wallets,以查找到最新版本Dash Core钱包的链接。单击Linux,然后右键单击Dash Core Linux 64 Bit中的下载TGZ,并选择复制链接地址。返回到您的终端窗口并输入以下命令,右键单击或按Ctrl + V将地址粘贴到最新版本的Dash Core上:
cd ~
wget https://github.com/dashpay/dash/releases/download/v0.12.3.3/dashcore-0.12.3.3-x86_64-linux-gnu.tar.gz
您可以通过运行以下程序,并将输出与如在Hash文件下的Dash网站所示的文件值作比较来选择验证您的下载的完整性:
sha256sum dashcore-0.12.3.3-x86_64-linux-gnu.tar.gz
您还可以选择验证您的下载作为Dash Core团队发布官方版本的真实性。所有达世币版本的发布都由UdjinM6使用GPG签署,密钥为8359 2BD1 400D 58D9
,可以在这里Keybase验证。按如下所示导入密钥,下载达世币当前版本的ASC文件并验证签名:
curl https://keybase.io/udjinm6/pgp_keys.asc | gpg --import
wget https://github.com/dashpay/dash/releases/download/v0.12.3.3/SHA256SUMS.asc
gpg --verify SHA256SUMS.asc
为达世币创建一个工作目录,解压压缩的归档文件,将必要的文件复制到目录中,并将它们设置为可执行文件:
mkdir .dashcore
tar xfvz dashcore-0.12.3.3-x86_64-linux-gnu.tar.gz
cp dashcore-0.12.3/bin/dashd .dashcore/
cp dashcore-0.12.3/bin/dash-cli .dashcore/
chmod 777 .dashcore/dash*
清理不需要的文件:
rm dashcore-0.12.3.3-x86_64-linux-gnu.tar.gz
rm -r dashcore-0.12.3/
使用以下命令创建配置文件:
nano ~/.dashcore/dash.conf
一个编辑器窗口将会出现。现在我们需要指定几个变量来创建一个配置文件。复制并粘贴以下文本以开始创建,然后按如下所示替换您配置中的具体变量:
#----
rpcuser=XXXXXXXXXXXXX
rpcpassword=XXXXXXXXXXXXXXXXXXXXXXXXXXXX
rpcallowip=127.0.0.1
#----
listen=1
server=1
daemon=1
maxconnections=64
#----
masternode=1
masternodeprivkey=XXXXXXXXXXXXXXXXXXXXXXX
externalip=XXX.XXX.XXX.XXX
#----
按如下所示替换标记为XXXXXXX
的字段:
rpcuser
:输入任何数字或字母字符串,不允许有特殊字符rpcpassword
:输入任何数字或字母字符串,不允许有特殊字符masternodeprivkey
:这是您在上一步中生成的私钥externalip
:这是您VPS的IP地址
结果应该是这样的:
按Ctrl + X以关闭编辑器,并按Y和Enter保存该文件。您现在可以开始在主节点上运行达世币,以便开始与区块链同步:
~/.dashcore/dashd
您将看到一条显示Dash Core server starting的消息。我们现在将安装Sentinel,这是一个以看门狗的方式运行的软件,以和网络进行通信,从而说明您的节点正在正常工作:
cd ~/.dashcore
git clone https://github.com/dashpay/sentinel.git
cd sentinel
virtualenv venv
venv/bin/pip install -r requirements.txt
venv/bin/python bin/sentinel.py
您将看到一条显示dashd not synced with network! Awaiting full sync before running Sentinel.的消息。将dashd和sentinel添加到crontab以确保它每分钟运行一次,来对您的主节点进行检查:
crontab -e
选择nano作为您的编辑器,并在文件末尾输入以下行:
* * * * * cd ~/.dashcore/sentinel && ./venv/bin/python bin/sentinel.py 2>&1 >> sentinel-cron.log
* * * * * pidof dashd || ~/.dashcore/dashd
按enter键以确保文件末尾有空行,然后按Ctrl + X关闭编辑器,并按Y和Enter保存该文件。现在,我们需要等待要完成的15次保证金交易的确认,并等待区块链在主节点上完成同步。您可以使用以下命令来监测进度:
~/.dashcore/dash-cli mnsync status
完成同步后,您应该看到以下响应:
{
"AssetID": 999,
"AssetName": "MASTERNODE_SYNC_FINISHED",
"Attempt": 0,
"IsBlockchainSynced": true,
"IsMasternodeListSynced": true,
"IsWinnersListSynced": true,
"IsSynced": true,
"IsFailed": false
}
继续下一步来启动您的主节点。
启动您的主节点¶
根据您发送主节点保证金的方式,您需要使用由您的硬件钱包或Dash Core钱包发送的命令来启动您的主节点。在您继续之前,您必须确保您的1000个达世币交易至少有15次确认,并且该dashd正在运行,并与您的主节点上的区块链完全同步。有关此步骤的详细信息,请参阅上一步。在启动主节点过程中,您的主节点可能经过以下状态:
- MASTERNODE_SYNC: 这表示当前正在主节点中被同步的数据
- MASTERNODE_SYNC_FAILED: 同步无法完成,请检查您的防火墙并重新启动dashd
- WATCHDOG_EXPIRED: 等待sentinel重新启动,确保它被输入到crontab中。
- NEW_START_REQUIRED: 启动命令必须从钱包中发送
- PRE_ENABLED: 等待网络识别已启动的主节点
- ENABLED: 成功启动主节点
如果您的主节点似乎没有立即启动,不要任意地发出更多的启动命令。因为每次这样做时,您将重置您在支付队列中的位置。
选项1:从硬件钱包中启动¶
返回DMT并确保所有字段都被正确填写。如果您之前没有能找到保证金交易ID,此时单击查找以找到转移保证金到入账地址的交易ID。然后单击使用硬件钱包启动主节点,并确认以下两条消息:
此时,您可以通过输入~/.dashcore/dash-cli masternode status
使用dashman/dashman status
,或者使用DMT中的获取状态功能来监测您的主节点。在主节点经过PRE_ENABLED阶段并最终到达 ENABLED阶段,您可能需要等待大约30分钟。一段时间之后,最终结果应显示如下:
此时,您可以通过键入exit
来安全地注销您的服务器。祝贺您!您的主节点现在正在运行。
选项2:从Dash Core钱包启动¶
如果您使用Dash Core钱包中的地址用于您的保证金交易,现在您则需要找到该交易的txid。单击工具 > 调试控制台并输入以下命令:
masternode outputs
这时应该返回类似于以下内容的字符串:
{
"06e38868bb8f9958e34d5155437d009b72dff33fc28874c87fd42e51c0f74fdb" : "0",
}
第一个长字符串是您的交易hash,而最后一个数字是索引。我们现在需要为这个钱包创建一个名为masternode.conf的文件,以便能够使用它发出命令,从而启动您在网络上的主节点。在记事本(或macOS上的TextEdit,Linux上的gedit)中打开一个新的文本文件,并输入以下信息:
- 标签:用于识别您的主节点的任何单个单词,例如,MN1
- IP和端口:在dash.conf文件中的IP地址和端口(通常为9999),由冒号(:)分隔
- 主节点私钥:这是之前主节点genkey命令的结果,也是在dash.conf配置的内容
- 交易hash:我们刚才使用主节点outputs标识的txid
- 索引:我们刚才使用主节点outputs标识的索引
在单行中输入这些信息的所有内容,每个条目用空格分隔,例如:
MN1 52.14.2.67:9999 XrxSr3fXpX3dZcU7CoiFuFWqeHYw83r28btCFfIHqf6zkMp1PZ4 06e38868bb8f9958e34d5155437d009b72dff33fc28874c87fd42e51c0f74fdb 0
将此文件保存在PC上的Dash Core数据文件夹中,使用文件名masternode.conf,运行Dash Core钱包。您可能需要启用 查看隐藏项 来查看此文件夹。如果使用记事本,请确保选择所有文件,这样就不会出现.conf.txt文件扩展名错误。对于不同的操作系统,可以在以下位置找到DashCore文件夹(复制并粘贴快捷文本到保存对话框以快速找到Dash Core文件夹):
平台 | 路径 | 快捷方式 |
---|---|---|
Linux | /home/yourusername/.dashcore |
~/.dashcore |
macOS | /Macintosh HD/Library/Application Support |
~/Library/Application Support/DashCore |
Windows | C:\Users\yourusername\AppData\Roaming\Dash Core |
%APPDATA%\DashCore |
现在关闭您的文本编辑器,而且关闭并重新启动Dash Core钱包。Dash Core将在启动过程中识别masternode.conf,并在此时准备激活您的主节点。转到设置 > 解锁钱包并输入您的钱包密码。然后再次单击工具 > 调试控制台,并输入以下命令来启动您的主节点(用您的主节点的标签替换MN1):
masternode start-alias MN1
此时,您可以返回到您的终端窗口,并通过输入~/.dashcore/dash- cli masternode status
使用dashman/dashman status
,或者使用DMT上的获取状态功能来监测您的主节点。在节点经过PRE_ENABLED阶段并最终到达ENABLED阶段时,您可能需要等待大约30分钟。一段时间之后,最终的结果应显示如下:
此时,您可以通过键入exit
来安全地注销您的服务器。祝贺您!您的主节点现在正在运行。