查看原文
其他

WAX技术指南第四期:如何构建一个稳固的WAX主网节点

NFT Gamer NFT Gamer 2023-07-11
点击蓝字关注我们

原文:EOSphere (Ross Dold) 
翻译:WAX Eastern (NFT Gamer)

如果您一直在关注我们的 WAX 技术指南系列,您现在应该能够在安全的WAX测试网环境中构建和运行基于Antelope的 WAX 软件。免费提供的代币和相对较低的系统要求使 WAX 测试网成为学习的理想场所,但现在是升级到WAX主网的时候了。

第四期WAX技术指南将为您提供构建稳固的WAX主网节点的方法。


01


如何构建WAX主网节点


就Antelope链而言,WAX主网对基础设施的要求非常高。当然,WAX主网在不断发展,有很多方法可以满足这些要求。


本文将介绍一个当前有效(2022 年 9 月)并由 EOSphere Guild使用的示例,该节点每天为多个对等点和数百万个API请求提供服务。


02


主网要求


硬件

  • 如果您想生产块,建议使用 4 核 CPU / 4Ghz+

  • (1) 256GB+ 磁盘/企业级 SSD 或 NVMe(高耐久性)

  • (2) 4TB+ 磁盘/SAS 或 SATA 都可以,但首选 SSD 或 NVMe

  • 128GB+ 内存

操作系统

  • Ubuntu 18.04

  • Ubuntu 20.04(推荐)

  • Ubuntu 22.04

互联网

  • 宽带/光纤连接(100Mb/s 同步及以上)

  • 静态公共IP地址(终止于此节点或使用 NAT 转发)


03


准备操作系统环境


在构建和配置WAX软件之前,本例中的操作系统环境 Ubuntu 20.04 需要针对性能进行配置,并承担负载。


04


泽字节文件系统 (ZFS)


此节点构建使用两个离散磁盘来平衡磁盘IO并为 blocks.log 文件提供更实惠的存储选项,该文件目前为2.1TB 且还在增长。


磁盘1是高速企业级 SSD 或 NVMe 将用于 WAX 软件、所有配置和状态文件的操作系统磁盘。状态文件是极其 IO 密集型的,消费级的 SSD 的寿命将由于大量写入而变得短暂,因此需要使用高耐久性企业 SSD 或 NVMe。


注意:需要注意的是,如果您有足够的可用空间,可以在内存中运行这些状态文件,这个主题将在以后的文章中介绍。


在此示例中,磁盘 1 将运行默认的操作系统 Ext4 文件系统,该系统已在 Ubuntu 20.04 安装期间植入。


磁盘 2 是大容量 SATA 或 SAS 磁盘,将托管 blocks.log 文件。块目录上的 IO 需求远低于状态文件,速度较慢、容量较大的基于主轴的磁盘仍然适用。


在此示例中,磁盘 2 将运行 ZFS 文件系统,这将给我们带来两个主要好处。ZFS 将使我们能够使用 LZ4 压缩(目前有 1.3 倍的增益)并且它将通过自适应替换缓存 (ARC) 改进磁盘 IO。


使用以下配置在磁盘 2 上实施 ZFS:

#Install ZFS> sudo apt-get install zfsutils-linux#Locate the Disk 2 device name> lsblk#Create ZFS Pool called "datavolume" on device "sdb"> sudo zpool create datavolume /dev/sdb#Enable LZ4 compression> sudo zfs set compression=lz4 datavolume#Disable ZFS access time Updates> sudo zfs set atime=off datavolume#Set ARC to only cache metadata> sudo zfs set primarycache=all datavolume#Set the mountpoint location to your preferred location> sudo zfs set mountpoint=/home/eosphere/datavolume datavolume#Verify ZFS Settings> zfs get all


05


网络时间协议 (NTP)


对于全球网状区块链来说,跨所有节点同步时间至关重要。


Chrony (https://chrony.tuxfamily.org/)是一个优秀的 NTP 客户端,非常适合 WAX 主网的需求。


安装、配置和验证如下:

#Install Chrony> sudo apt install chrony#If necessary manually add local peers, these are AU servers> sudo nano /etc/chrony/chrony.conf
server 0.pool.ntp.orgserver 1.pool.ntp.orgserver 2.pool.ntp.orgserver 3.pool.ntp.org#Restart Chrony> sudo /etc/init.d/chrony restart#Verify> chronyc sources -v> chronyc tracking#Set your local timezone if neccesary> sudo timedatectl set-timezone Australia/Perth



06


堆栈限制和打开文件


WAX 软件内存寻址和生产主网节点将收到的API请求数量要求增加 Ubuntu 20.04 默认堆栈限制和打开文件数量。


配置并验证提高的限制,如下所示:

> sudo nano /etc/systemd/system.conf#Append the following configurationDefaultLimitNOFILE=64000 DefaultLimitSTACK=65536000#Restart server and verify> ulimit -a


07


构建软件


WAX 软件来自开源 Antelope 软件,但经过修改以适应 WAX 协议网络的需要。


目前,WAX Block Producer 接受的软件构建和版本是 v3.1.0wax01,由EOS阿姆斯特丹公会成员cc32d9创建。


最新的 wax建造标签目前在 cc32d9 Github (https://github.com/cc32d9/wax-leap/tags)上可用。


构建过程


此示例使用 Ubuntu Linux 按照以下过程从源代码构建 WAX 软件:

> cd ~> sudo apt install -y file> git clone https://github.com/cc32d9/wax-leap.git> cd wax-leap> git checkout v3.1.0.wax01 > git submodule update --init --recursive> sudo bash scripts/install_deps.sh> mkdir build# If necessary supplement $(nproc) below with the number of jobs your server can sustain, I suggest 4GB RAM required / job> nice bash scripts/pinned_build.sh ~/wax-leap/build/leap-deps ~/wax-leap/build $(nproc)# Binaries are located in ~/wax-leap/build/programs


08


配置


现在已经编制了一个干净的 WAX 软件版本,让我们开始配置 WAX 主网操作。


要配置和启动节点,将使用 nodeos,nodeos 是在每个 WAX 协议网络节点上运行的核心服务守护程序。


nodeos 可以配置为处理智能合约、验证交易、生成包含有效交易的块,并确认块以将它们记录在区块链上。


nodeos 的主要操作功能是;将其作为区块生产者、网络 API 端点、P2P 种子节点或状态历史节点运行。通常在 WAX 主网等繁忙的网络上,您会在物理上分散的服务器上分离这些功能。


在此 WAX 主网示例中,您将使您的节点连接到其他网络对等点,提供 P2P 种子节点服务,并使该节点可用作网络 API 端点。本节点不提供历史数据查询支持。


nodeos 需要两个文件来连接到对等点并在 WAX 主网上运行:


Config.ini(配置文件)


按照以下命令运行不带配置的 nodeos 来创建默认的 config.ini:

> mkdir ~/waxdata> cd ~/wax-leap/build/programs/nodeos> ./nodeos --data-dir ~/waxdata --config-dir ~/waxdata


然后您将能够编辑新创建的config.ini并查看所有可用参数:

> cd ~/waxdata> nano config.ini


现在编辑 config.ini 并添加以下配置设置:

# the location of the blocks directory on Disk 2blocks-dir = /home/eosphere/datavolume/blockswasm-runtime = eos-vm-jitchain-state-db-size-mb = 131072chain-state-db-guard-size-mb = 1024enable-account-queries = truehttp-server-address = 0.0.0.0:8888access-control-allow-origin = *access-control-allow-headers = Origin, X-Requested-With, Content-Type, Accepthttp-max-response-time-ms = 100verbose-http-errors = truehttp-validate-host = falsep2p-listen-endpoint = 0.0.0.0:9876# 3dkrenderwax: FI, wax-peerp2p-peer-address = peer.3dkrender.com:9880
# 3dkrenderwax: FI, queryp2p-peer-address = query.3dkrender.com:9880
# amsterdamwax: NL, Amsterdamp2p-peer-address = wax.eu.eosamsterdam.net:9101
# amsterdamwax: US, Washington, D.C.p2p-peer-address = waxp2p.us.eosamsterdam.net:9101
# blokcrafters: CA, Montreal, Quebecp2p-peer-address = wax-peer-ca.blokcrafters.io:9876
# blokcrafters: FI, Helsinki, Uusimaap2p-peer-address = wax-peer-eu.blokcrafters.io:9876
# bp.box: KY, Cayman Islandsp2p-peer-address = wax.defibox.xyz:9966
# bp.wecan: GB, Londonp2p-peer-address = seed2-wax-mainnet.wecan.dev:14998
# bp.wecan: US, NewYorkp2p-peer-address = seed3-wax-mainnet.wecan.dev:14998
# cryptolions1: DE, Germany-Finlandp2p-peer-address = wax.cryptolions.io:9876
# dapplica: DE, Germany-Finlandp2p-peer-address = wax.dapplica.io:9876
# eosauthority: DE, Falkensteinp2p-peer-address = node-wax.eosauthority.com:10301
# eosauthority: FI, Helsinkip2p-peer-address = node-wax-p2p.eosauthority.com:10301
# eosdacserver: GB, United Kingdomp2p-peer-address = wax-p2p.eosdac.io:29876
# eosdublinwow: FI, Finlandp2p-peer-address = wax.p2p.eosdublin.io:9876
# eoseouldotio: JP, Seoulp2p-peer-address = p2p.wax.eoseoul.io:29876
# eosphereiobp: CA, Beauharnoisp2p-peer-address = peer1-wax.eosphere.io:9876
# eosphereiobp: CA, Beauharnoisp2p-peer-address = peer2-wax.eosphere.io:9876
# greeneosiobp: DE, Germanyp2p-peer-address = p2p1.wax.greeneosio.com:9876
# guild.nefty: DE, Germanyp2p-peer-address = p2p-node1.neftyblocks.com:9876
# guild.nefty: FI, Finlandp2p-peer-address = p2p-node2.neftyblocks.com:9876
# ledgerwiseio: FI, LBp2p-peer-address = waxp2p.ledgerwise.io:21877
# nation.wax: CA, Canadap2p-peer-address = wax.seed.eosnation.io:9876
# oneinacilian: GB, United Kingdomp2p-peer-address = p2p.oiac.io:9876
# sentnlagents: GB, United Kingdomp2p-peer-address = waxp2p.sentnl.io:9876
# tokengamerio: DE, Germanyp2p-peer-address = peer2.wax.tgg.gg:9876
# waxhiveguild: FI, Finnlandp2p-peer-address = peer1.hivebp.io:9876
# waxhiveguild: DE, Germanyp2p-peer-address = peer2.hivebp.io:9876
# waxmadrid111: DE, SEEDp2p-peer-address = wax-seed.eosiomadrid.io:9876
# waxswedenorg: SE, Swedenp2p-peer-address = p2p.waxsweden.org:35777# PeerList - https://validate.eosnation.io/wax/reports/config.htmlagent-name = "<yourname> WAX Mainnet"max-clients = 100sync-fetch-span = 500plugin = eosio::http_pluginplugin = eosio::chain_pluginplugin = eosio::chain_api_plugin


Genesis.json


这些是 WAX 主网上每个新的起始节点所需的初始状态参数。创建文件如下:

> cd ~/waxdata> nano genesis.json


将以下参数添加到 WAX 公共主网的 genesis.json文件中:

{ "initial_timestamp": "2019-06-05T12:00:00.000", "initial_key": "EOS8i2pkwtv2JmdYWNJdcy5BcJ7wCE5q6mpE1hwT25HdgHMzeRday", "initial_configuration": { "max_block_net_usage": 1048576, "target_block_net_usage_pct": 1000, "max_transaction_net_usage": 524288, "base_per_transaction_net_usage": 12, "net_usage_leeway": 500, "context_free_discount_net_usage_num": 20, "context_free_discount_net_usage_den": 100, "max_block_cpu_usage": 500000, "target_block_cpu_usage_pct": 2000, "max_transaction_cpu_usage": 150000, "min_transaction_cpu_usage": 100, "max_transaction_lifetime": 3600, "deferred_trx_expiration_window": 600, "max_transaction_delay": 3888000, "max_inline_action_size": 4096, "max_inline_action_depth": 4, "max_authority_depth": 6 }}


09


运行Nodeos


现在已经配置了 config.ini 并创建了初始 WAX 主网链参数 genesis.json,您现在可以加入网络并同步节点。


使用屏幕即使在断开连接时也能使您的会话保持活动状态,用法如下:

#Create a new screen session
> screen -US wax #Disconnect screen session
> ctrl-a+d #Reconnect screen session
> screen -r wax


使用指向配置、数据目录和创世文件的指针运行Nodeos:

> cd ~/wax-leap/build/programs/nodeos> nodeos --data-dir ~/waxdata --config-dir ~/waxdata --genesis-json ~/waxdata/genesis.json


您的 WAX 主网节点现在将开始与配置的对等点同步,直到它赶上并与 WAX 主网链同步。


可以通过从快照和有效的 blocks.log 开始来加快同步过程,该过程在 WAX 技术指南第二期中进行了解释。


下一期 WAX 技术指南将研究使用代理来前置您的 API 服务,该代理将终止客户端 SSL 请求并为这些请求提供限制。


END


往期回顾BREAK AWAY


Play and Own 将在2023年取代Play to Earn


市值是评判区块链项目是否成功的唯一要素吗?


初探元宇宙和NFT的技术与未来



了解更多,加入橘猫玩家公会:


Telegram:https://t.me/NFTGamerChina

Discord:https://discord.gg/NU82sXeTNs







阅读原文,获取详细信息



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存