> ## Documentation Index
> Fetch the complete documentation index at: https://docs.injective.network/llms.txt
> Use this file to discover all available pages before exploring further.

# 归档设置

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

## 架构

为了使归档数据的服务更加便捷，我们将数据分成较小的段。这些段存储在 `s3://injective-snapshots/mainnet/subnode`

| 快照目录      | 高度范围        | Injective 版本 | 推荐磁盘大小  |
| --------- | ----------- | ------------ | ------- |
| `/0073`   | 0 – 73M     | v1.12.1      | 42 TiB  |
| `/6068`   | 60M – 68M   | v1.12.1      | 7 TiB   |
| `/7380`   | 73M – 80M   | v1.12.1      | 7 TiB   |
| `/8088`   | 80M – 88M   | v1.13.3      | 7 TiB   |
| `/8896`   | 88M – 96M   | v1.13.3      | 7 TiB   |
| `/8898`   | 88M – 98M   | v1.13.3      | 7 TiB   |
| `/98106`  | 98M – 106M  | v1.13.3      | 7 TiB   |
| `/98107`  | 98M – 107M  | v1.14.0      | 7.5 TiB |
| `/66101`  | 66M – 101M  | v1.14.0      | 27 TiB  |
| `/105116` | 105M – 116M | v1.15.0      | 7.5 TiB |
| `/113127` | 113M – 127M | v1.15.0      | 11 TiB  |
| `/119143` | 119M – 143M | v1.17.0      | 16 TiB  |
| `/138150` | 138M – 150M | v1.17.2      | 5.8 TiB |

这些段通过网关连接在一起，网关是一个聚合代理，根据区块范围将查询路由到适当的节点

<img src="https://mintlify.s3.us-west-1.amazonaws.com/injectivelabs/cn/infra/assets/archival_architecture.jpg" alt="归档架构" />

## 系统要求

托管归档数据切片的每个节点应具有以下最低要求

| 组件      | 最低规格                 | 备注                               |
| ------- | -------------------- | -------------------------------- |
| **CPU** | AMD EPYC™ 9454P      | 48 核 / 96 线程                     |
| **内存**  | 128 GB DDR5 ECC      | DDR5-5200 MHz 或更高，ECC 用于数据完整性    |
| **存储**  | 7 – 40 TB NVMe Gen 4 | PCIe 4.0 驱动器，可以是单个驱动器或 RAID-0 阵列 |

## 设置步骤

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

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

```bash theme={null}
aws s3 cp --recursive s3://injective-snapshots/mainnet/subnode/<SNAPSHOT_DIR> $INJ_HOME
```

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

#### 3. 生成你的配置文件夹

```bash theme={null}
injectived init $MONIKER --chain-id injective-1 --home $INJ_HOME --overwrite
```

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

这确保数据不会被修剪，节点保持在停止状态。将日志级别设置为 error 可减少磁盘操作并提高性能。

```bash theme={null}
# 在 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. 运行你的节点

```bash theme={null}
injectived start --home $INJ_HOME
```

### 网关配置

#### 1. 克隆网关仓库

```bash theme={null}
git clone https://github.com/decentrio/gateway
```

#### 2. 构建网关

```bash theme={null}
make build
```

#### 3. 创建你的配置文件

```yaml theme={null}
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. 运行网关

```bash theme={null}
gateway start --config $CONFIG_FILE
```
