跳转到主要内容
本指南将引导你完成创建一组提供归档数据的节点以及如何使用网关将它们连接在一起的过程

架构

为了使归档数据的服务更加便捷,我们将数据分成较小的段。这些段存储在 s3://injective-snapshots/mainnet/subnode
快照目录高度范围Injective 版本推荐磁盘大小
/00730 – 73Mv1.12.142 TiB
/606860M – 68Mv1.12.17 TiB
/738073M – 80Mv1.12.17 TiB
/808880M – 88Mv1.13.37 TiB
/889688M – 96Mv1.13.37 TiB
/889888M – 98Mv1.13.37 TiB
/9810698M – 106Mv1.13.37 TiB
/9810798M – 107Mv1.14.07.5 TiB
/6610166M – 101Mv1.14.027 TiB
/105116105M – 116Mv1.15.07.5 TiB
/113127113M – 127Mv1.15.011 TiB
/119143119M – 143Mv1.17.016 TiB
/138150138M – 150Mv1.17.25.8 TiB
这些段通过网关连接在一起,网关是一个聚合代理,根据区块范围将查询路由到适当的节点 归档架构

系统要求

托管归档数据切片的每个节点应具有以下最低要求
组件最低规格备注
CPUAMD EPYC™ 9454P48 核 / 96 线程
内存128 GB DDR5 ECCDDR5-5200 MHz 或更高,ECC 用于数据完整性
存储7 – 40 TB NVMe Gen 4PCIe 4.0 驱动器,可以是单个驱动器或 RAID-0 阵列

设置步骤

在托管归档段的每个节点上:

1. 使用以下命令下载你的设置所需历史记录的归档段

aws s3 cp --recursive s3://injective-snapshots/mainnet/subnode/<SNAPSHOT_DIR> $INJ_HOME

2. 根据上表下载或设置适当的 injective 二进制文件或镜像标签

3. 生成你的配置文件夹

injectived init $MONIKER --chain-id injective-1 --home $INJ_HOME --overwrite

4. 在你的 app.toml 文件中禁用修剪,并在 config.toml 文件中阻止 p2p 并将日志级别设置为 error。

这确保数据不会被修剪,节点保持在停止状态。将日志级别设置为 error 可减少磁盘操作并提高性能。
# 在 app.toml 中禁用修剪
sed -i 's/^pruning *= *.*/pruning = "nothing"/' $INJ_HOME/config/app.toml

# 在 config.toml 中禁用 p2p 并禁用创建空块
awk '
    BEGIN { section = "" }
    /^\[/ {
    section = $0
    }
    section == "[p2p]" {
    if ($1 ~ /^laddr/) $0 = "laddr = \"tcp://0.0.0.0:26656\""
    if ($1 ~ /^max_num_inbound_peers/) $0 = "max_num_inbound_peers = 0"
    if ($1 ~ /^min_num_inbound_peers/) $0 = "min_num_inbound_peers = 0"
    if ($1 ~ /^pex/) $0 = "pex = false"
    if ($1 ~ /^seed_mode/) $0 = "seed_mode = false"
    }
    section == "[consensus]" {
    if ($1 ~ /^create_empty_blocks/) $0 = "create_empty_blocks = false"
    }
    { print }
    ' $INJ_HOME/config/config.toml > $INJ_HOME/config/config.tmp && mv $INJ_HOME/config/config.tmp $INJ_HOME/config/config.toml

# 将日志级别设置为 error(更少的磁盘写入 = 更好的性能)
sed -i 's/^log_level *= *.*/log_level = "error"/' $INJ_HOME/config/app.toml

5. 运行你的节点

injectived start --home $INJ_HOME

网关配置

1. 克隆网关仓库

git clone https://github.com/decentrio/gateway

2. 构建网关

make build

3. 创建你的配置文件

upstream:
  # 示例:节点 1 持有区块 0-80M,而节点 2 持有区块 80-88M
  - rpc: "http://$NODE1:$RPC_PORT"
    grpc: "$NODE1:$GRPC_PORT"
    api: "http://$NODE1:$API_PORT"
    blocks: [0,80000000]  
  - rpc: "http://$NODE2:$RPC_PORT"
    grpc: "$NODE2:$GRPC_PORT"
    api: "http://$NODE2:$API_PORT"
    blocks: [80000000,88000000]

  # <其他节点在这里>

  # 归档尖端,这服务于最新的 x 个区块,通常设置为修剪节点
  - rpc: "http://$PRUNED_NODE:$RPC_PORT"
    grpc: "$PRUNED_NODE:$GRPC_PORT"
    api: "http://$PRUNED_NODE:$API_PORT"
    blocks: [1000]


ports:
  rpc: $RPC_PORT
  api: $API_PORT 
  grpc: $GRPC_PORT
  # 暂时将这些设置为零以禁用
  jsonrpc: 0
  jsonrpc_ws: 0

4. 运行网关

gateway start --config $CONFIG_FILE