查看原文
其他

WAX技术指南第九期:如何构建一个WAX Atomic API节点

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

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


Pink.gg 开发的 AtomicAssets NFT 标准因为WAX 市场 AtomicHub 的广泛使用成为了WAX 协议网络最流行的 NFT 标准 。


AtomicAssets NFT 标准与其他替代方案不同,它不需要用户提供任何 RAM,并提供本地双向交易报价以及支持使用代币背书 NFT。 您可以在 https://atomicassets.io/ 上阅读有关该标准的更多信息。


当然,如果用户和开发人员无法通过可扩展的 API 以简单有效的方式访问实时数据,那么任何出色的 NFT 框架都是不完整的,这就是 Pink.gg 开发 eosio-contract-api 也称为 Atomic API 的目的。

第 9 期 WAX 技术指南将介绍构建和运行 WAX Atomic API 节点的过程,使您作为公会或开发人员能够为生态系统提供非常有用的 API 服务……或者可能只为您个人提供。


01


如何设置 WAX Atomic API 节点


公共Atomic API 节点在 WAX 主网上得到了极大的利用,用户和 DApp 可以使用它们来查询Atomic资产和Atomic市场的状态和历史记录。


如果您希望虚拟化运行,则可以在 docker 中运行可靠的主网节点,如果您更喜欢在系统级别运行它,则可以通过 PM2 运行。


本文将介绍构建应用程序依赖项并使用 PM2 运行节点的过程。


02


主网要求


硬件

  • 8 核 CPU / 5Ghz+ 推荐

  • 1TB+ 磁盘/企业级 SSD 或 NVMe 

目前(2022 年 2 月)一个完整的节点使用大约 530GB 的磁盘空间,而 postgres 数据库目前使用 515GB。

  • 64GB+ 内存


操作系统

  • Ubuntu 20.04(推荐)


SHIP节点

  • 访问最新的 2.0.12–13 WAX State-History 节点

  • 同一 LAN 上的 SHIP 节点(强烈推荐)


网络

  • 现代互联网宽带/光纤连接(100Mb/s 同步及以上)

  • 1Gb/s+ 局域网


03


构建软件


在撰写本文时,eosio-contract-api 的当前版本是 v1.3.7


应用程序依赖项(一些我们的建议)

  • Node.js >= 16.0

  • PM2.5

  • PostgreSQL >= 14.0

  • Redis >= 5.0

  • Yarn


04


应用程序安装和配置过程


节点JS

> curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -> sudo apt install -y nodejs**Check Version***> node -v


PM2

> sudo npm install pm2 -g**Check Version**> pm2 -v


安装 Postgres 如下:

> sudo apt-get install wget ca-certificates> wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -> sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'> sudo apt update> sudo apt install postgresql postgresql-contrib**Check Version**> apt show postgresql


安装后需要创建新数据库并在必要时分配权限,此示例将使用默认的 postgres 用户。

> sudo su - postgres> psql**Assign a password to the postgres account**postgres=# \passwordEnter new password:Enter it again:**Create the database**postgres=# \l (lists databases)postgres=# CREATE DATABASE "api-wax-mainnet-atomic-1";postgres=# \l+ (lists databases - including size)postgres=# \q (quit)> exit


Redis

> curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg> echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list> sudo apt update> sudo apt install redis**Check Version**> redis-server --version**If there is a unmask error then**> sudo systemctl unmask redis-server.service


Yarn

> sudo npm install --global yarn**Check Version**> yarn --version


05


Atomic API


最新的搭建说明可以在 Pink.gg Github 上找到。


安装

> git clone https://github.com/pinknetworkx/eosio-contract-api.git> cd eosio-contract-api> yarn install


配置

针对您的具体部署需要调整三个配置文件

connections.config.jsonserver.config.jsonreaders.config.json


以下是此示例的基本配置,请根据您自己的部署进行调整:


connections.config.json

> cd ~/eosio-contract-api/config> cp example-connections.config.json connections.config.json> nano connections.config.json{ "postgres": { "host": "127.0.0.1", "port": 5432, "user": "postgres", "password": "YOUR POSGRESS PASSWORD", "database": "api-wax-mainnet-atomic-1" }, "redis": { "host": "127.0.0.1", "port": 6379 }, "chain": { "name": "wax-mainnet", "chain_id": "1064487b3cd1a897ce03ae5b6a865651747e2e152090f99c1d19d44e01aea5a4", "http": "http://10.0.0.65:8888", "ship": "ws://10.0.0.65:8080" }}


server.config.json
> cd ~/eosio-contract-api/config> cp example-server.config.json server.config.json> nano server.config.json{ "provider_name": "EOSphere Guild", "provider_url": "https://eosphere.io","server_addr": "0.0.0.0", "server_name": "wax-atomic-api.eosphere.io", "server_port": 9000,"cache_life": 5, "trust_proxy": true,"rate_limit": { "interval": 60, "requests": 240, "bill_execution_time": true },"ip_whitelist": [], "slow_query_threshold": 7500,"max_query_time_ms": 10000, "max_db_connections": 50,"namespaces": [ { "name": "atomicassets", "path": "/atomicassets", "args": { "atomicassets_account": "atomicassets", "connected_reader": "atomic-1", "socket_features": { "asset_update": false } } }, { "name": "atomicmarket", "path": "/atomicmarket", "args": { "atomicmarket_account": "atomicmarket", "connected_reader": "atomic-1", "socket_features": { "asset_update": false }, "api_features": { "disable_v1_sales": true } } }, { "name": "atomictools", "path": "/atomictools", "args": { "atomictools_account": "atomictoolsx", "atomicassets_account": "atomicassets", "connected_reader": "atomic-1" } } ]}


readers.config.json


Pink 团队的建议是索引只需要从区块 64000000 开始

> cd ~/eosio-contract-api/config> cp example-readers.config.json readers.config.json> nano readers.config.json[ { "name": "atomic-1","server_addr": "0.0.0.0", "server_port": 9001,"start_block": 64000000, "stop_block": 0, "irreversible_only": false,"ship_prefetch_blocks": 50, "ship_min_block_confirmation": 30, "ship_ds_queue_size": 20,"db_group_blocks": 10,"ds_ship_threads": 4,"modules": [],"contracts": [ { "handler": "atomicassets", "args": { "atomicassets_account": "atomicassets", "store_transfers": true, "store_logs": true } }, { "handler": "delphioracle", "args": { "delphioracle_account": "delphioracle" } }, { "handler": "atomicmarket", "args": { "atomicmarket_account": "atomicmarket", "store_logs": true } }, { "handler": "atomictools", "args": { "atomictools_account": "atomictoolsx", "store_logs": true } } ] }]


06


启动/停止Atomic API 服务


在这个例子中,Atomic API 服务将从块 64000000 开始索引,并将构建一个新的 postgres 数据库到当前的 headblock。


这需要一些时间,建议您在开始公开提供 API 之前确保索引已经赶上。


> cd ~/eosio-contract-api***Start Postgres Indexing Filler***> pm2 start ecosystems.config.json --only eosio-contract-api-filler***Start the API Server***> pm2 start ecosystems.config.json --only eosio-contract-api-server***Monitor Filler and Server***> pm2 log


注意:停止填充服务有时会出现问题,过早重新启动会导致两个填充实例运行,从而导致数据库损坏。 要解决这个问题,请确保填充程序实际上已通过在重新启动之前使用 top 或 htop 监视活动服务来停止对 postgres 的索引。


***Stop Postgres Indexing Filler***> pm2 stop eosio-contract-api-filler***Stop the API Server***> pm2 stop eosio-contract-api-server**Stop All***> pm2 stop all***Check using top or htop***


您的节点可以通过 http 端口 9000 访问,当公开提供服务时,最好在 SSL 卸载负载均衡器(例如 HAProxy 或 nginx)之后提供服务。


查询你的节点状态如下:

> curl http://x.x.x.x:9000/health> curl http://x.x.x.x:9000/atomicassets/v1/config> curl http://x.x.x.x:9000/atomicmarket/v1/config> curl https://x.x.x.x:9000/atomictools/v1/config


END


往期回顾BREAK AWAY


真金不怕火炼——FTX黑天鹅下链游依然坚挺


Alien Worlds挖矿创收新渠道


WAX 2022年回顾及2023路线图更新



防失联,加入橘猫玩家公会:


Telegram:https://t.me/NFTGamerChina

Discord:https://discord.gg/NU82sXeTNs







阅读原文,获取详细信息



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

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