# REST API

> NeuroChain REST API 完整参考——按领域分组列出节点和 gateway 的全部端点，包括请求字段、签名操作的目标地址、查询参数、金额与错误的约定以及速率限制。

Source: https://docs.nro.world/zh/reference/rest

链通过两个 HTTP 服务对外提供访问：

| 服务 | 默认地址 | 用途 |
|---------|---------|-----|
| **Gateway**（Node.js） | `http://localhost:3000` | dApp 和 Web 应用调用的服务。代理节点，并提供 WebSocket、AI 工具和缓存 |
| **节点 RPC**（Rust） | `http://localhost:9933` | 唯一的事实来源。部分运维端点只在这里提供 |

大多数路径在两者上相同。下表会标出只存在于其中一方的端点。示例使用 `$GATEWAY` 和 `$NODE_RPC`——参见[从这里开始](/zh/learn/start-here)。

## 约定

### 金额

- 链上金额是**以 uNRO 为单位的整数**（`1 NRO = 1 000 000 uNRO`）。
- 响应会在每个金额旁附带格式化好的 **`*_human`** 字符串（`balance_human`、`value_human`、`stake_human`……）。请直接展示这些字段，不要在客户端自行换算。
- 在请求体中，除非端点另有说明，金额一律以 uNRO 为单位、作为 **JSON 数字**发送。

### 签名操作

每个会改变状态的端点都需要签名。分为两类：

| 类型 | 签名消息 | `nonce` |
|------|----------------|---------|
| **交易**（`POST /api/v1/transactions`） | `nc-tx-v2|from|to|value|nonce` | 账户 nonce：最后确认值 + 待处理数 + 1 |
| **操作**（其他所有端点） | `nc-tx-v2|actor|<target>|<value>|nonce` | 毫秒时间戳，每个地址严格递增 |

*目标*（target）是一个用于标识操作的保留系统地址；表格中在 **签名目标** 一列给出。每个请求都携带 `signature`（hex）、`public_key`（hex 格式的 ML-DSA-65）和 `nonce`。参见[钱包 → 签名操作](/zh/learn/wallet#signed-operations)。

在 `CHAIN_ENV=mainnet`（默认值）下，缺失或无效的签名会被以 **401** 拒绝。在 `CHAIN_ENV=testnet` 下节点只记录一条警告——仅用于本地开发。

大多数操作**在共识中应用**：响应返回 `"status": "pending"` 和一个 `tx_hash`；该交易进入区块后，效果才可见。

#### 载荷签名 {#the-payload-signature}

上面的签名涵盖了执行者、目标和数值，但不涵盖操作的其余部分——收款方、会话密钥的权限范围、一张投票。在 mainnet 上，每个操作还会携带一个覆盖其作用对象全部内容的**载荷签名**，使区块提议者和中继节点都无法篡改它：

- **操作**（质押、信任列表、投票、NFT 转移、会话密钥、保险库、注册……）：端点不会直接将操作加入队列，而是返回 `{ "needs_payload_signature": true, "op", "sign_payload", "prepared" }`。用同一把密钥对 `sign_payload`（`nc-op-v1|…`，由节点构造）签名，再将 `{ …prepared, "payload_signature": "<hex>" }` 发送到 `POST /api/v1/markers/submit`，由它将操作加入队列。
- **资产与交易所操作**：将请求（使用 human 金额）连同 `route`、`from` 和 `nonce` 发送到 `POST /api/v1/dex/prepare`；它返回 `canonical` 消息、原始 `payload` 和人类可读的 `summary`。对 `canonical` 签名，然后将同一请求附带 `payload_signature` 发送到对应端点。

个人中心和交易所会替你完成这两步，并在你签名之前展示该操作。

### 错误

错误以 JSON 返回：`{"error": "<message>"}`，有时附带 `hint` 或其他字段。使用的 HTTP 状态码：

| 状态码 | 含义 |
|------|---------|
| 200 | 成功——但部分较老的端点也会以 200 返回 `{"error": …}`；务必检查 `error` |
| 400 | 请求错误、校验失败、被 Sentinel 拒绝 |
| 401 | 签名缺失或无效，密钥未绑定到该地址 |
| 403 | 在当前模式下被禁止（mainnet 上的水龙头、mainnet 上不经共识的写调用），部署被 VMGuardian 拒绝 |
| 404 | 未找到 |
| 409 | 名称已被占用 |
| 429 | 触发速率限制 |
| 502 / 503 | Gateway 无法连接节点 |

### 分页

列表端点接受 `limit` 和 `offset`（部分还接受 `page`）。每个端点都对 `limit` 设有上限（通常为 100 或 200）。

### 速率限制与 CORS

| 位置 | 默认值 | 变量 |
|-------|---------|----------|
| 节点 RPC，按 IP | 100 次请求/秒 | `NEUROCHAIN_RPC_RATE_LIMIT` |
| Gateway，按 IP | 200 次请求/秒 | `GLOBAL_RL_MAX_RPS` |
| Gateway AI 端点（`/contracts/audit`、`/contracts/generate`……），按 IP | 10 次请求/分钟 | `AI_RL_MAX_RPM` |

允许的来源：两个服务均通过 `CORS_ALLOWED_ORIGINS` 配置（默认 `*`）。

---

## 网络与节点

| 方法 | 路径 | 说明 |
|--------|------|-------|
| GET | `/health` | `status`、`height`、`round`、`mempool`、`peers`、`tps`、`total_txs`、`validator_count`、`bft_quorum`、`bft_ready` |
| GET | `/status`, `/api/v1/status` | 仅节点。高度、验证者、分片、网络名称 |
| GET | `/api/v1/network/status` | 仅 Gateway。供浏览器使用的网络概览 |
| GET | `/metrics` | Prometheus 文本格式——参见[运行节点](/zh/operate/node) |
| GET | `/api/v1/shards` | 各分片的高度和根 |
| GET | `/api/v1/state/root` | `global_root`、`shard_roots`、`height`、`root_height`、`n_shards` |
| GET | `/api/v1/state/snapshot` | 仅节点。用于引导新节点的完整签名状态快照 |
| GET | `/api/v1/checkpoints` | 已签名的检查点。`offset`、`limit` |
| GET | `/peers` | 仅节点。已连接的对等节点 |
| GET | `/api/v1/gas/estimate` | `base_fee`、各操作的 gas、`total_burned`、`nft_transfer_fee`——参见 [Gas 与手续费](/zh/learn/gas) |
| GET | `/api/v1/wasm/version` | 仅 Gateway。浏览器 WASM 模块的版本清单 |

## 区块

| 方法 | 路径 | 说明 |
|--------|------|-------|
| GET | `/api/v1/blocks` | `limit`（≤ 100，默认 20）、`offset`、`page`。最新的在前 |
| GET | `/api/v1/blocks/latest` | 仅 Gateway。`{ "block": … }` |
| GET | `/api/v1/blocks/:height` | 单个区块：`height`、`hash`、`parent_hash`、`proposer`、`tx_root`、`state_root`、`tx_count`、`gas_used`、`base_fee`、`fees_burned`、`shard`、`round`、`timestamp` |
| GET | `/api/v1/blocks/:height/transactions` | 区块中的交易 |

## 交易

| 方法 | 路径 | 签名目标 | 说明 |
|--------|------|-----------|-------|
| POST | `/api/v1/transactions` | 交易本身 | 请求体见下文 |
| GET | `/api/v1/transactions` | — | `address`、`hash`、`type`（`staking` 列出质押操作）、`limit`（≤ 200）、`offset`、`page` |
| GET | `/api/v1/transactions/:hash` | — | 单笔交易，含 `status`、`gas`、`fee`、`fee_human`、`value_human` |
| GET | `/api/v1/tx/:hash/proof` | — | Merkle 包含证明：`leaf_index`、`proof`、`tx_root`、`block_height` |
| POST | `/api/v1/transactions/:hash/confirm` | `neuro:system.trust` | 确认一笔被暂扣的转账（仅限所有者的主密钥）——参见 [Sentinel](/zh/ai/sentinel) |
| POST | `/api/v1/transactions/:hash/cancel` | `neuro:system.trust` | 取消一笔被暂扣的转账 |
| GET | `/api/v1/held/:address` | — | 某地址被暂扣的转账 |
| GET | `/api/v1/cross-shard/queue` | — | 跨分片中继。`status`、`limit`、`offset` |

**`POST /api/v1/transactions` 请求体**

| 字段 | 类型 | 必填 | 含义 |
|-------|------|----------|---------|
| `from` | string | 是 | 发送方地址 |
| `to` | string | 是 | 接收方、合约，或 `neuro:system.deploy` |
| `value` | number | 是 | uNRO |
| `nonce` | number | 是 | 下一个账户 nonce |
| `signature` | string | 是 | 对 `nc-tx-v2|from|to|value|nonce` 的 ML-DSA-65 签名，hex |
| `public_key` | string | 是 | ML-DSA-65 公钥，hex |
| `gas_price` | number | 否 | 每单位 gas 的 uNRO；必须 ≥ 基础费用 |
| `data` | string | 否 | 以 JSON 字符串表示的合约调用或部署（也接受 hex）——参见 [ABI](/zh/build/abi)、[部署](/zh/build/deploy) |

响应：`tx_hash`、`status: "pending"`、`estimated_block`；当 Sentinel 标记该交易时还会附带 `sentinel_score` 和 `sentinel_warning`，当策略层暂扣它时附带 `held` 详情。

## 账户

| 方法 | 路径 | 说明 |
|--------|------|-------|
| GET | `/api/v1/accounts/:address` | `balance`、`balance_human`、`nonce`…… |
| GET | `/api/v1/accounts/:address/transactions` | 历史记录。`limit`、`offset` |
| GET | `/api/v1/accounts/:address/token-transfers` | 涉及该地址的代币（NRC-20）转账 |
| GET | `/api/v1/accounts/:address/totals` | 仅节点。发送和接收的总额 |
| POST | `/api/v1/faucet` | 仅限测试网络（`CHAIN_ENV=testnet`）。请求体：`address`、`public_key`、`amount`（uNRO，可选） |
| POST | `/api/v1/wallet/derive-address` | 请求体：`words`。从助记词推导 `.human` 地址——**会把助记词发送到服务器**。mainnet 上关闭；测试网络上仅在 `NEUROCHAIN_ALLOW_SERVER_DERIVE=true` 时可用 |

## 名称与 NFT

| 方法 | 路径 | 签名目标 | 请求体 / 说明 |
|--------|------|-----------|--------------|
| POST | `/api/v1/addresses/human` | `neuro:system.name` | 仅节点。`name`、`owner` + 签名字段。注册自定义 `.human` 名称 |
| GET | `/api/v1/addresses/human/price` | — | 仅节点。`?name=` → 按长度计算的价格 |
| POST | `/api/v1/nodes/register` | `neuro:system.node` | `name`、`owner`、可选的 `node_address`（用于注册 `.app` / `.vault`）+ 签名字段 |
| GET | `/api/v1/nodes` | — | 已注册的节点 |
| GET | `/api/v1/nodes/:address` | — | 单个节点记录 |
| PUT/POST | `/api/v1/nodes/:address/profile` | `neuro:system.node` | `description`、`website`、`commission_bps`、`p2p_endpoint`、`rpc_endpoint` |
| POST | `/api/v1/nodes/:address/unjail` | `neuro:system.node` | 监禁期结束后重新进入验证者集合（由所有者签名） |
| POST | `/api/v1/nft/transfer` | NFT 地址 | `nft_address`、`from`（当前所有者）、`to` + 签名字段。手续费 100 uNRO |
| GET | `/api/v1/nft/:address` | — | NFT 记录和转移历史 |
| GET | `/api/v1/nft/owner/:address` | — | 某地址拥有的 NFT |
| POST | `/api/v1/agents/register` | `neuro:system.agent` | `name`、`owner` + 签名字段。注册 `.agent` |
| GET | `/api/v1/agents/:address` | — | Agent 记录 |

## 质押

| 方法 | 路径 | 签名目标 | 请求体 / 说明 |
|--------|------|-----------|--------------|
| POST | `/api/v1/staking/stake` | `neuro:system.stake` | `address`、`amount` + 签名字段 |
| POST | `/api/v1/staking/unstake` | `neuro:system.stake` | `address` + 签名字段 |
| POST | `/api/v1/staking/delegate` | 验证者地址 | `delegator`、`validator`、`amount` + 签名字段 |
| POST | `/api/v1/staking/undelegate` | 验证者地址 | `delegator`、`validator` + 签名字段 |
| GET | `/api/v1/staking/info/:address` | — | 某地址的质押、锁定和奖励 |
| GET | `/api/v1/staking/validators` | — | 验证者及其质押和委托 |
| GET | `/api/v1/staking/delegations/:validator` | — | 委托给某验证者的委托 |
| GET | `/api/v1/staking/my-delegations/:address` | — | 某地址发起的委托 |
| GET | `/api/v1/staking/rewards/:address` | — | 奖励历史；`source=stake|delegation|commission` |
| GET | `/api/v1/validators` | — | 共识验证者，含 `stake`、`trust_score`、`blocks_proposed`、`votes_cast`、`last_active` |
| GET | `/api/v1/slashing/history` | — | 仅节点。罚没记录。`limit` |

参见[质押与委托](/zh/learn/staking)。

## 治理

| 方法 | 路径 | 签名目标 | 请求体 / 说明 |
|--------|------|-----------|--------------|
| POST | `/api/v1/governance/propose` | `neuro:system.governance` | `proposer`、`title`、`description`、`kind`（`text` / `PARAM_CHANGE`）、`payload`、`voting_duration` + 签名字段 |
| POST | `/api/v1/governance/:id/vote` | `neuro:system.governance` | `voter`、`accept`（bool）+ 签名字段 |
| GET | `/api/v1/governance/proposals` | — | `status`、`limit`（≤ 100）、`offset` |
| GET | `/api/v1/governance/:id` | — | 单个提案及其投票 |
| GET | `/api/v1/governance/params` | — | 所有参数及其取值和说明 |

参见[治理](/zh/learn/governance)。

## 保险库（多重签名）

| 方法 | 路径 | 签名目标 | 请求体 / 说明 |
|--------|------|-----------|--------------|
| GET | `/api/v1/vault/:addr/config` | — | `threshold`、`members` |
| GET | `/api/v1/vault/:addr/proposals` | — | 支付提案 |
| GET | `/api/v1/vault/member/:addr` | — | 某地址所属的保险库 |
| POST | `/api/v1/vault/:addr/proposals` | 保险库地址 | `proposer`、`to`、`amount`、`description` + 签名字段 |
| POST | `/api/v1/vault/:addr/proposals/:id/sign` | 保险库地址 | `signer` + 签名字段。签名数达到阈值时执行支付 |
| POST | `/api/v1/vault/:addr/members` | 保险库地址 | `member`、`requester` + 签名字段 |
| POST | `/api/v1/vault/:addr/threshold` | 保险库地址 | `threshold`、`requester` + 签名字段 |

::: warning 实验性
保险库操作目前由接收请求的节点直接应用，而不经过共识。在其迁移到共识之前，请对同一个保险库只使用单个节点。
:::

## 合约

| 方法 | 路径 | 签名目标 | 请求体 / 说明 |
|--------|------|-----------|--------------|
| GET | `/api/v1/contracts` | — | `owner`、`limit`、`offset` |
| GET | `/api/v1/contracts/:address` | — | 元数据、`security_score`、所有者、代码哈希 |
| GET | `/api/v1/contracts/:address/token-info` | — | 仅 Gateway。NRC-20 名称、符号、小数位数、供应量 |
| POST | `/api/v1/contracts/:address/call` | — | `function`、`args`、`dry_run`、`gas_limit`、`caller`。用 `dry_run: true` 读取；mainnet 上拒绝写入 |
| POST | `/api/v1/contracts/deploy` | `neuro:system.deploy` | 仅节点。`owner`、`bytecode_hex` 或 `base64_wasm`、`name`、`description`、`template` + 签名字段 |
| POST | `/api/v1/contracts/analyze` | — | 仅节点。`bytecode_hex` → `risk_score`、`security_score`、`ml_score`、`model`、`violations` |
| POST | `/api/v1/contracts/attest` | — | `bytecode_hex` → 以 ML-DSA-65 签名的分析结果：`score`、`bytecode_hash`、`timestamp`、`signature`、`pubkey` |
| POST | `/api/v1/contracts/audit` | — | 仅 Gateway。`bytecode_hex` → 节点分析结果（不接受源代码） |
| POST | `/api/v1/contracts/reaudit` | — | 仅 Gateway。`address` → 对已部署合约重新运行分析 |
| POST | `/api/v1/contracts/generate` | — | 仅 Gateway。合约模板生成（SmartForge） |
| POST | `/api/v1/contracts/certify` | `neuro:system.cert` | 签发安全证书（VMGuardian 运营方） |
| POST | `/api/v1/contracts/whitelist` | `neuro:system.whitelist` | 仅节点。`bytecode_hash`——受信任的模板字节码 |
| PATCH | `/api/v1/contracts/:address/score` | `neuro:system.score` | 仅节点。`security_score` |
| GET | `/api/v1/certificates` | — | `owner`、`limit`、`offset` |
| GET | `/api/v1/certificates/:id` | — | 单个证书 |
| GET | `/api/v1/certificates/contract/:address` | — | 某合约的证书 |
| GET | `/api/v1/templates` | — | 已注册的合约模板 |
| GET | `/api/v1/templates/:id` | — | 单个模板及其 ABI |
| POST | `/api/v1/templates/register` | `neuro:system.templates` | `author`（一个 `.node`）、`name`、`description`、`category`、`bytecode_hex`、`abi_json`、`fee_unro` + 签名字段 |
| POST | `/api/v1/templates/deprecate` | `neuro:system.templates` | 仅节点。`template_id`、`author`、`delete` + 签名字段 |

## AI 与模型

| 方法 | 路径 | 说明 |
|--------|------|-------|
| GET | `/api/v1/ai/status` | 仅 Gateway。AI 模型状态 |
| POST | `/api/v1/sentinel/score` | 对交易特征打分：`value`、`gas_price`、`nonce`、`last_nonce`、`balance`、`tx_count_last_10`、`recipient_tx_count`、`is_self_transfer` → `score`、`anomalous`、`category` |
| GET | `/api/v1/oracle/log` | AI 决策日志。`model`、`kind`、`subject`、`limit`、`offset` |
| GET | `/api/v1/oracle/log/:id` | 单条决策 |
| GET | `/api/v1/models/registry` | 链上模型注册表。`limit`、`offset` |
| GET | `/api/v1/models/registry/:id` | 单个模型版本 |
| POST | `/api/v1/models/register` | 仅限验证者；签名目标为 `neuro:models.registry`。`from`、`name`、`version`、`weights_hash`、`architecture`、`params_count`、`accuracy` + 签名字段 |
| GET | `/api/v1/ai/export/{blocks,txs,validators,oracle}` | 训练数据导出（JSON Lines） |
| POST | `/api/v1/assistant/ask`, GET `/api/v1/assistant/health` | 仅 Gateway。文档助手（除非设置 `ASSISTANT_ENABLED=1`，否则关闭） |

## Sentinel 信任列表

| 方法 | 路径 | 签名目标 | 请求体 |
|--------|------|-----------|------|
| POST | `/api/v1/trust/add` | `neuro:system.trust` | `owner`、`recipient` + 签名字段 |
| POST | `/api/v1/trust/remove` | `neuro:system.trust` | `owner`、`recipient` + 签名字段 |
| GET | `/api/v1/trust/:owner` | — | 受信任的收款方及其生效高度 |

## 账户抽象

| 方法 | 路径 | 签名目标 | 请求体 |
|--------|------|-----------|------|
| POST | `/api/v1/session/grant` | `neuro:system.session` | `account`、`session_pk`、`scope`、`cap`、`expiry_block` + 签名字段 |
| POST | `/api/v1/session/revoke` | `neuro:system.session` | `account`、`session_pk` + 签名字段 |
| GET | `/api/v1/session/list/:account` | — | 某账户的会话密钥 |
| POST | `/api/v1/sponsor/deposit` | `neuro:system.sponsor` | `address`、`amount` + 签名字段 |
| POST | `/api/v1/sponsor/withdraw` | `neuro:system.sponsor` | `address`、`amount` + 签名字段 |
| GET | `/api/v1/sponsor/:address` | — | 赞助池余额 |

参见[账户抽象](/zh/ai/account-abstraction)。

## 身份与恢复

这些端点签名的是各自专用的消息（例如 `nc-rotate|addr|add|remove|nonce`），而不是 `nc-tx-v2`；参见[身份](/zh/ai/identity)。

| 方法 | 路径 | 请求体 |
|--------|------|------|
| POST | `/api/v1/identity/rotate` | `owner`、`add`、`remove` + 签名字段 |
| POST | `/api/v1/identity/recovery/setup` | `owner`、`guardians`、`threshold`、`timelock` + 签名字段 |
| POST | `/api/v1/identity/recovery/request` | `target`、`new_key` + 签名字段 |
| POST | `/api/v1/identity/recovery/approve` | `target`、`guardian` + 签名字段 |
| POST | `/api/v1/identity/recovery/reject` | `target`、`guardian` + 签名字段 |
| POST | `/api/v1/identity/recovery/withdraw` | `target` + 签名字段 |
| POST | `/api/v1/identity/recovery/cancel` | `owner` + 签名字段 |
| GET | `/api/v1/identity/:addr` | 密钥和版本 |
| GET | `/api/v1/identity/recovery/:addr` | 恢复配置及任何未完成的请求 |
| GET | `/api/v1/identity/guardian-of/:addr` | 该地址担任守护者的身份 |

## 原生资产与交易所

| 方法 | 路径 | 请求体 / 说明 |
|--------|------|--------------|
| GET | `/api/v1/assets` | 已发行的资产 |
| GET | `/api/v1/assets/:id` | 单个资产 |
| GET | `/api/v1/assets/check-symbol` | `?symbol=`——该代码是否可用且有效 |
| GET | `/api/v1/assets/balances/:addr` | 资产余额 |
| POST | `/api/v1/assets/issue` | `from`、`name`、`symbol`、`decimals`、`initial`、`max_supply`、`reissuable`、`reissue_unlock_height`、`issue_nonce` + 签名字段。手续费 `asset_issue_fee` |
| POST | `/api/v1/assets/transfer` | `from`、`to`、`asset_id`、`amount` + 签名字段 |
| GET | `/api/v1/dex/pools`, `/api/v1/dex/pools/:id` | 资金池 |
| POST | `/api/v1/dex/pools` | `from`、`asset_x`、`asset_y`、`amount_x`、`amount_y` + 签名字段 |
| POST | `/api/v1/dex/liquidity/add` | `from`、`pool_id`、`max_a`、`max_b` + 签名字段 |
| POST | `/api/v1/dex/liquidity/remove` | `from`、`pool_id`、`shares` + 签名字段 |
| GET | `/api/v1/dex/quote` | 兑换报价 |
| POST | `/api/v1/dex/swap` | `from`、`pool_id`、`asset_in`、`amount_in`、`min_out`、`deadline_height` + 签名字段。在下一个区块提交时批量清算 |
| GET | `/api/v1/dex/window` | 当前批次窗口 |
| POST | `/api/v1/dex/deposit`, `/api/v1/dex/withdraw` | 在主余额与交易所余额之间划转资金 |
| GET | `/api/v1/dex/balances/:addr`, `/dex/positions/:addr`, `/dex/activity/:addr`, `/dex/transactions` | 交易所余额、LP 头寸、活动记录 |

| POST | `/api/v1/dex/prepare` | 上述任一操作的请求，外加 `route`（例如 `dex/swap`）、`from`、`nonce` → `canonical`、`payload`、`summary`；不会加入任何队列 |

所有资产与交易所操作的签名目标均为 `neuro:system.assets`，并在共识中应用，同时以 `payload_signature` 携带对节点准备的消息（`nc-asset-op-v1|op|from|fields|nonce`）的[载荷签名](#the-payload-signature)。受保护或已保留的代码或资产名称会被拒绝。

## 预备操作

| 方法 | 路径 | 请求体 / 说明 |
|--------|------|--------------|
| POST | `/api/v1/markers/submit` | `{ tx, auth_to, auth_value, payload_signature }`——操作响应中的 `prepared` 部分，加上对其 `sign_payload` 的签名。校验两个签名后将操作加入队列 |

## IBC v2 <Badge type="warning" text="实验性" /> {#ibc-v2}

| 方法 | 路径 | 请求体 / 说明 |
|--------|------|--------------|
| POST | `/api/v1/ibc/channel/open` | `from`、`channel`、`port`、`counterparty_chain`、`allowed_denoms` + 签名字段 |
| POST | `/api/v1/ibc/channel/pause` | `from`、`channel`、`paused` + 签名字段 |
| POST | `/api/v1/ibc/transfer` | `from`、`channel`、`dest_chain`、`receiver`、`denom`、`amount` + 签名字段 |
| POST | `/api/v1/ibc/recv` | `from`、`packet_id`、`receiver`、`denom`、`amount` + 签名字段 |
| POST | `/api/v1/ibc/ack` | `from`、`id` + 签名字段 |
| POST | `/api/v1/ibc/redeem` | `from`、`channel`、`dest_chain`、`receiver`、`denom`、`amount` + 签名字段 |
| POST | `/api/v1/ibc/client/update`, `/api/v1/ibc/attest` | 轻客户端更新与证明（中继器） |
| GET | `/api/v1/ibc/channels`, `/ibc/packets`, `/ibc/denoms`, `/ibc/client/:chainId`, `/ibc/header/latest`, `/ibc/voucher/:addr`, `/ibc/pq/test-vector` | 状态与测试向量 |

所有 IBC v2 操作的签名目标均为 `neuro:system.ibc`；`recv`、`ack` 以及通道和客户端操作仅限 IBC 运营方密钥。参见 [IBC v2 与分片](/zh/operate/ibc)。
