Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
6043a73
Update .gitbook/cn/infra/index.mdx
mintlify[bot] Feb 5, 2026
8575ccf
Update .gitbook/cn/infra/interact-node/index.mdx
mintlify[bot] Feb 5, 2026
95809b6
Update .gitbook/cn/infra/interact-node/command-line.mdx
mintlify[bot] Feb 5, 2026
ca38a80
Update .gitbook/cn/infra/interact-node/grpc.mdx
mintlify[bot] Feb 5, 2026
81c607b
Update .gitbook/cn/infra/interact-node/go.mdx
mintlify[bot] Feb 5, 2026
55f2a80
Update .gitbook/cn/infra/interact-node/rest.mdx
mintlify[bot] Feb 5, 2026
c0520cc
Update .gitbook/cn/infra/run-node.mdx
mintlify[bot] Feb 5, 2026
638ddeb
Update .gitbook/cn/infra/set-up-keyring.mdx
mintlify[bot] Feb 5, 2026
aa9ebea
Update .gitbook/cn/infra/join-a-network.mdx
mintlify[bot] Feb 5, 2026
39761bb
Update .gitbook/cn/infra/cosmovisor.mdx
mintlify[bot] Feb 5, 2026
792e25c
Update .gitbook/cn/infra/upgrade-node.mdx
mintlify[bot] Feb 5, 2026
6d54533
Update .gitbook/cn/infra/public-endpoints.mdx
mintlify[bot] Feb 5, 2026
cab04a9
Update .gitbook/cn/infra/premium-endpoints.mdx
mintlify[bot] Feb 5, 2026
7df6c92
Update .gitbook/cn/infra/archival-setup.mdx
mintlify[bot] Feb 5, 2026
4658ebf
Update .gitbook/cn/infra/validator-mainnet/index.mdx
mintlify[bot] Feb 5, 2026
0a3fc38
Update .gitbook/cn/infra/validator-mainnet/peggo.mdx
mintlify[bot] Feb 5, 2026
56f0d9d
Update .gitbook/cn/infra/validator-testnet/index.mdx
mintlify[bot] Feb 5, 2026
2edc68c
Update .gitbook/cn/infra/validator-testnet/peggo.mdx
mintlify[bot] Feb 5, 2026
cc635a9
Update .gitbook/docs.json
mintlify[bot] Feb 5, 2026
453fea5
Update index.mdx
ChuhanJin Feb 6, 2026
b49e923
Update .gitbook/cn/infra/index.mdx
bguiz Feb 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 134 additions & 0 deletions .gitbook/cn/infra/archival-setup.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
---
title: 归档设置
---

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

## 架构

为了使归档数据的服务更加便捷,我们将数据分成较小的片段。这些片段存储在 `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 |

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

![归档架构](./assets/archival_architecture.jpg)

## 系统要求

托管归档数据片段的每个节点应满足以下最低要求:

| 组件 | 最低规格 | 备注 |
| ----------- | --------------------- | ---------------------------------------------------------- |
| **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
aws s3 cp --recursive s3://injective-snapshots/mainnet/subnode/<SNAPSHOT_DIR> $INJ_HOME
```

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

#### 3. 生成配置文件夹
```bash
injectived init $MONIKER --chain-id injective-1 --home $INJ_HOME --overwrite
```
#### 4. 在 app.toml 文件中禁用修剪,在 config.toml 文件中阻止 p2p 并将日志级别设置为 error。

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

```bash
# 在 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
injectived start --home $INJ_HOME
```

### 网关配置

#### 1. 克隆网关仓库
```bash
git clone https://github.com/decentrio/gateway
```
#### 2. 构建网关
```bash
make build
```
#### 3. 创建配置文件
```yaml
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
gateway start --config $CONFIG_FILE
```
171 changes: 171 additions & 0 deletions .gitbook/cn/infra/cosmovisor.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
---
title: Injective 网络的 Cosmovisor 设置指南
---

Cosmovisor 是为基于 Cosmos SDK 的区块链设计的进程管理器,可简化二进制(链)升级的管理。本指南提供了为 Injective 网络节点设置 Cosmovisor 的分步说明。

> **注意:** 这些说明假设你已经有一个现有的链二进制文件(例如 `injectived`),如果你选择从源代码安装 Cosmovisor,还需要一个可用的 Go 环境。请根据你的具体设置调整名称和路径。

---

## 目录

1. [安装](#安装)
- [通过 Go 安装](#通过-go-安装)
2. [环境变量](#环境变量)
3. [目录结构](#目录结构)
4. [运行 Cosmovisor](#运行-cosmovisor)
5. [处理链升级](#处理链升级)
6. [将 Cosmovisor 作为 Systemd 服务运行](#将-cosmovisor-作为-systemd-服务运行)

---

## 安装

### 通过 Go 安装

如果你已安装 Go,可以使用以下命令安装 Cosmovisor:

```bash
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.5.0
```

> **提示:** 确保你的 Go 二进制安装路径(通常是 `$GOPATH/bin` 或 `$HOME/go/bin`)已添加到系统的 `PATH` 中。你可以通过运行以下命令验证安装:
>
> ```bash
> which cosmovisor
> ```

## 环境变量

设置以下环境变量,以便 Cosmovisor 知道要运行哪个二进制文件以及在哪里找到它:

- **`DAEMON_NAME`**
你的链二进制文件的名称(例如 `injectived`)。

- **`DAEMON_HOME`**
你节点的主目录(例如 `~/.injectived`)。

你可以在 shell 的配置文件(如 `~/.bashrc` 或 `~/.profile`)中设置这些变量,或直接在终端会话中导出它们:

```bash
export DAEMON_NAME=injectived
export DAEMON_HOME=~/.injectived
```

---

## 目录结构

Cosmovisor 期望在你节点的主目录中有特定的文件夹结构:

1. **创建 Genesis 目录**

此目录保存初始(genesis)二进制文件。

```bash
mkdir -p $DAEMON_HOME/cosmovisor/genesis/bin
```

2. **复制当前二进制文件**

将当前的链二进制文件(例如 `injectived`)放入 genesis 文件夹。确保文件名与 `DAEMON_NAME` 值匹配(见下一节)。

```bash
cp $(which injectived) $DAEMON_HOME/cosmovisor/genesis/bin/injectived
```

---

## 运行 Cosmovisor

不要直接运行链的二进制文件,而是通过执行以下命令使用 Cosmovisor 启动节点:

```bash
cosmovisor run start
```

Cosmovisor 将:

- 在 `$DAEMON_HOME/cosmovisor/genesis/bin`(或适当的升级文件夹)中查找二进制文件。
- 使用该二进制文件启动你的节点。
- 监控任何链上升级信号,并在需要时自动切换二进制文件。

---

## 处理链升级

当链上宣布升级时,准备新的二进制文件,以便 Cosmovisor 可以自动切换到它:

1. **创建升级目录**

使用链上提供的升级名称(例如 `v1.14.0`):

```bash
mkdir -p $DAEMON_HOME/cosmovisor/upgrades/<upgrade_name>/bin
```

2. **放置新二进制文件**

编译或下载新的二进制文件,然后将其复制到升级目录。确保二进制文件名称与 `DAEMON_NAME` 匹配。

```bash
cp /path/to/new/injectived $DAEMON_HOME/cosmovisor/upgrades/<upgrade_name>/bin
cp /path/to/new/libwasmvm.x86_64.so $DAEMON_HOME/cosmovisor/upgrades/<upgrade_name>/bin
```

> **提示:** 如果你从 GitHub 下载了 `injectived` 二进制包,我们将 `libwasmvm.x86_64.so` 复制到升级 `bin` 目录。稍后将向 systemd 服务添加环境变量,以将此目录添加到 `LD_LIBRARY_PATH`。

3. **升级过程**

当达到升级高度时,Cosmovisor 将检测到计划的升级并自动切换到相应升级文件夹中的二进制文件。

---

## 将 Cosmovisor 作为 Systemd 服务运行

对于生产环境,通常将节点作为 systemd 服务运行。以下是示例服务文件。

1. **创建服务文件**

创建一个文件(例如 `/etc/systemd/system/injectived.service`),内容如下。根据需要调整路径和 `<your_username>`:

```ini
[Unit]
Description=Injective Daemon managed by Cosmovisor
After=network-online.target

[Service]
User=<your_username>
ExecStart=/home/<your_username>/go/bin/cosmovisor run start
Restart=always
RestartSec=3
Environment="DAEMON_NAME=injectived"
Environment="DAEMON_HOME=/home/<your_username>/.injectived"
Environment="PATH=/usr/local/bin:/home/<your_username>/go/bin:$PATH"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="LD_LIBRARY_PATH=/home/<your_username>/.injectived/cosmovisor/current/bin"

[Install]
WantedBy=multi-user.target
```

2. **启用并启动服务**

```bash
sudo systemctl daemon-reload
sudo systemctl enable injectived.service
sudo systemctl start injectived.service
```

3. **检查日志**

验证服务是否正常运行:

```bash
journalctl -u injectived.service -f
```

---
10 changes: 10 additions & 0 deletions .gitbook/cn/infra/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
description: >-
本节帮助节点运营者和验证者运行、升级和维护他们的哨兵/验证者节点。
title: 概述
---

本节提供运行 Injective 节点和验证者所需的所有信息。

* [主网验证者](/cn/infra/validator-mainnet/)
* [测试网验证者](/cn/infra/validator-testnet/)
7 changes: 7 additions & 0 deletions .gitbook/cn/infra/interact-node/command-line.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
title: 使用 CLI 与节点交互
---

你可以使用 `injectived` CLI 与节点交互。如果你正在与本地私有网络中的节点交互,请确保在使用 CLI 之前节点已在终端中运行。

有关如何使用 `injectived` 的更多详细信息,请参阅[使用 injectived](/developers/injectived/use/ "mention")。
Loading