链游脚本攻略搭建自己的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脚本也有一些小问题:
- 没有及时更新为最新的docker镜像版本
- config.ini中的一些P2P节点已经失效,或者无法从大陆访问
- 不支持从快照启动
于是我将官方这份启动脚本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链游发布一个免费开源的MiningNetwork合约脚本BTK
WAX链游发布一个免费开源的MiningNetwork合约脚本BTK