Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
本文为使用以下实验材料,提前准备 1、一个运行Linux发行版的主机(最好是云服务器,家庭PC如果网络状况良好也可以),本文以 Ubuntu 20.04 作为示例 2、硬件配置不低于 1核心,1GB内存(CPU需兼容X86指令不要选ARM,性能对标主流云服务商提供的最近三代处理器和内存),50G磁盘(最好SSD) 3、主机的网络要求稳定,延迟低,网速无特别要求 1M 即可 4、对Linux命令有基础了解 5、下载TangoAPP,创建钱包并有至少440001个SMT用于质押(44000个SMT用于质押,1个用于支付GasFee)
运行Spectrum对于节点性能要求并不高,因此服务器性能较好的情况下可以运行多个Spectrum,可运行数量参考以下公式
可运行数量 = min(CPU / 0.33, RAM / 0.8G, disk / 50G)
举个栗子,一个2核心,4G内存,150G磁盘的服务器可以运行的Spectrum进程数量为 CPU支持 6 = 2 / 0.33 内存支持 5 = 4 / 0.8 磁盘支持 3 = 150 / 50 该机器可运行节点数量为 3 = min(6, 5, 3)
请依据自己的需求,合理选择机器。接下来开始介绍挖矿的实操过程。
写在前面的注意事项: 1、挖矿期间可能由于设备在线情况不稳定,或者设备性能原因,导致节点未能及时出块,作为惩罚将会被暂停出块,需要在下一个epoch才能手动恢复出块权利(最长需要等待24小时) 2、质押之后如果想要赎回,需要等待一周时间,且等待期内无收益。
以下演示的Linux登录用户为root,如果您使用的是ubuntu账户,或者其他非root权限用户,演示命令中的部分操作需要使用 sudo 提权。
以下演示使用的机器为阿里云购买的2核,4G内存,250G磁盘(ESSD),1M带宽的一台服务器,按照上面提到的公式计算可以运行5个节点。不含任何折扣的购买价买为288元人民币每月。
Step1: 下载Spectrum的 Releases 版本
点击此处可以查看Releases版本列表,本文选择下载Linux版本,如果是其他操作系统请对照下载,如果是ARM指令的机器,请使用源码编译。
下载后解压缩即可得到smc的可执行文件

创建用于存放节点数据的 /data 目录,并将可执行文件移动到 /data/bin

Step2:安装supervisor进程管理
supervisor是一个在Linux上很常用的进程管理软件,主要用它来管理我们运行的多个Spectrum进程,这里使用 apt 直接安装。

Step3:同步节点
我的机器可以运行5个节点,但由于同步节点需要消耗大量的带宽和机器资源,将所有节点同时启动同步可能导致机器资源紧张,因此先同步一个节点,再将该节点的数据复制4份给其他节点。
1、进入到supervisor的配置文件目录下(默认 /etc/supervisor/conf.d/ ),创建一个 smc.conf 配置文件,并将以下内容粘贴到 smc.conf 文件中保存。
[program:smc_1]
command=/data/bin/smc --datadir /data/mainnet_data_1/ --port 60303 ;
priority=1 ; 数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
2、执行命令supervisorctl reload,目的是通知 superviosr 进程重新加载配置文件。然后通过 supervisorctl status 查看进程运行状态。

3、进入 smc 的JavaScript控制台,可以查看当前节点的同步情况和连接到的节点信息。通过eth.syncing 可以看到当前区块 currentBlock,最新区块 highestBlock,二者还差很多。(smc的大多数命令都与eth兼容)

接下来请耐心等待几个小时之后。。。
4、当在控制台输入 eth.syncing 提示 false 时,并且 eth.blockNumber 提示的区块号 大于等于区块链浏览器显示的最新区块,此时说明该节点已经同步完成。

5、输入 ctrl + d 退出控制台,输入 supervisorctl stop smc_1 暂停当前的节点

6、由于我的机器可以运行5个节点,因此再复制4份数据

7、删除新复制节点数据的nodekey,因为nodekey的用途是标识每个节点的身份,如果要用于挖矿的话,它们不能重复。下次启动时,节点会自动创建一个新的

8、编辑supervisor的配置文件,放4个新节点放进去(参考下面的配置)。如果需要增加更多的节点,请注意观察配置文件的规律,您可能也发现了,区别在三个地方 1)、program 的进程名称,这是给supervisor守护进程使用的名称 2)、command 参数指定的数据目录,这是指定该节点存储区块数据的目录 3)、command 参数指定的端口,这是指定该节点与其他节点通讯使用的端口
我通常喜欢以数字递增的方式来命名和区分它们,您只需要保证它们不重复就可以了(注意配置文件指定的数据目录和您刚才在步骤6复制的目录是对应的),如果您想运行更多节点,那就按照类似的方式递增就好了。
[program:smc_1]
command=/data/bin/smc --datadir /data/mainnet_data_1/ --port 60303 ;
priority=1 ; 数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
[program:smc_2]
command=/data/bin/smc --datadir /data/mainnet_data_2/ --port 60304 ;
priority=1 ; 数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
[program:smc_3]
command=/data/bin/smc --datadir /data/mainnet_data_3/ --port 60305 ;
priority=1 ; 数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
[program:smc_4]
command=/data/bin/smc --datadir /data/mainnet_data_4/ --port 60306 ;
priority=1 ; 数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
[program:smc_5]
command=/data/bin/smc --datadir /data/mainnet_data_5/ --port 60307 ;
priority=1 ; 数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
执行命令supervisorctl reload 重载配置文件

Step4:质押并绑定节点
现在我们的节点都准备好了,可以开设质押并绑定节点了。
1、打开Tango,复制你要用于质押的钱包地址,进入 smc 的JavaScript控制台,连接上你要绑定的节点(通过 attach 不同数据目录下的 smc.ipc 区分不同的节点),再使用 tribe.bindSign 获取签名。(该签名是节点的nodekey文件作为私钥签署的,请勿删除正在挖矿的节点的nodekey,此外nodekey遗失或者泄露不会造成质押资金的安全问题)

2、将控制台的签名生成一个二维码,生成二维码网站点击此处

3、进入到TangoAPP,点击Ecology,点击 Mining,然后点击 Bind the address,会自动打开相机扫描二维码,扫描上个步骤生成的二维码即可,如果扫描成功后会显示您的矿工地址,如下所示。

4、最好检查一下Tango显示的矿工地址与您节点的矿工地址是否一致,在控制台输入 tribe.getMiner() 即可获取节点的矿工地址(此地址的私钥是 nodekey文件)

可以看到控制台与TangoAPP提示的地址相同,说明没有问题。在TangoAPP点击 Confirm后,输入密码即可开始绑定。
接下来,点击 Contract Mortgage ,输入密码后开始质押。质押成功后会显示您当前拥有的节点,如下所示。

如果您还需要质押其他的节点,请返回 Step4 的第一步。
Step5: 日常维护与赎回
正如前文注意事项中所提到的,您的节点有可能会意外暂停,您需要偶尔打开您的TangoAPP查看是否有节点暂停,并及时启动,否则会影响您的收益。如果某个节点频繁暂停,您可能需要查看该节点的设备运行状态是否存在问题。
关于赎回,分为两步,第一步先暂停节点,等待一周后选择赎回即可。自行依据TangoAPP的提示操作就可以。
现在您已经掌握了在Linux部署Spectrum节点并通过Tango钱包质押挖矿的技能,如果有其他疑问,您可以通过BlockChat与我联系。
本文为使用以下实验材料,提前准备 1、一个运行Linux发行版的主机(最好是云服务器,家庭PC如果网络状况良好也可以),本文以 Ubuntu 20.04 作为示例 2、硬件配置不低于 1核心,1GB内存(CPU需兼容X86指令不要选ARM,性能对标主流云服务商提供的最近三代处理器和内存),50G磁盘(最好SSD) 3、主机的网络要求稳定,延迟低,网速无特别要求 1M 即可 4、对Linux命令有基础了解 5、下载TangoAPP,创建钱包并有至少440001个SMT用于质押(44000个SMT用于质押,1个用于支付GasFee)
运行Spectrum对于节点性能要求并不高,因此服务器性能较好的情况下可以运行多个Spectrum,可运行数量参考以下公式
可运行数量 = min(CPU / 0.33, RAM / 0.8G, disk / 50G)
举个栗子,一个2核心,4G内存,150G磁盘的服务器可以运行的Spectrum进程数量为 CPU支持 6 = 2 / 0.33 内存支持 5 = 4 / 0.8 磁盘支持 3 = 150 / 50 该机器可运行节点数量为 3 = min(6, 5, 3)
请依据自己的需求,合理选择机器。接下来开始介绍挖矿的实操过程。
写在前面的注意事项: 1、挖矿期间可能由于设备在线情况不稳定,或者设备性能原因,导致节点未能及时出块,作为惩罚将会被暂停出块,需要在下一个epoch才能手动恢复出块权利(最长需要等待24小时) 2、质押之后如果想要赎回,需要等待一周时间,且等待期内无收益。
以下演示的Linux登录用户为root,如果您使用的是ubuntu账户,或者其他非root权限用户,演示命令中的部分操作需要使用 sudo 提权。
以下演示使用的机器为阿里云购买的2核,4G内存,250G磁盘(ESSD),1M带宽的一台服务器,按照上面提到的公式计算可以运行5个节点。不含任何折扣的购买价买为288元人民币每月。
Step1: 下载Spectrum的 Releases 版本
点击此处可以查看Releases版本列表,本文选择下载Linux版本,如果是其他操作系统请对照下载,如果是ARM指令的机器,请使用源码编译。
下载后解压缩即可得到smc的可执行文件

创建用于存放节点数据的 /data 目录,并将可执行文件移动到 /data/bin

Step2:安装supervisor进程管理
supervisor是一个在Linux上很常用的进程管理软件,主要用它来管理我们运行的多个Spectrum进程,这里使用 apt 直接安装。

Step3:同步节点
我的机器可以运行5个节点,但由于同步节点需要消耗大量的带宽和机器资源,将所有节点同时启动同步可能导致机器资源紧张,因此先同步一个节点,再将该节点的数据复制4份给其他节点。
1、进入到supervisor的配置文件目录下(默认 /etc/supervisor/conf.d/ ),创建一个 smc.conf 配置文件,并将以下内容粘贴到 smc.conf 文件中保存。
[program:smc_1]
command=/data/bin/smc --datadir /data/mainnet_data_1/ --port 60303 ;
priority=1 ; 数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
2、执行命令supervisorctl reload,目的是通知 superviosr 进程重新加载配置文件。然后通过 supervisorctl status 查看进程运行状态。

3、进入 smc 的JavaScript控制台,可以查看当前节点的同步情况和连接到的节点信息。通过eth.syncing 可以看到当前区块 currentBlock,最新区块 highestBlock,二者还差很多。(smc的大多数命令都与eth兼容)

接下来请耐心等待几个小时之后。。。
4、当在控制台输入 eth.syncing 提示 false 时,并且 eth.blockNumber 提示的区块号 大于等于区块链浏览器显示的最新区块,此时说明该节点已经同步完成。

5、输入 ctrl + d 退出控制台,输入 supervisorctl stop smc_1 暂停当前的节点

6、由于我的机器可以运行5个节点,因此再复制4份数据

7、删除新复制节点数据的nodekey,因为nodekey的用途是标识每个节点的身份,如果要用于挖矿的话,它们不能重复。下次启动时,节点会自动创建一个新的

8、编辑supervisor的配置文件,放4个新节点放进去(参考下面的配置)。如果需要增加更多的节点,请注意观察配置文件的规律,您可能也发现了,区别在三个地方 1)、program 的进程名称,这是给supervisor守护进程使用的名称 2)、command 参数指定的数据目录,这是指定该节点存储区块数据的目录 3)、command 参数指定的端口,这是指定该节点与其他节点通讯使用的端口
我通常喜欢以数字递增的方式来命名和区分它们,您只需要保证它们不重复就可以了(注意配置文件指定的数据目录和您刚才在步骤6复制的目录是对应的),如果您想运行更多节点,那就按照类似的方式递增就好了。
[program:smc_1]
command=/data/bin/smc --datadir /data/mainnet_data_1/ --port 60303 ;
priority=1 ; 数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
[program:smc_2]
command=/data/bin/smc --datadir /data/mainnet_data_2/ --port 60304 ;
priority=1 ; 数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
[program:smc_3]
command=/data/bin/smc --datadir /data/mainnet_data_3/ --port 60305 ;
priority=1 ; 数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
[program:smc_4]
command=/data/bin/smc --datadir /data/mainnet_data_4/ --port 60306 ;
priority=1 ; 数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
[program:smc_5]
command=/data/bin/smc --datadir /data/mainnet_data_5/ --port 60307 ;
priority=1 ; 数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
执行命令supervisorctl reload 重载配置文件

Step4:质押并绑定节点
现在我们的节点都准备好了,可以开设质押并绑定节点了。
1、打开Tango,复制你要用于质押的钱包地址,进入 smc 的JavaScript控制台,连接上你要绑定的节点(通过 attach 不同数据目录下的 smc.ipc 区分不同的节点),再使用 tribe.bindSign 获取签名。(该签名是节点的nodekey文件作为私钥签署的,请勿删除正在挖矿的节点的nodekey,此外nodekey遗失或者泄露不会造成质押资金的安全问题)

2、将控制台的签名生成一个二维码,生成二维码网站点击此处

3、进入到TangoAPP,点击Ecology,点击 Mining,然后点击 Bind the address,会自动打开相机扫描二维码,扫描上个步骤生成的二维码即可,如果扫描成功后会显示您的矿工地址,如下所示。

4、最好检查一下Tango显示的矿工地址与您节点的矿工地址是否一致,在控制台输入 tribe.getMiner() 即可获取节点的矿工地址(此地址的私钥是 nodekey文件)

可以看到控制台与TangoAPP提示的地址相同,说明没有问题。在TangoAPP点击 Confirm后,输入密码即可开始绑定。
接下来,点击 Contract Mortgage ,输入密码后开始质押。质押成功后会显示您当前拥有的节点,如下所示。

如果您还需要质押其他的节点,请返回 Step4 的第一步。
Step5: 日常维护与赎回
正如前文注意事项中所提到的,您的节点有可能会意外暂停,您需要偶尔打开您的TangoAPP查看是否有节点暂停,并及时启动,否则会影响您的收益。如果某个节点频繁暂停,您可能需要查看该节点的设备运行状态是否存在问题。
关于赎回,分为两步,第一步先暂停节点,等待一周后选择赎回即可。自行依据TangoAPP的提示操作就可以。
现在您已经掌握了在Linux部署Spectrum节点并通过Tango钱包质押挖矿的技能,如果有其他疑问,您可以通过BlockChat与我联系。
No comments yet