链游脚本攻略搭建自己的WAX网络节点

Posted encoderlee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链游脚本攻略搭建自己的WAX网络节点相关的知识,希望对你有一定的参考价值。

繁忙的公共节点

在之前的文章中,我们尝试用python写了一个链游Farmers World的挂机脚本:
《链游Farmers World【农民世界】爆火,发布一个免费开源的辅助挂机脚本》
https://encoderlee.blog.csdn.net/article/details/121512342

这个脚本在单机,账号比较少的情况下运作良好,但是在几十个号多开的时候,就频繁出现网络错误,这是因为链游脚本的每一次操作,实际上都要和WAX PRC节点交互,发送HTTP请求,而这些公共的RPC节点,并非是无限制使用的。试想,如果你有1000个号,每秒发送几百次HTTP请求,对服务器来说压力很大,公共节点不是只服务你一个人的,所以公共节点一般都针对单个IP有访问频率限制,超出限制后就会timeout或者给你一个HTTP错误。

另外一个问题是目前大部分的公共节点都分布在欧洲和美洲,从大陆直接访问这些节点延迟一般在300ms以上,而亚洲节点只有韩国、日本、新加坡,从大陆直连的话也是延时比较高,不过其中日本节点
【EOSeoul】https://wax.eoseoul.io
如果走香港代理进行访问的话,延时值是比较理想的。

WAX公共节点列表

https://wax.eosio.online/endpoints

自建节点

最终要从根本上解决延时和访问频率限制的问题,最好还是自建节点,自建节点可以参考这篇官方文档:
https://developer.wax.io/en/dapp-development/wax-blockchain-setup/
WAX官方提供了一个docker镜像,可以仅凭几条命令就启动一个节点:
https://github.com/worldwide-asset-exchange/wax-blockchain/tree/develop/samples/mainnet

不过这个nodeos.sh脚本也有一些小问题:

  1. 没有及时更新为最新的docker镜像版本
  2. config.ini中的一些P2P节点已经失效,或者无法从大陆访问
  3. 不支持从快照启动

于是我将官方这份启动脚本clone到我的github上并进行了修改,方便大家使用:

✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱
安装脚本:https://github.com/encoderlee/wax_node
✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱✱

推荐配置

官方文档中说明,运行节点的机器配置至少是双核CPU和8G内存,另外,根据我们的经验,区块链节点对磁盘IO要求比较高,尤其是随机4K读取能力,所以磁盘一定要是SSD,可用空间大小建议150G以上。

安装步骤

接下来我们使用一台ubuntu 20.04的机器进行安装部署:

1.首先安装docker,建议按照docker官方文档安装最新版本docker:
https://docs.docker.com/engine/install/ubuntu/

sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

如果从我的github仓库下载,也可以直接执行

sudo ./install_docker.sh

2.下载快照
从这里下载WAX主网最新快照:
https://snapshots.waxsweden.org/
为什么要从快照启动?因为如果直接启动的话,节点会从0开始同步,等同步到最新区块,可能需要几十天甚至一个月,从最新快照启动可以大大节省我们的时间。

wget https://snapshots-cdn.eossweden.org/wax/2.0/latest -O latest.tar.gz
tar -zxvf latest.tar.gz

如果从我的github仓库下载,也可以直接执行

./download_snapshot.sh

注意,下载快照的时候最好使用香港代理,从大陆直连的话会非常缓慢

3.从快照启动
快照解压后会得到一个bin文件,假如是 snapshot-167371985.bin
接下来使用我的github仓库修改过的nodeos.sh来从快照启动节点

sudo ./nodeos.sh snapshot-167371985.bin

日志显示:

Starting initialization from snapshot, this may take a significant amount of time

说明程序已经开始解析bin文件生成数据了,只需耐心等待即可,这个过程时间长短取决于磁盘性能,可能耗时几十分钟到十几个小时不等,所以说为什么磁盘一定要SSD,如果不是SSD,后面节点同步,以及节点PRC访问,还会遇到很多瓶颈。
可以用 du -sh 命令检查 data 目录大小,大约增长到70多G左右,节点日志开始滚动,就说明正常了。
此时可以用

sudo pkill nodeos

命令停止节点,然后不带参数运行nodeos.sh

sudo ./nodeos.sh

即可正常使用节点了

4.检查同步状态
即便是从快照启动,我们的节点仍然会落后最新区块一点,此时节点会自动从其它公共节点同步数据,逐渐追上最新区块,在此期间,该节点RPC API 已经可以使用,等待完全同步后,节点RPC API才能达到正常性能,在此之间RPC API 虽然能用,但是性能较差。

使用命令检查当前节点状态

sudo ./cleos.sh --url http://localhost:8888 get info

对比公共节点状态

sudo ./cleos.sh --url https://api.wax.alohaeos.com get info

可以得到两者最新区块的差距

以上是关于链游脚本攻略搭建自己的WAX网络节点的主要内容,如果未能解决你的问题,请参考以下文章

WAX链游搭建自己的WAX网络节点

WAX链游发布一个免费开源的MiningNetwork合约脚本BTK

WAX链游发布一个免费开源的MiningNetwork合约脚本BTK

WAX链游发布一个免费开源的MiningNetwork合约脚本BTK

WAX链游EOS网络第三方代付CPU资源原理

WAX链游EOS网络第三方代付CPU资源原理