diff --git a/.gitbook/cn/contributing.mdx b/.gitbook/cn/contributing.mdx
new file mode 100644
index 00000000..22bdb9d4
--- /dev/null
+++ b/.gitbook/cn/contributing.mdx
@@ -0,0 +1,20 @@
+---
+title: "关于本文档"
+description: "Injective 开发者文档由 Injective Labs 的开发者关系团队撰写和维护。"
+icon: info
+updatedAt: "2026-03-30"
+---
+
+[Injective Labs](https://injective.com) 是 Injective 区块链背后的核心团队。
+
+## 参与贡献
+
+本文档为开源项目。
+如果你发现错误或希望改进某个页面,请在以下地址提交 pull request:
+[`github.com/InjectiveLabs/injective-docs`](https://github.com/InjectiveLabs/injective-docs)。
+
+欢迎社区贡献!
+
+## 最近更新
+
+最近一次重大更新于 2026 年 3 月完成。
diff --git a/.gitbook/cn/defi/trading/oracle-feed-sources.mdx b/.gitbook/cn/defi/trading/oracle-feed-sources.mdx
new file mode 100644
index 00000000..0863d61a
--- /dev/null
+++ b/.gitbook/cn/defi/trading/oracle-feed-sources.mdx
@@ -0,0 +1,72 @@
+---
+title: "预言机价格源"
+description: "Injective 上非加密永续合约市场的预言机价格源和合约规范。"
+updatedAt: "2026-06-04"
+---
+
+下表列出了 Injective 上可用的非加密永续合约市场,包括资产说明、最大杠杆倍数,以及为每个市场指数价格提供支撑的底层预言机价格源。
+
+## 股票
+
+| 交易对 | 说明 | 底层资产 | 最大杠杆 |
+|------------|-------------|------------|--------------|
+| CRCL/USDC PERP | CRCL 跟踪 Circle Internet Group, Inc. 1 股普通股的价值。Circle 是一家全球性数字金融服务公司,也是全球最大的美元支持稳定币之一 USDC 的发行方。 | [CRCL / USD](https://app.pyth.com/explore/Equity.US.CRCL%2FUSD) | 25x |
+| RKLB/USDC PERP | RKLB 跟踪 Rocket Lab USA, Inc. 1 股普通股的价值。Rocket Lab 为商业、民用和国防客户提供火箭发射服务、航天器组件和太空系统。 | [RKLB / USD](https://app.pyth.com/explore/Equity.US.RKLB%2FUSD) | 10x |
+| AMZN/USDC PERP | AMZN 跟踪 Amazon.com, Inc. 1 股普通股的价值。亚马逊经营全球在线零售业务、AWS 云基础设施、数字媒体服务和物流业务。 | [AMZN / USD](https://app.pyth.com/explore/Equity.US.AMZN%2FUSD) | 25x |
+| NVDA/USDC PERP | NVDA 跟踪 NVIDIA Corporation 1 股普通股的价值。NVIDIA 生产用于游戏、数据中心、机器学习和高级计算的 GPU、加速计算系统和 AI 平台。 | [NVDA / USD](https://app.pyth.com/explore/Equity.US.NVDA%2FUSD) | 25x |
+| COIN/USDC PERP | COIN 跟踪 Coinbase Global, Inc. 1 股普通股的价值。Coinbase 运营一家领先的加密货币交易所和数字资产平台,为零售和机构客户提供交易、托管和质押服务。 | [COIN / USD](https://app.pyth.com/explore/Equity.US.COIN%2FUSD) | 25x |
+| ORCL/USDC PERP | ORCL 跟踪 Oracle Corporation 1 股普通股的价值。Oracle 为全球企业和政府提供企业软件、云基础设施和数据库管理系统。 | [ORCL / USD](https://app.pyth.com/explore/Equity.US.ORCL%2FUSD) | 10x |
+| INTC/USDC PERP | INTC 跟踪 Intel Corporation 1 股普通股的价值。Intel 是全球最大的半导体制造商之一,生产用于计算和通信的微处理器、芯片组和集成电路。 | [INTC / USD](https://app.pyth.com/explore/Equity.US.INTC%2FUSD) | 10x |
+| MU/USDC PERP | MU 跟踪 Micron Technology, Inc. 1 股普通股的价值。Micron 设计和制造存储器与存储半导体产品,包括用于计算机、移动设备和数据中心的 DRAM 和 NAND 闪存产品。 | [MU / USD](https://app.pyth.com/explore/Equity.US.MU%2FUSD) | 10x |
+| DELL/USDC PERP | DELL 跟踪 Dell Technologies Inc. 1 股普通股的价值。Dell 为全球企业和消费者提供 IT 基础设施、个人电脑、服务器、存储解决方案和云服务。 | [DELL / USD](https://app.pyth.com/explore/Equity.US.DELL%2FUSD) | 10x |
+| SNDK/USDC PERP | SNDK 跟踪 SanDisk Corporation 1 股普通股的价值。SanDisk 设计和制造闪存产品,包括面向消费和企业应用的固态硬盘和 NAND 存储解决方案。 | [SNDK / USD](https://app.pyth.com/explore/Equity.US.SNDK%2FUSD) | 10x |
+| AAPL/USDC PERP | AAPL 跟踪 Apple Inc. 1 股普通股的价值。Apple 开发和销售消费电子产品、软件与服务,包括 iPhone、Mac、iPad、Apple Watch,以及不断增长的数字服务生态系统。 | [AAPL / USD](https://app.pyth.com/explore/Equity.US.AAPL%2FUSD) | 25x |
+| TSLA/USDC PERP | TSLA 跟踪 Tesla, Inc. 1 股普通股的价值。Tesla 设计和制造电动汽车、电池储能系统和太阳能产品,并开发自动驾驶软件。 | [TSLA / USD](https://app.pyth.com/explore/Equity.US.TSLA%2FUSD) | 25x |
+| MSFT/USDC PERP | MSFT 跟踪 Microsoft Corporation 1 股普通股的价值。Microsoft 提供软件、云计算服务和硬件,包括 Windows、Azure、Microsoft 365 以及 Xbox 游戏平台。 | [MSFT / USD](https://app.pyth.com/explore/Equity.US.MSFT%2FUSD) | 25x |
+| META/USDC PERP | META 跟踪 Meta Platforms, Inc. 1 股普通股的价值。Meta 拥有 Facebook、Instagram 和 WhatsApp 等主流社交与消息平台,并在广告、AI、虚拟现实和元宇宙产品方面进行投入。 | [META / USD](https://app.pyth.com/explore/Equity.US.META%2FUSD) | 25x |
+| GOOGL/USDC PERP | GOOGL 跟踪 Alphabet Inc. 1 股普通股的价值。Alphabet 是 Google 的母公司,经营搜索、广告、云计算和 AI 业务,并在自动驾驶汽车和生命科学等领域进行投入。 | [GOOGL / USD](https://app.pyth.com/explore/Equity.US.GOOGL%2FUSD) | 25x |
+| PLTR/USDC PERP | PLTR 跟踪 Palantir Technologies Inc. 1 股普通股的价值。Palantir 开发数据分析和 AI 软件平台,被政府机构和大型企业用于情报、运营和决策。 | [PLTR / USD](https://app.pyth.com/explore/Equity.US.PLTR%2FUSD) | 25x |
+| HOOD/USDC PERP | HOOD 跟踪 Robinhood Markets, Inc. 1 股普通股的价值。Robinhood 运营一家总部位于美国的零售券商平台,提供股票、期权和加密货币的免佣金交易。 | [HOOD / USD](https://app.pyth.com/explore/Equity.US.HOOD%2FUSD) | 25x |
+| AVGO/USDC PERP | AVGO 跟踪 Broadcom Inc. 1 股普通股的价值。Broadcom 设计和提供广泛的半导体与基础设施软件解决方案,用于数据中心、网络、存储和无线通信。 | [AVGO / USD](https://app.pyth.com/explore/Equity.US.AVGO%2FUSD) | 10x |
+
+## Pre-IPO
+
+| 交易对 | 说明 | 底层资产 | 最大杠杆 |
+|------------|-------------|------------|--------------|
+| SPCX/USDC PERP | SPCX 代表 Space Exploration Technologies Corp. A 类普通股每股隐含价值的 Pre-IPO 市场。SpaceX 制造并发射火箭和航天器,运营 Starlink 宽带网络,并持有 xAI。 | SPCX/USDC | 5x |
+
+## 指数
+
+| 交易对 | 说明 | 底层资产 | 最大杠杆 |
+|------------|-------------|------------|--------------|
+| TRADFI/USDC PERP | TRADFI 提供对广泛的美国大盘股票基准的敞口。 | [Pyth Feed](https://app.pyth.com/explore/Equity.US.SPY%2FUSD) | 50x |
+| TTI/USDC PERP | TTI 提供对以科技股为主的美国股票基准的敞口。 | [Pyth Feed](https://app.pyth.com/explore/Equity.US.QQQ%2FUSD) | 50x |
+
+## ETF
+
+| 交易对 | 说明 | 底层资产 | 最大杠杆 |
+|------------|-------------|------------|--------------|
+| GLD/USDC PERP | GLD 跟踪 1 份黄金支持的交易所交易产品的价值。该产品旨在反映实物黄金金条的价格表现,让投资者无需直接持有实物即可获得对黄金的敞口。 | [GLD / USD](https://app.pyth.com/explore/Equity.US.GLD%2FUSD) | 50x |
+
+## 商品
+
+| 交易对 | 说明 | 底层资产 | 最大杠杆 |
+|------------|-------------|------------|--------------|
+| XAU/USDC PERP | XAU 跟踪 1 金衡盎司黄金的价值。黄金是一种在全球范围内交易的贵金属,被用于储备、投资产品、珠宝以及对冲通胀的投资组合。 | [XAU / USD](https://app.pyth.com/explore/Metal.XAU%2FUSD) | 50x |
+| XAG/USDC PERP | XAG 跟踪 1 金衡盎司白银的价值。白银是一种贵金属,在电子产品、太阳能板和医疗器械等领域有广泛的工业应用,同时也是一种投资资产。 | [XAG / USD](https://app.pyth.com/explore/Metal.XAG%2FUSD) | 50x |
+
+## 外汇
+
+| 交易对 | 说明 | 底层资产 | 最大杠杆 |
+|------------|-------------|------------|--------------|
+| EURUSD/USDC PERP | EURUSD 跟踪 EUR/USD 汇率。欧元(EUR)在整个欧元区使用,是全球外汇交易中流动性最高的货币之一。 | [EUR / USD](https://app.pyth.com/explore/FX.EUR%2FUSD) | 100x |
+| GBPUSD/USDC PERP | GBPUSD 跟踪 GBP/USD 汇率。英镑(GBP)是英国的官方货币,也是世界上历史最悠久、交易最活跃的货币之一。 | [GBP / USD](https://app.pyth.com/explore/FX.GBP%2FUSD) | 100x |
+| AUDUSD/USDC PERP | AUDUSD 跟踪 AUD/USD 汇率。澳大利亚元(AUD)是澳大利亚的官方货币,与铁矿石和煤炭等大宗商品出口密切相关。 | [AUD / USD](https://app.pyth.com/explore/FX.AUD%2FUSD) | 100x |
+| NZDUSD/USDC PERP | NZDUSD 跟踪 NZD/USD 汇率。新西兰元(NZD)是新西兰的官方货币,受农产品出口和全球风险偏好影响。 | [NZD / USD](https://app.pyth.com/explore/FX.NZD%2FUSD) | 100x |
+| USDCHF/USDC PERP | USDCHF 跟踪 USD/CHF 汇率。瑞士法郎(CHF)是瑞士的官方货币,由于瑞士的政治中立和金融稳定,被普遍视为避险货币。 | [USD / CHF](https://app.pyth.com/explore/FX.USD%2FCHF) | 100x |
+| USDCAD/USDC PERP | USDCAD 跟踪 USD/CAD 汇率。加拿大元(CAD)是加拿大的官方货币,鉴于加拿大是重要的原油出口国,其汇率与油价高度相关。 | [USD / CAD](https://app.pyth.com/explore/FX.USD%2FCAD) | 100x |
+| USDJPY/USDC PERP | USDJPY 跟踪 USD/JPY 汇率。日元(JPY)是日本的官方货币,也是全球流动性最好的货币之一,在市场承压期间常被用作避险资产。 | [USD / JPY](https://app.pyth.com/explore/FX.USD%2FJPY) | 100x |
+| USDSEK/USDC PERP | USDSEK 跟踪 USD/SEK 汇率。瑞典克朗(SEK)是瑞典的官方货币,对全球风险偏好和欧洲经济状况较为敏感。 | [USD / SEK](https://app.pyth.com/explore/FX.USD%2FSEK) | 50x |
+| USDNOK/USDC PERP | USDNOK 跟踪 USD/NOK 汇率。挪威克朗(NOK)是挪威的官方货币,与油价高度相关,反映挪威作为主要石油出口国的地位。 | [USD / NOK](https://app.pyth.com/explore/FX.USD%2FNOK) | 50x |
+| USDSGD/USDC PERP | USDSGD 跟踪 USD/SGD 汇率。新加坡元(SGD)是新加坡的官方货币,由新加坡金融管理局按有管理的浮动汇率政策管理。 | [USD / SGD](https://app.pyth.com/explore/FX.USD%2FSGD) | 50x |
+| USDHKD/USDC PERP | USDHKD 跟踪 USD/HKD 汇率。港元(HKD)是香港的官方货币,采用与美元挂钩的联系汇率制度。 | [USD / HKD](https://app.pyth.com/explore/FX.USD%2FHKD) | 50x |
diff --git a/.gitbook/cn/developers-ai/x402.mdx b/.gitbook/cn/developers-ai/x402.mdx
new file mode 100644
index 00000000..1e4d43f0
--- /dev/null
+++ b/.gitbook/cn/developers-ai/x402.mdx
@@ -0,0 +1,219 @@
+---
+title: x402
+description: >-
+ 在 Injective 上使用 x402。
+ 面向人类用户和 AI 智能体的稳定币支付通道。
+updatedAt: "2026-06-01"
+---
+
+x402 是一个开放协议,它借助长期未被使用的 `402 Payment Required` HTTP 状态码,将支付嵌入到 HTTP 请求的生命周期中。在支付可在一个区块内结算(约 650 毫秒)的 Injective EVM 上,x402 可以将任意 API 端点变成按请求付费的服务,无需 API key、订阅或注册。
+
+
+
+[_x402 payment with USDC on Injective (1 min) - YouTube_](https://youtube.com/watch?v=vHJ7wPGv_ZM)
+
+在本教程中,你将:
+
+- 理解 x402 如何将支付集成到 HTTP 协议中
+- 使用 x402 演示应用获取一份门槛为 0.01 USDC x402 支付的市场数据
+- 从你的 EVM 钱包手动签署并在链上结算一笔 USDC 支付
+- 了解 x402 为何天然契合自主 AI 智能体
+- 使用 `@injectivelabs/x402` 库为你自己的 Express API 端点添加支付保护
+
+## 前置条件
+
+| 工具 | 最低版本 | 版本检查 | 安装 |
+|---|---|---|---|
+| 浏览器 | 任意现代浏览器 | - | - |
+| EVM 钱包浏览器扩展 | - | - | [MetaMask](https://metamask.io) 或 [Rabby](https://rabby.io) |
+| Node.js | 18 | `node -v` | [nodejs.org](https://nodejs.org) |
+
+你还需要:
+
+- 将你的 EVM 钱包连接到 Injective 网络(主网或测试网)
+- 钱包中持有 INJ 代币用于支付 gas 费
+- 钱包中持有少量 USDC(几美分就足以完成支付)
+
+## 开始使用
+
+在浏览器中打开 x402 演示页面:[`agents.injective.com/x402`](https://agents.injective.com/x402)。
+
+
+
+在继续下一节之前,请确保你的 EVM 钱包扩展已连接到 Injective 网络。
+
+## 什么是 x402?
+
+x402 将支付嵌入到 HTTP 协议中,
+服务器在返回数据之前,会作为 API 响应流程的一部分要求并收取支付。
+
+### 一次 x402 交互中会发生什么?
+
+当客户端调用一个受 x402 保护的 HTTP 端点时,交互过程如下:
+
+1. 客户端向该 API 端点发送一次正常的 HTTP 请求。
+2. 服务器返回 `402 Payment Required` 和一份价格报价。
+3. 客户端*签署*一笔 USDC 转账交易,但该交易尚未被广播到网络。
+4. 一个 x402 *facilitator*(结算方)将已签名的支付提交到区块链并等待确认。
+5. 客户端重试原始请求,这次带上已完成支付的详细信息。
+6. 服务器通过 facilitator 验证收据,并返回所请求的数据。
+
+
+
+### x402 免去了哪些步骤?
+
+无需预先注册、API key 管理、订阅或信用卡。
+这意味着服务器可以在一次 HTTP 会话中完成报价、验证支付并交付数据。
+
+facilitator 处理所有区块链交互,让你的 API 服务器保持 web 原生形态:
+
+| Facilitator 的职责 | 它帮你屏蔽了什么 |
+|---|---|
+| 验证支付签名 | 服务器上的加密验证代码 |
+| 将交易提交到链上 | RPC 端点管理 |
+| Gas 估算与费用 | Gas 计算逻辑 |
+| 等待链上确认 | 区块轮询:你只收到一个 yes/no |
+
+### x402 只适用于以太坊吗?
+
+x402 与网络无关:
+该开放标准同时支持 EVM 兼容网络、SVM 兼容网络等。
+本教程演示如何在 *Injective* 上使用 x402。
+
+### 为什么在 Injective 上使用 x402?
+
+Injective 具有非常高的吞吐量和极低的延迟:
+出块时间约为 650 毫秒,
+并具备确定性的单区块最终性。
+这意味着 x402 支付可以以接近信用卡支付的速度完成结算,
+而成本却远远低于信用卡。
+这解锁了新的应用场景,包括按次付费和小额支付。
+由于 x402 交易也是完全程序化的,
+它们非常适合 AI 智能体使用。
+
+## 手动 x402 支付
+
+按以下步骤触发手动 x402 支付流程,
+以便观察钱包签名的过程:
+
+(1)在演示页面点击 "Pay it yourself"。
+
+
+
+(2)在市场选择器中,选择你喜欢的任意一个市场。
+(本例中选择 "TSLA/USDC PERP" 市场。)
+
+
+
+(3)点击 "Pay 1 cent" 发起 x402 支付。
+
+
+
+(4)当钱包弹出提示时,检查 USDC 转账详情,然后点击 "Sign" 授权支付。
+
+
+
+演示页面将显示 "Success!",并展示所选的价格。
+(本例中显示 "TSLA/USDC PERP" 的价格。)
+
+
+
+这表明支付已在 Injective EVM 上完成结算,
+并且服务器已交付受保护的数据。
+
+## x402 如何实现智能体支付?
+
+x402 让 API 变得可被程序化支付。
+当调用方是 AI 智能体而非人类时,
+这一特性变得至关重要。
+
+传统的计费模型
+(API key、OAuth 流程、按月订阅)
+需要人类来设置和维护凭据。
+当 AI 智能体自主运行或跨大量用户扩展时,预先注册的凭据会成为瓶颈和安全隐患:
+密钥会过期,配额被共享,每接入一个新服务都需要人为参与。
+
+x402 消除了这一瓶颈。
+持有 USDC 余额的智能体可以在无需预先注册的情况下调用任何受 x402 保护的端点。
+API 报价,智能体签署支付,数据以程序化的方式返回。
+这一过程按每次请求执行,链上收据构成不可篡改的审计记录。
+个别 API 调用中不需要人类介入。
+
+在 Injective 上,x402 提供了这样的支付原语:
+让智能体在运行时获取市场数据、触发交易并调用各类服务。
+无需人类提前进行任何设置或操作。
+
+
+x402 标准是开源且与网络无关的。
+它由 Coinbase 发起,并对所有网络开放实现。
+完整规范请参阅 [x402 协议文档](https://docs.x402.org/introduction)。
+
+
+## 使用 x402 保护你自己的 API 端点
+
+
+
+创建一个带有 x402 保护端点的 Node.js 服务器:
+
+1. 进入你的项目目录(或使用 `npm init -y` 新建一个)。
+2. 在终端运行 `npm install @injectivelabs/x402` 安装 x402 库。
+3. 创建 `server.js` 并从 `@injectivelabs/x402/middleware` 导入 `express` 和 `injectivePaymentMiddleware`。
+4. 在中间件栈中调用 `injectivePaymentMiddleware`,指定要保护的端点、支付网络、USDC 资产地址,以及以最小单位表示的金额。
+
+
+一个最小示例:
+
+```js server.js
+import express from 'express';
+import { injectivePaymentMiddleware } from '@injectivelabs/x402/middleware';
+
+const app = express();
+
+app.use(
+ injectivePaymentMiddleware(
+ {
+ 'GET /perps': {
+ accepts: [{
+ // Injective EVM (chain ID 1776)
+ network: 'eip155:1776',
+ // USDC on Injective EVM
+ asset: '0xa00C59fF5a080D2b954d0c75e46E22a0c371235a',
+ // $0.01 (USDC uses 6 decimal places)
+ amount: '10000',
+ }],
+ },
+ },
+ { facilitatorUrl: process.env.X402_FACILITATOR_URL }
+ )
+);
+
+app.get('/perps', (_req, res) => res.json({ data: "... your data here ..." }));
+
+```
+
+使用了 npm 上的 [`@injectivelabs/x402`](https://www.npmjs.com/package/@injectivelabs/x402)。
+
+
+任何在请求头中携带有效 USDC 支付收据的 HTTP 客户端
+(包括 AI 智能体)都能获得响应。
+你无需在服务器上实现 API key,甚至无需实现用户账号系统。
+
+## 后续步骤
+
+恭喜!
+你已使用 x402 协议在 Injective EVM 上完成了一次 API 请求付费,
+并了解了如何通过一次中间件调用来保护你自己的端点。
+
+以下是你所学到的内容:
+
+- x402 如何使用 HTTP `402 Payment Required` 状态码为 API 响应加上支付门槛
+- facilitator 如何将 RPC、gas 与签名验证从你的服务器中抽离
+- 如何借助演示应用和 EVM 钱包触发并签署 x402 USDC 支付
+- 为什么 x402 天然契合以编程方式调用 API 的 AI 智能体
+- 如何为 Express 服务器添加 `injectivePaymentMiddleware`
+
+延伸阅读:
+
+- [x402 协议规范](https://x402.org):本库所实现的开放标准
+- [Injective 上的 AI 开发者](/developers-ai):在 Injective 上构建 AI 原生应用的工具与技能
+- [Injective EVM 文档](/evm):Injective 上的 EVM 开发
diff --git a/.gitbook/cn/developers-defi/usdc-cctp-tutorial.mdx b/.gitbook/cn/developers-defi/usdc-cctp-tutorial.mdx
new file mode 100644
index 00000000..9eb5019e
--- /dev/null
+++ b/.gitbook/cn/developers-defi/usdc-cctp-tutorial.mdx
@@ -0,0 +1,253 @@
+---
+title: USDC + CCTP 教程
+description: >-
+ 如何使用跨链传输协议(CCTP)在 Injective 与其他网络之间以 1:1 的比例转账 USDC
+updatedAt: "2026-05-07"
+---
+
+在本教程中,你将:
+
+- 了解 CCTP 的 burn-attest-mint(销毁-签名-铸造)协议是如何工作的
+- 在源链上销毁 USDC 以发起跨链转账
+- 获取 Circle 的 attestation(签名证明),以授权在目标链上进行铸造
+- 在目标链上铸造 USDC,完成转账
+
+**Injective 上的 CCTP 是什么?**
+
+跨链传输协议(CCTP)允许你在 Injective 与其他网络之间以 1:1 的比例转账 USDC。
+
+USDC 作为原生稳定币在 Injective 上提供,
+通过 [CCTP](/developers-defi/usdc-stablecoin) 使用。
+CCTP 在受支持的网络之间以 1:1 的比例转账 USDC,
+流程如下:
+
+1. 在源链上销毁 USDC。
+1. 获取一份 *attestation*。
+1. 在目标链上铸造等额的 USDC。
+
+无需包装或跨链桥接。
+
+## 前置条件
+
+在开始本教程之前,请确保已安装以下工具:
+
+| 工具 | 最低版本 | 检查方式 | 安装 |
+| --- | --- | --- | --- |
+| Node.js | 22+ | `node --version` | [nodejs.org](https://nodejs.org/) |
+| npm | 11+ | `npm --version` | 随 Node.js 一同安装 |
+
+你还需要:
+
+- 浏览器中已安装 [MetaMask](https://metamask.io/)
+ - 已连接到 Injective 测试网
+ - 同时已连接到 Sepolia
+- 通过 [Injective 水龙头](https://testnet.faucet.injective.network/)
+ 或 [Google Cloud 水龙头](https://cloud.google.com/application/web3/faucet/injective/testnet) 获取的测试网 INJ
+- 通过某个 [Sepolia 水龙头](https://sepoliafaucet.com/) 获取的测试网 Sepolia ETH
+- 通过 [Circle Faucet](https://faucet.circle.com/) 获取的测试网 USDC
+
+## 开始使用
+
+本教程配套代码位于
+[USDC CCTP demo](https://github.com/injective-dev/usdc-cctp-injective-demo) 仓库。
+
+克隆仓库并安装依赖:
+
+```shell
+git clone https://github.com/injective-dev/usdc-cctp-injective-demo
+cd usdc-cctp-injective-demo
+npm install
+```
+
+启动开发服务器:
+
+```shell
+npm run dev
+```
+
+在浏览器中打开 `http://localhost:5173` 查看该 dApp。
+
+## CCTP 是如何工作的?
+
+CCTP 通过在源链上销毁 USDC、
+从 Circle 的 API 获取一份已签名的 attestation,
+并在目标链上铸造等额 USDC 的方式实现跨链转账。
+
+CCTP 通过三个步骤完成跨链 USDC 转账:
+
+1. **Burn(销毁)**:
+ 源链上的 `TokenMessengerV2` 合约销毁指定数量的 USDC,
+ 随后发出一个包含转账详情的 `MessageSent` 事件。
+2. **Attest(签名证明)**:
+ Circle 的 Iris API 监听链上事件,并对消息进行签名。
+ 在销毁被确认后,产生一份 attestation。
+3. **Mint(铸造)**:
+ 目标链上的 `MessageTransmitterV2` 合约校验 attestation,
+ 并将等额 USDC 铸造到收款地址。
+
+本教程附带的演示应用自动完成第 2 步和第 3 步:
+它会轮询 Circle 的 API 直到 attestation 就绪,
+然后解锁 mint 操作。
+
+
+该 dApp 用如下调用来实现每一步:
+
+```typescript
+// Step 1 — src/components/CCTPTransfer.tsx
+writeBurn({ functionName: 'depositForBurn', args: [amount, destDomain, mintRecipient, burnToken, ...] })
+
+// Step 2 — src/hooks/useAttestation.ts
+const { messages } = await fetch(`${CIRCLE_ATTESTATION_API}/${sourceDomain}?transactionHash=${txHash}`).then(r => r.json())
+
+// Step 3 — src/components/CCTPTransfer.tsx
+writeMint({ functionName: 'receiveMessage', args: [messages[0].message, messages[0].attestation] })
+```
+
+
+
+Injective 上使用的合约地址请参见 [Injective 上的 USDC](/developers-defi/usdc-stablecoin)。
+
+
+## 在源链上销毁 USDC
+
+在浏览器中打开 dApp(`http://localhost:5173`)后:
+
+1. 点击 **Connect Wallet**,在 MetaMask 弹窗中批准连接请求。
+2. 选择源链(例如 **Ethereum Sepolia**)
+ 和目标链(**Injective EVM Testnet**),
+ 然后输入要转账的 USDC 数量。
+3. 点击 **Approve USDC**,在 MetaMask 中确认授权交易。
+4. 点击 **Burn USDC**,确认销毁交易。
+
+一旦销毁交易在链上被确认,
+dApp 会显示交易哈希并自动进入 attestation 步骤。
+
+
+当你点击 **Burn USDC** 时,
+dApp 会调用 `TokenMessengerV2` 合约的 `depositForBurn`:
+
+```typescript
+// src/components/CCTPTransfer.tsx
+writeBurn({
+ address: messengerAddr,
+ abi: tokenMessengerAbi,
+ functionName: 'depositForBurn',
+ args: [
+ amountParsed, // USDC amount (6 decimals)
+ destDomain, // 0 = Sepolia, 29 = Injective
+ padHex(destAddress as `0x${string}`, { size: 32 }), // 32-byte-padded recipient
+ usdcContract, // USDC token address
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
+ maxFee, // relay fee (fast mode on Sepolia)
+ minFinalityThreshold, // 1 = Sepolia, 2000 = Injective
+ ],
+})
+```
+
+
+
+`minFinalityThreshold` 的取值应遵循:
+
+- 取值 ≤ 1000 时会产生一条 "fast"(快速)消息,
+- 取值 > 1000 时会产生一条 "standard"(标准)消息。
+
+在 Sepolia 上,标准和快速消息都受支持,
+其中标准消息大约需要 15 至 19 分钟,
+快速消息大约需要 20 秒。
+
+在 Injective 上,只支持标准消息,
+标准消息大约需要 0.65 秒。
+由于 Injective 出块速度快且具备即时最终性,因此不需要快速消息。
+
+有关此话题,请参阅 Circle 官方文档
+[CCTP 的区块确认要求与 attestation 时间](https://developers.circle.com/cctp/concepts/finality-and-block-confirmations)
+作为权威参考。
+
+
+## Circle attestation 是什么?
+
+Circle attestation 是 Circle 的 Iris API 提供的一份加密签名,
+用于证明 USDC 已在源链上完成销毁。
+Attestation 用于授权在目标链上进行相应的铸造。
+
+在销毁之后,Circle 的 Iris API 会在 *源链* 上监听
+`MessageSent` 事件。
+一旦达到所需的区块确认数,
+Circle 就会对消息签名并颁发一份 attestation。
+
+Attestation 所需时间因源链而异:
+
+- **Ethereum Sepolia(标准模式)**:15–20 分钟
+- **Injective EVM Testnet**:通常几分钟
+
+
+从 Sepolia 出发的转账支持快速模式,可显著缩短等待时间,
+但需要设置足够高的 `maxFee`。
+若费用过低,转账会回退为标准模式。
+
+
+## 等待 attestation
+
+本 dApp 会自动轮询 Iris API,
+你不需要离开页面。
+UI 会在 attestation 就绪时通知你。
+
+
+dApp 使用销毁步骤中的交易哈希来获取 attestation:
+
+```typescript
+// src/hooks/useAttestation.ts
+const url = `${CIRCLE_ATTESTATION_API}/${sourceDomain}?transactionHash=${txHash}`
+const { messages } = await fetch(url).then(r => r.json())
+
+if (messages[0]?.status === 'complete') {
+ setResult({ message: messages[0].message, attestation: messages[0].attestation })
+} else {
+ setResult({ status: 'pending_confirmations' }) // poll again in 15 s
+}
+```
+
+
+## 在目标链上铸造 USDC
+
+一旦 dApp 显示 "Attestation received":
+
+1. 在提示时,将 MetaMask 切换到 **目标链**。
+2. 点击 **Mint USDC**,在 MetaMask 中确认交易。
+3. 通过 dApp 中显示的余额,或在
+ [Injective Testnet Blockscout](https://testnet.blockscout.injective.network/)
+ 或 [Sepolia Etherscan](https://sepolia.etherscan.io/) 中查看你的地址,
+ 核对目标链上的 USDC 余额。
+
+
+当你点击 **Mint USDC** 时,
+dApp 会调用 `MessageTransmitterV2` 合约的 `receiveMessage`:
+
+```typescript
+// src/components/CCTPTransfer.tsx
+writeMint({
+ address: transmitterAddr,
+ abi: messageTransmitterAbi,
+ functionName: 'receiveMessage',
+ args: [attMessage, attestation], // message bytes + Circle's ECDSA signature
+})
+```
+
+
+## 后续步骤
+
+恭喜你使用 Injective 上的 CCTP 完成了第一次跨链 USDC 转账!
+
+以下是你在本教程中所学到的:
+
+- CCTP 的 burn-attest-mint 协议如何在链之间以 1:1 的比例转账 USDC,
+ *无需* 包装或跨链桥接
+- 如何在源链上销毁 USDC 以发起跨链转账
+- 如何获取 Circle attestation,并用它在目标链上铸造 USDC
+
+在能够进行跨链 USDC 转账之后,你可以继续了解:
+
+- [Injective 上的 USDC](/developers-defi/usdc-stablecoin):
+ 合约地址、测试网水龙头以及常见问题。
+- [MultiVM 代币标准](/developers-evm/multivm-token-standard):
+ 在 Injective 的 EVM 与 Cosmos 之间使用 USDC,无需跨链桥接。
diff --git a/.gitbook/cn/developers-defi/usdc-stablecoin.mdx b/.gitbook/cn/developers-defi/usdc-stablecoin.mdx
new file mode 100644
index 00000000..1a861a38
--- /dev/null
+++ b/.gitbook/cn/developers-defi/usdc-stablecoin.mdx
@@ -0,0 +1,141 @@
+---
+title: Injective 上的 USDC
+description: >-
+ 在 Injective 上使用 USDC 进行开发所需的 USDC 稳定币合约地址、CCTP 集成细节和测试网水龙头信息。
+updatedAt: "2026-06-27"
+---
+
+USDC 通过 [Circle 的跨链传输协议(CCTP)](https://www.circle.com/cross-chain-transfer-protocol) 作为 **原生稳定币** 在 Injective 上提供。
+Injective 上的 USDC 实现了 [MultiVM 代币标准(MTS)](/developers-evm/multivm-token-standard),
+这意味着同一份代币在 Injective 网络上的 EVM 和 Cosmos 两种协议之间通用,无需跨链桥接。
+
+你可以使用 USDC 在 Injective 链上订单簿进行交易、作为衍生品市场的保证金、
+通过 CCTP 进行跨链转账,以及作为在 Injective 上构建的 DeFi 应用中的结算货币。
+
+想上手实践的话,请查看 [USDC CCTP 教程](/developers-defi/usdc-cctp-tutorial)。
+
+## 合约地址
+
+
+
+
+
+| 合约 | 地址 |
+| --- | --- |
+| USDC | [`0xa00C59fF5a080D2b954d0c75e46E22a0c371235a`](https://blockscout.injective.network/token/0xa00C59fF5a080D2b954d0c75e46E22a0c371235a) |
+| USDC CCTP `TokenMessengerV2` | [`0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d`](https://blockscout.injective.network/address/0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d) |
+| USDC CCTP `MessageTransmitterV2` | [`0x81D40F21F12A8F0E3252Bccb954D722d4c464B64`](https://blockscout.injective.network/address/0x81D40F21F12A8F0E3252Bccb954D722d4c464B64) |
+| USDC CCTP `TokenMinterV2` | [`0xfd78EE919681417d192449715b2594ab58f5D002`](https://blockscout.injective.network/address/0xfd78EE919681417d192449715b2594ab58f5D002) |
+| USDC CCTP `MessageV2` | [`0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78`](https://blockscout.injective.network/address/0xec546b6B005471ECf012e5aF77FBeC07e0FD8f78) |
+
+
+Injective 主网的 USDC CCTP domain ID:`29`
+
+
+
+
+
+
+| 合约 | 地址 |
+| --- | --- |
+| USDC | [`0x0C382e685bbeeFE5d3d9C29e29E341fEE8E84C5d`](https://testnet.blockscout.injective.network/token/0x0C382e685bbeeFE5d3d9C29e29E341fEE8E84C5d) |
+| USDC CCTP `TokenMessengerV2` | [`0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA`](https://testnet.blockscout.injective.network/address/0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA) |
+| USDC CCTP `MessageTransmitterV2` | [`0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275`](https://testnet.blockscout.injective.network/address/0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275) |
+| USDC CCTP `TokenMinterV2` | [`0xb43db544E2c27092c107639Ad201b3dEfAbcF192`](https://testnet.blockscout.injective.network/address/0xb43db544E2c27092c107639Ad201b3dEfAbcF192) |
+| USDC CCTP `MessageV2` | [`0xbaC0179bB358A8936169a63408C8481D582390C4`](https://testnet.blockscout.injective.network/address/0xbaC0179bB358A8936169a63408C8481D582390C4) |
+
+
+Injective 测试网的 USDC CCTP domain ID:`29`
+
+
+
+
+
+
+## 测试网水龙头
+
+在开发时可使用以下水龙头获取测试网 USDC 和 INJ:
+
+| 水龙头 | 用途 | URL |
+| --- | --- | --- |
+| Circle USDC Faucet | USDC | [`faucet.circle.com`](https://faucet.circle.com/) |
+| Injective Faucet | INJ | [`testnet.faucet.injective.network`](https://testnet.faucet.injective.network/) |
+| Google Cloud Faucet | INJ | [`cloud.google.com/application/web3/faucet/injective/testnet`](https://cloud.google.com/application/web3/faucet/injective/testnet) |
+
+## 常见问题
+
+
+ Injective 上的 USDC 是 Circle 的 USD Coin 稳定币的原生部署。
+ 它由 Circle 持有的美元储备以 1:1 支持,并通过跨链传输协议(CCTP)转移到 Injective。
+ Injective 上的 USDC 遵循 MultiVM 代币标准(MTS),
+ 可在 Injective 区块链网络的 EVM 和 Cosmos 两种协议下使用。
+
+
+
+ 上文提供的信息仅为方便参考。
+ 你应始终以 Circle 的官方文档作为智能合约地址和
+ USDC CCTP domain ID 的*权威来源*。
+
+ 参考:
+ - [USDC 智能合约地址](https://developers.circle.com/stablecoins/usdc-contract-addresses)
+ - [面向 EVM 兼容区块链的 USDC CCTP 智能合约地址](https://developers.circle.com/cctp/references/contract-addresses)
+
+
+
+ 在 Injective 测试网上,你可以通过 [Circle Faucet](https://faucet.circle.com/) 获取测试网 USDC。
+ 你可能还需要通过 [Injective 测试网水龙头](https://testnet.faucet.injective.network/) 获取测试网 INJ 以支付交易费。
+ 你也可以使用 [Circle 的 CCTP](https://www.circle.com/cross-chain-transfer-protocol)
+ 从其他受支持的网络转入 USDC。
+
+
+
+ 在 Injective 主网上,你可以通过 [Circle 的 CCTP](https://www.circle.com/cross-chain-transfer-protocol)
+ 从其他受支持的网络将 USDC 转入 Injective。
+ 上文列出的 CCTP V2 合约负责跨链转账中 USDC 的铸造和销毁。
+
+
+
+ 跨链传输协议(Cross-Chain Transfer Protocol, CCTP)是 Circle 的原生跨链基础设施,
+ 能够让 USDC 在不同区块链网络之间转移。
+ 在 Injective 上,CCTP V2 合约(`TokenMessengerV2`、`MessageTransmitterV2`、`TokenMinterV2` 和 `MessageV2`)
+ 负责跨链转账中 USDC 的铸造和销毁。
+
+
+
+ 出于合规要求,Injective 上的每一笔 USDC 转账都会经过一个 EVM hook 校验,该 hook 会在交易过程中调用一个合约。
+ 如果你的交易在调用过程中耗尽了 gas,就会看到类似下面的错误:
+
+ ```text
+ transfer is restricted by EVM hook: panic during EVM hook: types.ErrorOutOfGas: {EVM hook call failed}: contract hook query error: restricted action
+ ```
+
+ 如果错误中包含 `types.ErrorOutOfGas`,
+ 这并不意味着该转账真的被限制了,
+ 而只是校验调用在完成之前*耗尽了 gas*。
+
+ **解决方法**:使用更高的 gas 限额重试该交易。
+
+
+
+ 可以。
+ Injective 上的 USDC 遵循 [MultiVM 代币标准(MTS)](/developers-evm/multivm-token-standard),
+ 这意味着相同的代币余额可从 EVM 智能合约和基于 Cosmos 的模块两侧访问。
+ 在两个执行环境之间移动 USDC 时无需跨链桥接或包装。
+
+
+## 相关资源
+
+
+
+ 了解代币如何在 Injective 的 EVM 和 Cosmos 之间协同工作。
+
+
+ RPC 端点、chain ID 及其他 EVM 网络细节。
+
+
+ Circle 为 USDC 部署的智能合约的官方/权威参考。
+
+
+ Circle 为 USDC CCTP 部署的智能合约的官方/权威参考。
+
+
diff --git a/.gitbook/cn/developers-evm/alchemy-rpc-setup.mdx b/.gitbook/cn/developers-evm/alchemy-rpc-setup.mdx
new file mode 100644
index 00000000..d943f89d
--- /dev/null
+++ b/.gitbook/cn/developers-evm/alchemy-rpc-setup.mdx
@@ -0,0 +1,101 @@
+---
+title: "Alchemy RPC 配置"
+description: "通过 Alchemy JSON-RPC 端点连接到 Injective EVM 主网和测试网。"
+updatedAt: "2026-05-18"
+---
+
+[Alchemy](https://www.alchemy.com/) 为 Injective EVM 提供可靠的 JSON-RPC 端点。使用本指南创建一个 Alchemy 应用并开始发起请求。
+
+
+
+[_Injective \+ Alchemy quick start (1 min) - YouTube_](https://youtube.com/watch?v=Ma3CIvDRSjk)
+
+## 前置条件
+
+- 一个 Alchemy 账号([免费注册](https://www.alchemy.com/))
+- 对 EVM RPC 端点有基本了解
+
+## 步骤
+
+
+
+ 在 [Alchemy 仪表盘](https://dashboard.alchemy.com/) 中创建一个新应用,并选择 **Injective** 作为链。然后选择网络:
+
+ - **Injective EVM Mainnet**:Chain ID `1776`
+ - **Injective EVM Testnet**:Chain ID `1439`
+
+
+ 打开你的应用,复制 HTTPS 和 WebSocket 端点:
+
+
+
+ ```bash Mainnet
+ https://inj-mainnet.g.alchemy.com/v2/
+ wss://inj-mainnet.g.alchemy.com/v2/
+ ```
+
+ ```bash Testnet
+ https://inj-testnet.g.alchemy.com/v2/
+ wss://inj-testnet.g.alchemy.com/v2/
+ ```
+
+
+
+
+ 请妥善保管你的 API key,将其视作密码。
+
+
+
+ 使用你偏好的库调用该端点:
+
+
+
+ ```ts ethers.js (v6)
+ import { JsonRpcProvider } from "ethers";
+
+ const provider = new JsonRpcProvider(
+ "https://inj-mainnet.g.alchemy.com/v2/"
+ );
+
+ const blockNumber = await provider.getBlockNumber();
+ console.log("Latest block:", blockNumber);
+ ```
+
+ ```ts viem
+ import { createPublicClient, http } from "viem";
+ import { defineChain } from "viem";
+
+ const injectiveEVM = defineChain({
+ id: 1776,
+ name: "Injective EVM",
+ nativeCurrency: { name: "Injective", symbol: "INJ", decimals: 18 },
+ rpcUrls: {
+ default: { http: ["https://inj-mainnet.g.alchemy.com/v2/"] },
+ },
+ });
+
+ const client = createPublicClient({
+ chain: injectiveEVM,
+ transport: http(),
+ });
+
+ const blockNumber = await client.getBlockNumber();
+ console.log("Latest block:", blockNumber);
+ ```
+
+ ```bash curl
+ curl https://inj-mainnet.g.alchemy.com/v2/ \
+ -X POST \
+ -H "Content-Type: application/json" \
+ -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
+ ```
+
+
+
+
+
+## 后续步骤
+
+- [EVM 网络信息](/developers-evm/network-information) - chain ID、区块浏览器和公共 RPC 端点
+- [部署你的第一个 EVM 智能合约](/developers-evm/smart-contracts)
+- [将你的 dApp 连接到 Injective](/developers-evm/add-injective-to-your-dapp)
diff --git a/.gitbook/cn/developers-evm/evm-gateway.mdx b/.gitbook/cn/developers-evm/evm-gateway.mdx
new file mode 100644
index 00000000..2a3e9071
--- /dev/null
+++ b/.gitbook/cn/developers-evm/evm-gateway.mdx
@@ -0,0 +1,248 @@
+---
+title: EVM Gateway
+description: 运行 Injective 的独立 EVM JSON-RPC 网关,通过以太坊兼容的 RPC 访问 Injective EVM 数据。
+updatedAt: "2026-06-09"
+---
+
+## 关于
+
+`evm-gateway` 是一个独立的 Injective EVM JSON-RPC 服务器。
+
+它从 CometBFT RPC 读取区块数据,通过 Injective gRPC 进行模块查询,将与 EVM 相关的数据索引到本地 KV 存储中,并尽可能从本地的已索引状态提供以太坊风格的 RPC 服务。
+
+在运维层面,它应作为 Injective 节点的旁挂服务运行,而不是在节点内部运行。它取代了原本不适合在生产环境中运行的内置 JSON-RPC 服务器。
+
+**特点:**
+
+- 对已索引的 EVM 区块、receipts、交易和日志实行缓存优先
+- 支持历史数据回填与向前同步
+- 不提供由 keyring 支持的 `personal_*` API
+- 支持 HTTP 与 WebSocket JSON-RPC
+
+## 安装
+
+源码与版本发布:[github.com/InjectiveLabs/evm-gateway/releases](https://github.com/InjectiveLabs/evm-gateway/releases)
+
+运行 `evm-gateway` 的要求:
+
+- 从源码构建时需要 Go 工具链和 `make`
+- 一个正在运行的 Injective 节点可供访问:
+ - CometBFT RPC 端点
+ - gRPC 端点
+ - 用于历史回填的归档节点访问权限
+
+### 使用仓库
+
+```bash
+git clone https://github.com/InjectiveLabs/evm-gateway.git
+cd evm-gateway
+make install
+```
+
+### 预构建的 Docker 镜像
+
+```bash
+docker run -it --rm injectivelabs/evm-gateway:latest --help
+```
+
+## 配置
+
+配置由环境变量驱动,前缀为 `WEB3INJ_`。仓库中的 `.env.example` 是参考。
+
+最小可用配置:
+
+```bash
+export WEB3INJ_CHAIN_ID=injective-1
+export WEB3INJ_COMET_RPC=http://127.0.0.1:26657
+export WEB3INJ_GRPC_ADDR=127.0.0.1:9090
+export WEB3INJ_EARLIEST_BLOCK=127250000
+export WEB3INJ_DATA_DIR=evm-gateway-data
+export WEB3INJ_JSONRPC_API=eth,net,web3,debug
+```
+
+如果与 `injectived` 一起运行,请不要绑定到相同端口。一个典型的旁挂配置是:
+
+```bash
+export WEB3INJ_JSONRPC_ADDRESS=0.0.0.0:8645
+export WEB3INJ_JSONRPC_WS_ADDRESS=0.0.0.0:8646
+```
+
+
+首次运行时,服务会从 `WEB3INJ_EARLIEST_BLOCK` 同步历史数据到当前链头。首次回填请使用归档节点,并据此配置速率限制。
+
+
+## 虚拟化的 Cosmos Bank 转账
+
+默认情况下,`evm-gateway` 暴露的是 Injective 区块的 EVM 视图。原生的 Cosmos `x/bank` 转账并不是 EVM 交易,因此仅索引 EVM 的 JSON-RPC 无法涵盖原生 bank 活动,例如标准 Cosmos 转账、铸造、销毁以及模块级余额变动。
+
+将 `WEB3INJ_VIRTUALIZE_COSMOS_EVENTS=true` 设置为开启可选的虚拟化层:
+
+```bash
+export WEB3INJ_VIRTUALIZE_COSMOS_EVENTS=true
+```
+
+启用后,`evm-gateway` 会解析受支持的 Cosmos `x/bank` 事件,并将其投影为以太坊风格的 JSON-RPC 交易和日志。这样就可以通过熟悉的方法访问原生 bank 转账活动,例如 `eth_getBlockByNumber`、`eth_getTransactionByHash`、`eth_getTransactionReceipt`、`eth_getLogs` 及各类过滤器 API。
+
+网关目前会虚拟化以下 Cosmos bank 事件类型:
+
+- `transfer`
+- `coin_spent`
+- `coin_received`
+- `coinbase`
+- `burn`
+
+虚拟化的 bank 日志由保留的伪合约地址发出:
+
+```text
+0x0000000000000000000000000000000000000800
+```
+
+仅包含事件的 ABI 如下:
+
+```solidity
+interface IInjectiveNativeBankTransfers {
+ event NativeBankTransfer(bytes32 indexed sender, bytes32 indexed recipient, string denom, uint256 amount);
+ event NativeBankCoinSpent(bytes32 indexed spender, string denom, uint256 amount);
+ event NativeBankCoinReceived(bytes32 indexed receiver, string denom, uint256 amount);
+ event NativeBankCoinbase(bytes32 indexed minter, string denom, uint256 amount);
+ event NativeBankBurn(bytes32 indexed burner, string denom, uint256 amount);
+}
+```
+
+类似地址的 Cosmos 字段以右对齐的 `bytes32` 值编码。这样,20 字节的 EVM 地址和更长的 Cosmos 地址都可以使用同一份 ABI。
+
+### 虚拟交易的行为
+
+虚拟化的 Cosmos 事件以合成的以太坊风格交易形式呈现:
+
+- 非 EVM 的 Cosmos 交易事件使用由 `keccak256(cosmos_tx_hash)` 派生出的虚拟哈希
+- begin-block 和 end-block 事件使用由区块高度派生出的确定性哈希
+- 虚拟交易的 `input` 为空、gas 与 value 默认为零,`to = 0x0000000000000000000000000000000000000800`
+- 虚拟交易和日志包含 `virtual: true` 元数据
+- 当源 Cosmos 交易哈希可用时,虚拟交易与日志结果中会包含 `cosmos_hash`
+- begin-block 和 end-block 的虚拟交易不包含 `cosmos_hash`
+
+网关在虚拟化视图中保持区块内的顺序:
+
+1. begin-block 虚拟交易(如适用)
+2. 正常的 EVM 交易和虚拟化的 Cosmos 交易,按区块内顺序排列
+3. end-block 虚拟交易(如适用)
+
+如果某个 Cosmos bank 事件是 EVM 交易的副作用发出,则虚拟日志会追加在该交易真实 EVM 日志之后。
+
+### 查询虚拟化转账
+
+你可以对该保留伪合约地址使用 `eth_getLogs` 查询:
+
+```bash
+curl -s localhost:8645 \
+ -H 'content-type: application/json' \
+ -d '{"jsonrpc":"2.0","id":1,"method":"eth_getLogs","params":[{"address":"0x0000000000000000000000000000000000000800","fromBlock":"latest","toBlock":"latest"}]}'
+```
+
+然后使用返回的交易哈希调用 `eth_getTransactionByHash` 或 `eth_getTransactionReceipt` 查看该虚拟交易及其日志。
+
+
+如果需要完整的索引历史,请在首次同步前启用 `WEB3INJ_VIRTUALIZE_COSMOS_EVENTS=true`。如果你已在关闭虚拟化的情况下同步过既有数据目录,请在依赖历史的虚拟化 bank 日志之前重建或重新索引该数据目录。
+
+
+## 使用 curl 快速检查功能
+
+版本:
+
+```bash
+curl -s localhost:8645 -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"web3_clientVersion","params":[]}'
+```
+
+Chain ID:
+
+```bash
+curl -s localhost:8645 -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
+```
+
+链头:
+
+```bash
+curl -s localhost:8645 -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
+```
+
+同步状态:
+
+```bash
+curl -s localhost:8645/status/sync
+```
+
+简单的区块读取:
+
+```bash
+curl -s localhost:8645 -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"eth_getBlockByNumber","params":["latest",false]}'
+```
+
+如果启用了 `debug`,可进行交易追踪:
+
+```bash
+curl -s localhost:8645 -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"debug_traceTransaction","params":["0x",{"tracer":"callTracer"}]}'
+```
+
+## 配置状态持久化
+
+状态持久化主要由以下变量控制:
+
+- `WEB3INJ_DATA_DIR`
+- `WEB3INJ_DB_BACKEND`
+
+示例:
+
+```bash
+export WEB3INJ_DATA_DIR=/var/lib/evm-gateway
+export WEB3INJ_DB_BACKEND=goleveldb
+```
+
+## 已实现方法的命名空间概览
+
+默认命名空间:
+
+- `eth`
+- `net`
+- `web3`
+
+可选命名空间:
+
+- `debug`
+- `inj`
+
+未实现:
+
+- `personal`
+- `txpool`
+- `miner`
+
+### `eth`
+
+`eth_blockNumber`、`eth_getBlockByNumber`、`eth_getBlockByHash`、`eth_getBlockTransactionCountByHash`、`eth_getBlockTransactionCountByNumber`、`eth_getTransactionByHash`、`eth_getTransactionCount`、`eth_getTransactionReceipt`、`eth_getTransactionByBlockHashAndIndex`、`eth_getTransactionByBlockNumberAndIndex`、`eth_sendRawTransaction`、`eth_getBalance`、`eth_getStorageAt`、`eth_getCode`、`eth_getProof`、`eth_call`、`eth_protocolVersion`、`eth_gasPrice`、`eth_estimateGas`、`eth_feeHistory`、`eth_maxPriorityFeePerGas`、`eth_chainId`、`eth_getUncleByBlockHashAndIndex`、`eth_getUncleByBlockNumberAndIndex`、`eth_getUncleCountByBlockHash`、`eth_getUncleCountByBlockNumber`、`eth_hashrate`、`eth_mining`、`eth_syncing`、`eth_coinbase`、`eth_getTransactionLogs`、`eth_fillTransaction`、`eth_getPendingTransactions`
+
+同一命名空间下的过滤器方法:
+
+`eth_newPendingTransactionFilter`、`eth_newBlockFilter`、`eth_newFilter`、`eth_getFilterChanges`、`eth_getFilterLogs`、`eth_getLogs`、`eth_uninstallFilter`
+
+### `net`
+
+`net_version`、`net_listening`、`net_peerCount`
+
+### `web3`
+
+`web3_clientVersion`、`web3_sha3`
+
+### `debug`
+
+追踪与区块检查:
+
+`debug_traceTransaction`、`debug_traceBlockByNumber`、`debug_traceBlockByHash`、`debug_traceCall`、`debug_getHeaderRlp`、`debug_getBlockRlp`、`debug_printBlock`、`debug_intermediateRoots`
+
+运行时与性能分析:
+
+`debug_blockProfile`、`debug_cPUProfile`、`debug_gcStats`、`debug_goTrace`、`debug_memStats`、`debug_setBlockProfileRate`、`debug_stacks`、`debug_startCPUProfile`、`debug_stopCPUProfile`、`debug_writeBlockProfile`、`debug_writeMemProfile`、`debug_mutexProfile`、`debug_setMutexProfileFraction`、`debug_writeMutexProfile`、`debug_freeOSMemory`、`debug_setGCPercent`、`debug_startGoTrace`、`debug_stopGoTrace`
+
+### `inj`
+
+`inj_getTxHashByEthHash`
diff --git a/.gitbook/cn/developers-evm/oracle-precompile.mdx b/.gitbook/cn/developers-evm/oracle-precompile.mdx
new file mode 100644
index 00000000..60cf09b9
--- /dev/null
+++ b/.gitbook/cn/developers-evm/oracle-precompile.mdx
@@ -0,0 +1,176 @@
+---
+title: Oracle 预编译(Precompile)
+description: 在 Injective 上查询价格数据的多种方式,包括原生预言机查询、链下 Pyth,以及通过 EVM 在链上访问 Pyth。
+updatedAt: "2026-03-25"
+---
+
+
+ Oracle 预编译暂未上线。
+ 在此期间,你可以使用下述方法查询价格。
+
+
+Injective 提供多种方式访问预言机价格数据,具体取决于你的架构和需求。
+下列方法涵盖从在链下集成 Pyth,
+到通过 Injective 的 EVM 在链上读取 Pyth 价格。
+
+## 方式 1:使用 Pyth 的链下价格源
+
+如果你的应用程序在链下获取价格(例如在后端服务或 bot 中),
+可以直接查询 Pyth 的 HTTP API,无需任何链上交互。
+
+有关可用端点、请求格式和响应模式的详情,请参见 Pyth 关于[获取价格更新](https://docs.pyth.network/price-feeds/core/fetch-price-updates)的文档。
+
+这种方式非常适合链下交易系统、分析仪表盘,
+或任何不需要提交交易就能获取价格数据的服务。
+
+## 方式 2:通过 EVM 在链上使用 Pyth 价格源
+
+对于需要在链上读取价格的智能合约,你可以与部署在 Injective EVM 上的 Pyth 合约交互。
+它使用 Pyth 的拉取式(pull-based)预言机模型,即先在链下获取价格更新,再在链上提交后再读取。
+
+### 合约地址
+
+要获取 Injective EVM 上的 Pyth 合约地址,请查阅 Pyth 合约地址页面,找到 **Injective EVM** 条目:
+
+- [主网合约地址](https://docs.pyth.network/price-feeds/core/contract-addresses/evm#mainnets)
+- [测试网合约地址](https://docs.pyth.network/price-feeds/core/contract-addresses/evm#testnets)
+
+当前,Pyth 在 Injective EVM 主网上的合约地址是 `0x36825bf3Fbdf5a29E2d5148bfe7Dcf7B5639e320`。
+
+
+ 请始终以官方文档为准以获取最新地址。
+
+
+### 价格源 ID
+
+每一个资产对都有一个唯一的价格源 ID(price feed ID)。你可以在
+ [Pyth price feed IDs](https://docs.pyth.network/price-feeds/core/price-feeds/price-feed-ids) 页面查阅这些 ID。
+例如,搜索 `INJ/USD`。
+
+### 受支持的价格源
+
+| 资产 | 价格源 ID |
+| -------- | -------------------------------------------------------------------- |
+| INJ/USD | `0x7a5bc1d2b56ad029048cd63964b3ad2776eadf812edc1a43a31406cb54bff592` |
+| BTC/USD | `0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43` |
+| ETH/USD | `0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace` |
+| XRP/USD | `0xec5d399846a9209f3fe5881d70aae9268c94339ff9817e8d18ff19fa05eea1c8` |
+| USDT/USD | `0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b` |
+| USDC/USD | `0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` |
+
+
+ 请始终以官方文档为准以获取最新地址。
+
+
+### 集成指南
+
+要在你的 Solidity 合约中使用拉取模型完整集成 Pyth 价格源,
+请按 [Pyth EVM 拉取集成教程](https://docs.pyth.network/price-feeds/core/use-real-time-data/pull-integration/evm) 操作。
+
+### 示例
+
+下面的示例演示了如何在 Injective 的 EVM 上从 Pyth 合约读取 INJ/USD 价格:
+
+```typescript
+import { ethers } from "ethers";
+import { toHumanReadable } from "@injectivelabs/utils";
+
+const provider = new ethers.JsonRpcProvider(
+ "https://sentry.evm-rpc.injective.network",
+);
+
+const IPythABI = [
+ {
+ inputs: [{ internalType: "bytes[]", name: "updateData", type: "bytes[]" }],
+ name: "getUpdateFee",
+ outputs: [{ internalType: "uint256", name: "feeAmount", type: "uint256" }],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [{ internalType: "bytes[]", name: "updateData", type: "bytes[]" }],
+ name: "updatePriceFeeds",
+ outputs: [],
+ stateMutability: "payable",
+ type: "function",
+ },
+ {
+ inputs: [
+ { internalType: "bytes32", name: "id", type: "bytes32" },
+ { internalType: "uint256", name: "age", type: "uint256" },
+ ],
+ name: "getPriceNoOlderThan",
+ outputs: [
+ {
+ components: [
+ { internalType: "int64", name: "price", type: "int64" },
+ { internalType: "uint64", name: "conf", type: "uint64" },
+ { internalType: "int32", name: "expo", type: "int32" },
+ { internalType: "uint256", name: "publishTime", type: "uint256" },
+ ],
+ internalType: "struct PythStructs.Price",
+ name: "price",
+ type: "tuple",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+ {
+ inputs: [{ internalType: "bytes32", name: "id", type: "bytes32" }],
+ name: "getPriceUnsafe",
+ outputs: [
+ {
+ components: [
+ { internalType: "int64", name: "price", type: "int64" },
+ { internalType: "uint64", name: "conf", type: "uint64" },
+ { internalType: "int32", name: "expo", type: "int32" },
+ { internalType: "uint256", name: "publishTime", type: "uint256" },
+ ],
+ internalType: "struct PythStructs.Price",
+ name: "price",
+ type: "tuple",
+ },
+ ],
+ stateMutability: "view",
+ type: "function",
+ },
+] as const;
+
+const pyth = new ethers.Contract(
+ "0x36825bf3Fbdf5a29E2d5148bfe7Dcf7B5639e320",
+ IPythABI,
+ provider,
+);
+
+async function main() {
+ try {
+ const priceFeedId =
+ "0x7a5bc1d2b56ad029048cd63964b3ad2776eadf812edc1a43a31406cb54bff592"; // INJ/USD
+
+ // const price = await pyth.getPriceUnsafe(priceFeedId);
+ const maxAge = 60; // 60s
+ const price = await pyth.getPriceNoOlderThan(priceFeedId, maxAge);
+
+ console.log(
+ "Human readable price:",
+ price.expo > 0
+ ? toHumanReadable(price.price.toString(), price.expo.toString()).toFixed(2)
+ : toHumanReadable(price.price.toString(), (-price.expo).toString()).toFixed(4),
+ );
+ } catch (error) {
+ console.error(error);
+ } finally {
+ await provider.destroy();
+ }
+}
+
+main().catch(console.error);
+```
+
+
+ `getPriceUnsafe` 会返回最后一次推送的价格,且不进行 staleness(过时性)检查。在生产环境中,
+ 建议使用 `getPriceNoOlderThan(priceFeedId, maxAge)`——不过请注意,这要求价格在近期已被推送到链上,
+ 否则调用会 revert。
+ 更多关于拉取模型的信息请参见 [Pyth 文档](https://docs.pyth.network/price-feeds/use-real-time-data/evm)。
+
diff --git a/.gitbook/cn/infra/validator-mainnet/canonical-chain-upgrade-v1.19.0.mdx b/.gitbook/cn/infra/validator-mainnet/canonical-chain-upgrade-v1.19.0.mdx
new file mode 100644
index 00000000..5bf184a0
--- /dev/null
+++ b/.gitbook/cn/infra/validator-mainnet/canonical-chain-upgrade-v1.19.0.mdx
@@ -0,0 +1,123 @@
+---
+title: 升级到 v1.19.0
+updatedAt: "2026-04-28"
+---
+
+2026 年 4 月 28 日(周二)
+
+根据 [IIP-632](https://injhub.com/proposal/632/),升级流程应在区块高度 **164394000** 执行。
+
+* [概览](#summary)
+* [回滚](#recovery)
+* [升级流程](#upgrade-procedure)
+* [验证者须知](#notes-for-validators)
+
+## 概览
+
+Injective 链将于 **2026 年 4 月 28 日(周二)美东时间上午 10:00 / UTC 14:00** 进行一次计划内的功能升级。
+
+以下是升级步骤的简要总结:
+
+1. 投票,并等待节点在区块高度 **164394000** 触发 panic。
+2. 备份运行 Injective 链所用的配置、数据和密钥。
+3. 安装 [v1.19.0](https://github.com/InjectiveFoundation/injective-core/releases/tag/v1.19.0) 二进制文件。
+4. 使用新的 injectived 二进制文件启动节点以完成升级。
+
+针对验证者的升级协调与支持将在 [Injective Discord](https://discord.gg/injective) 的 `#validators` 私有频道中进行。
+
+网络升级可能会经历以下几种路径:
+
+1. **顺利路径(Happy path)**:\
+ 验证者顺利完成升级,无需清理链上历史,所有验证者在升级后 5-10 分钟内恢复。
+2. **不太顺利的路径(Not-so-happy path)**:\
+ 验证者在升级到最新的规范链时遇到问题。
+3. **中止路径(Abort path)**:\
+ 在极少数情况下,如果团队发现此前未察觉的严重问题,Injective 团队将尝试修复所有破坏性状态,并在 36 小时内提供另一个官方二进制文件。\
+ 如果链未能在 36 小时内成功恢复,将在 [Injective Discord](https://discord.gg/injective) 的 `#validators` 频道公告本次升级中止,验证者需要继续运行原链而不进行任何升级或改动。
+
+## 回滚
+
+在导出链状态之前,建议验证者先在导出高度处对完整数据进行快照。快照方式在很大程度上取决于基础设施,但通常可以通过备份 `.injectived` 目录来完成。
+
+在停止 injectived 进程之后,务必备份 `.injectived/data/priv_validator_state.json` 文件。该文件在验证者参与每一轮共识时都会更新,是防止在升级失败、需要重启旧链时出现双签的关键文件。
+
+如果升级未能成功,验证者和运维方必须恢复快照,并回退到 Injective 链的 [v1.18.3](https://github.com/InjectiveFoundation/injective-core/releases/tag/v1.18.3-1774990852) 版本,继续运行原来的链,直到下一次升级公告。
+
+## 升级流程
+
+### 验证者须知
+
+
+**源码构建需要 Go v1.26.2**
+
+v1.19.0 源码已经发布,最低 Go 版本被提高到 `go1.26.2`。从源码构建 `injectived` 或 `peggo` 的验证者应在链停机之前升级其 Go 环境,避免构建时出现意外。使用已发布的二进制文件或 Docker 镜像部署的团队则无需额外调整环境。
+
+
+升级到新版本之前,必须清除 wasm 缓存:
+
+```shell
+rm -rf .injectived/wasm/wasm/cache/
+```
+
+### 步骤
+
+1. 确认你当前运行的是正确版本(`v1.18.3`)的 `injectived`:
+
+ ```bash
+ $ injectived version
+ Version v1.18.3 (b18483b)
+ Compiled at 20260331-2102 using Go go1.23.9 (amd64)
+ ```
+
+2. 备份你的 `.injectived` 目录:
+
+ ```bash
+ cp -r ~/.injectived ./injectived-backup
+ ```
+
+3. 下载并安装 v1.19.0 的 `injective-chain` 发布版本:
+
+ ```bash
+ wget https://github.com/InjectiveFoundation/injective-core/releases/download/v1.19.0/linux-amd64.zip
+ unzip linux-amd64.zip
+ sudo mv injectived peggo /usr/bin
+ sudo mv libwasmvm.x86_64.so /usr/lib
+ ```
+
+4. 下载 v1.19.0 发布版本后,确认你当前运行的是正确版本(v1.19.0)的 `injectived`:
+
+ ```bash
+ $ injectived version
+ Version v1.19.0 (750b3fb)
+ Compiled at 20260424-1643 using Go go1.26.2 (amd64)
+ ```
+
+5. 从 `injectived start` 命令或 systemd unit 文件中移除任何已废弃的 `statsd` 相关参数:
+
+
+ 以下参数从 v1.19.0 起不再支持,会导致 `injectived` 启动失败:
+
+ `statsdAgent`、`statsdEnabled`、`statsd-prefix`、`statsd-address`、`statsd-stuck-func`、`statsd-tracing-enabled`、`statsd-profiling-enabled`、`trace-recorder-threshold`
+
+ 这些参数在早期版本中受支持,但现已移除。测试网上曾有一位外部验证者由于这些参数仍存在而遇到启动失败。请检查你的启动脚本、systemd 服务文件或任何包装脚本,并在进入下一步之前将其**移除**。
+
+
+6. 启动 `injectived`:
+
+ ```bash
+ injectived start
+ ```
+
+7. 下载 v1.19.0 发布版本后,确认你当前运行的是正确版本(v1.19.0)的 `peggo`:
+
+ ```bash
+ $ peggo version
+ Version v1.19.0 (750b3fb)
+ Compiled at 20260424-1644 using Go go1.26.2 (amd64)
+ ```
+
+8. 启动 peggo:
+
+ ```bash
+ peggo orchestrator
+ ```
diff --git a/.gitbook/cn/infra/validator-mainnet/canonical-chain-upgrade-v1.20.0.mdx b/.gitbook/cn/infra/validator-mainnet/canonical-chain-upgrade-v1.20.0.mdx
new file mode 100644
index 00000000..0fe17ddc
--- /dev/null
+++ b/.gitbook/cn/infra/validator-mainnet/canonical-chain-upgrade-v1.20.0.mdx
@@ -0,0 +1,112 @@
+---
+title: 升级到 v1.20.0
+updatedAt: "2026-06-01"
+---
+
+2026 年 6 月 4 日(周四)
+
+根据 [IIP-650](https://injhub.com/proposal/650/),升级流程应在区块高度 **169334500** 执行。
+
+* [概览](#summary)
+* [回滚](#recovery)
+* [升级流程](#upgrade-procedure)
+* [验证者须知](#notes-for-validators)
+* [必读的破坏性变更](#breaking-changes-must-review)
+
+## 概览
+
+Injective 链将于 **2026 年 6 月 4 日(周四)美东时间上午 10:00 / UTC 14:00** 进行一次计划内的功能升级。
+
+以下是升级步骤的简要总结:
+
+1. 投票,并等待节点在区块高度 **169334500** 触发 panic。
+2. 备份运行 Injective 链所用的配置、数据和密钥。
+3. 安装 [v1.20.0](https://github.com/InjectiveFoundation/injective-core/releases/tag/v1.20.0) 二进制文件。
+4. 使用新的 injectived 二进制文件启动节点以完成升级。
+
+针对验证者的升级协调与支持将在 [Injective Discord](https://discord.gg/injective) 的 `#validators` 私有频道中进行。
+
+网络升级可能会经历以下几种路径:
+
+1. **顺利路径(Happy path)**:\
+ 验证者顺利完成升级,无需清理链上历史,所有验证者在升级后 5-10 分钟内恢复。
+2. **不太顺利的路径(Not-so-happy path)**:\
+ 验证者在升级到最新的规范链时遇到问题。
+3. **中止路径(Abort path)**:\
+ 在极少数情况下,如果团队发现此前未察觉的严重问题,Injective 团队将尝试修复所有破坏性状态,并在 36 小时内提供另一个官方二进制文件。\
+ 如果链未能在 36 小时内成功恢复,将在 [Injective Discord](https://discord.gg/injective) 的 `#validators` 频道公告本次升级中止,验证者需要继续运行原链而不进行任何升级或改动。
+
+## 回滚
+
+在导出链状态之前,建议验证者先在导出高度处对完整数据进行快照。快照方式在很大程度上取决于基础设施,但通常可以通过备份 `.injectived` 目录来完成。
+
+在停止 injectived 进程之后,务必备份 `.injectived/data/priv_validator_state.json` 文件。该文件在验证者参与每一轮共识时都会更新,是防止在升级失败、需要重启旧链时出现双签的关键文件。
+
+如果升级未能成功,验证者和运维方必须恢复快照,并回退到 Injective 链的 [v1.19.0](https://github.com/InjectiveFoundation/injective-core/releases/tag/v1.19.0) 版本,继续运行原来的链,直到下一次升级公告。
+
+## 升级流程
+
+### 验证者须知
+
+升级到新版本之前,必须清除 wasm 缓存:
+
+```shell
+rm -rf .injectived/wasm/wasm/cache/
+```
+
+## 必读的破坏性变更
+
+在重启 `injectived` 之前,请仔细阅读 [v1.20.0 injectived 启动参数变更](/infra/validator-mainnet/canonical-chain-upgrade-v1.20.0-flag-changes)(英文)。已废弃的参数必须移除,重命名的参数需要更新;如果你的节点依赖旧行为,则需要显式设置那些默认值发生变化的参数。
+
+### 步骤
+
+1. 确认你当前运行的是正确版本(`v1.19.0`)的 `injectived`:
+
+ ```bash
+ $ injectived version
+ Version v1.19.0 (750b3fb)
+ Compiled at 20260424-1643 using Go go1.26.2 (amd64)
+ ```
+
+2. 备份你的 `.injectived` 目录:
+
+ ```bash
+ cp -r ~/.injectived ./injectived-backup
+ ```
+
+3. 下载并安装 v1.20.0 的 `injective-chain` 发布版本:
+
+ ```bash
+ wget https://github.com/InjectiveFoundation/injective-core/releases/download/v1.20.0-1780128924/linux-amd64.zip
+ unzip linux-amd64.zip
+ sudo mv injectived peggo /usr/bin
+ sudo mv libwasmvm.x86_64.so /usr/lib
+ ```
+
+4. 下载 v1.20.0 发布版本后,确认你当前运行的是正确版本(v1.20.0)的 `injectived`:
+
+ ```bash
+ $ injectived version
+ Version v1.20.0 (3ade14d)
+ Compiled at 20260530-0816 using Go go1.26.2 (amd64)
+ ```
+
+5. 启动 `injectived`:
+
+ ```bash
+ injectived start
+ ```
+
+6. 下载 v1.20.0 发布版本后,确认你当前运行的是正确版本(v1.20.0)的 `peggo`:
+
+ ```bash
+ $ peggo version
+ Version v1.20.0 (3ade14d)
+ Compiled at 20260530-0823 using Go go1.26.2 (amd64)
+ ```
+
+7. 启动 peggo:
+
+ ```bash
+ peggo orchestrator
+ ```
diff --git a/.gitbook/cn/infra/validator-mainnet/canonical-chain-upgrade-v1.20.1.mdx b/.gitbook/cn/infra/validator-mainnet/canonical-chain-upgrade-v1.20.1.mdx
new file mode 100644
index 00000000..a2211a3b
--- /dev/null
+++ b/.gitbook/cn/infra/validator-mainnet/canonical-chain-upgrade-v1.20.1.mdx
@@ -0,0 +1,118 @@
+---
+title: 升级到 v1.20.1
+description: 如何将 Injective 主网验证者节点升级到 v1.20.1
+updatedAt: "2026-06-27"
+---
+
+2026 年 7 月 2 日(周四)
+
+根据 [IIP-665](https://injhub.com/proposal/665/),升级流程应在区块高度 **172502000** 执行。
+
+* [概览](#summary)
+* [回滚](#recovery)
+* [升级流程](#upgrade-procedure)
+* [验证者须知](#notes-for-validators)
+
+## 概览
+
+Injective 链将大约在 **2026 年 7 月 2 日(周四)美东时间上午 10:00 / UTC 14:00** 进行一次计划内的功能升级。
+
+以下是升级步骤的简要总结:
+
+1. 投票,并等待节点在区块高度 **172502000** 触发 panic。
+2. 备份运行 Injective 链所用的配置、数据和密钥。
+3. 安装 [v1.20.1](https://github.com/InjectiveFoundation/injective-core/releases/tag/v1.20.1-1782532109) 二进制文件。
+4. 使用新的 injectived 二进制文件启动节点以完成升级。
+
+针对验证者的升级协调与支持将在 [Injective Discord](https://discord.gg/injective) 的 `#validators` 私有频道中进行。
+
+网络升级可能会经历以下几种路径:
+
+1. **顺利路径(Happy path)**:\
+ 验证者顺利完成升级,无需清理链上历史,所有验证者在升级后 5-10 分钟内恢复。
+2. **不太顺利的路径(Not-so-happy path)**:\
+ 验证者在升级到最新的规范链时遇到问题。
+3. **中止路径(Abort path)**:\
+ 在极少数情况下,如果团队发现此前未察觉的严重问题,Injective 团队将尝试修复所有破坏性状态,并在 36 小时内提供另一个官方二进制文件。\
+ 如果链未能在 36 小时内成功恢复,将在 [Injective Discord](https://discord.gg/injective) 的 `#validators` 频道公告本次升级中止,验证者需要继续运行原链而不进行任何升级或改动。
+
+## 回滚
+
+在导出链状态之前,建议验证者先在导出高度处对完整数据进行快照。快照方式在很大程度上取决于基础设施,但通常可以通过备份 `.injectived` 目录来完成。
+
+在停止 injectived 进程之后,务必备份 `.injectived/data/priv_validator_state.json` 文件。该文件在验证者参与每一轮共识时都会更新,是防止在升级失败、需要重启旧链时出现双签的关键文件。
+
+如果升级未能成功,验证者和运维方必须恢复快照,并回退到 Injective 链的 [v1.20.0](https://github.com/InjectiveFoundation/injective-core/releases/tag/v1.20.0) 版本,继续运行原来的链,直到下一次升级公告。
+
+## 升级流程
+
+### 验证者须知
+
+升级到新版本之前,必须清除 wasm 缓存:
+
+```shell
+rm -rf .injectived/wasm/wasm/cache/
+```
+
+### 破坏性变更
+
+
+ 请务必在升级过程中完成以下变更。
+
+
+Go 构建环境已发生变更。
+在上一版本中,Go 版本为 1.26.2(`go1.26.2`)。
+请将你的 Go 版本更新至 1.26.4(`go1.26.4`)。
+
+### 步骤
+
+1. 确认你当前运行的是正确版本(`v1.20.0`)的 `injectived`:
+
+ ```bash
+ $ injectived version
+ Version v1.20.0 (3ade14d)
+ Compiled at 20260530-0816 using Go go1.26.2 (amd64)
+ ```
+
+2. 备份你的 `.injectived` 目录:
+
+ ```bash
+ cp -r ~/.injectived ./injectived-backup
+ ```
+
+3. 下载并安装 v1.20.1 的 `injective-chain` 发布版本:
+
+ ```bash
+ wget https://github.com/InjectiveFoundation/injective-core/releases/download/v1.20.1-1782532109/linux-amd64.zip
+ unzip linux-amd64.zip
+ sudo mv injectived peggo /usr/bin
+ sudo mv libwasmvm.x86_64.so /usr/lib
+ ```
+
+4. 下载 v1.20.1 发布版本后,确认你当前运行的是正确版本(v1.20.1)的 `injectived`:
+
+ ```bash
+ $ injectived version
+ Version v1.20.1 (eef179e)
+ Compiled at 20260627-0349 using Go go1.26.4 (amd64)
+ ```
+
+5. 启动 `injectived`:
+
+ ```bash
+ injectived start
+ ```
+
+6. 下载 v1.20.1 发布版本后,确认你当前运行的是正确版本(v1.20.1)的 `peggo`:
+
+ ```bash
+ $ peggo version
+ Version v1.20.1 (eef179e)
+ Compiled at 20260627-0356 using Go go1.26.4 (amd64)
+ ```
+
+7. 启动 peggo:
+
+ ```bash
+ peggo orchestrator
+ ```
diff --git a/.gitbook/cn/infra/validator-mainnet/canonical-chain-upgrade-v1.20.3.mdx b/.gitbook/cn/infra/validator-mainnet/canonical-chain-upgrade-v1.20.3.mdx
new file mode 100644
index 00000000..f1eed325
--- /dev/null
+++ b/.gitbook/cn/infra/validator-mainnet/canonical-chain-upgrade-v1.20.3.mdx
@@ -0,0 +1,108 @@
+---
+title: 升级到 v1.20.3
+description: 如何将 Injective 主网验证者节点升级到 v1.20.3
+updatedAt: "2026-07-25"
+---
+
+2026 年 7 月 29 日(周三)
+
+根据 [IIP-677](https://injhub.com/proposal/677/),升级流程应在区块高度 **176273000** 执行。
+
+* [概览](#summary)
+* [回滚](#recovery)
+* [升级流程](#upgrade-procedure)
+* [验证者须知](#notes-for-validators)
+
+## 概览
+
+Injective 链将大约在 **2026 年 7 月 29 日(周三)美东时间上午 10:00 / UTC 14:00** 进行一次计划内的功能升级。
+
+以下是升级步骤的简要总结:
+
+1. 投票,并等待节点在区块高度 **176273000** 触发 panic。
+2. 备份运行 Injective 链所用的配置、数据和密钥。
+3. 安装 [v1.20.3](https://github.com/InjectiveFoundation/injective-core/releases/tag/v1.20.3-1784976496) 二进制文件。
+4. 使用新的 injectived 二进制文件启动节点以完成升级。
+
+针对验证者的升级协调与支持将在 [Injective Discord](https://discord.gg/injective) 的 `#validators` 私有频道中进行。
+
+网络升级可能会经历以下几种路径:
+
+1. **顺利路径(Happy path)**:\
+ 验证者顺利完成升级,无需清理链上历史,所有验证者在升级后 5-10 分钟内恢复。
+2. **不太顺利的路径(Not-so-happy path)**:\
+ 验证者在升级到最新的规范链时遇到问题。
+3. **中止路径(Abort path)**:\
+ 在极少数情况下,如果团队发现此前未察觉的严重问题,Injective 团队将尝试修复所有破坏性状态,并在 36 小时内提供另一个官方二进制文件。\
+ 如果链未能在 36 小时内成功恢复,将在 [Injective Discord](https://discord.gg/injective) 的 `#validators` 频道公告本次升级中止,验证者需要继续运行原链而不进行任何升级或改动。
+
+## 回滚
+
+在导出链状态之前,建议验证者先在导出高度处对完整数据进行快照。快照方式在很大程度上取决于基础设施,但通常可以通过备份 `.injectived` 目录来完成。
+
+在停止 injectived 进程之后,务必备份 `.injectived/data/priv_validator_state.json` 文件。该文件在验证者参与每一轮共识时都会更新,是防止在升级失败、需要重启旧链时出现双签的关键文件。
+
+如果升级未能成功,验证者和运维方必须恢复快照,并回退到 Injective 链的 [v1.20.1](https://github.com/InjectiveFoundation/injective-core/releases/tag/v1.20.1-1782532109) 版本,继续运行原来的链,直到下一次升级公告。
+
+## 升级流程
+
+### 验证者须知
+
+升级到新版本之前,必须清除 wasm 缓存:
+
+```shell
+rm -rf .injectived/wasm/wasm/cache/
+```
+
+### 步骤
+
+1. 确认你当前运行的是正确版本(`v1.20.1`)的 `injectived`:
+
+ ```bash
+ $ injectived version
+ Version v1.20.1 (eef179e)
+ Compiled at 20260627-0349 using Go go1.26.4 (amd64)
+ ```
+
+2. 备份你的 `.injectived` 目录:
+
+ ```bash
+ cp -r ~/.injectived ./injectived-backup
+ ```
+
+3. 下载并安装 v1.20.3 的 `injective-chain` 发布版本:
+
+ ```bash
+ wget https://github.com/InjectiveFoundation/injective-core/releases/download/v1.20.3-1784976496/linux-amd64.zip
+ unzip linux-amd64.zip
+ sudo mv injectived peggo /usr/bin
+ sudo mv libwasmvm.x86_64.so /usr/lib
+ ```
+
+4. 下载 v1.20.3 发布版本后,确认你当前运行的是正确版本(v1.20.3)的 `injectived`:
+
+ ```bash
+ $ injectived version
+ Version v1.20.3 (5c3143e)
+ Compiled at 20260725-1049 using Go go1.26.4 (amd64)
+ ```
+
+5. 启动 `injectived`:
+
+ ```bash
+ injectived start
+ ```
+
+6. 下载 v1.20.3 发布版本后,确认你当前运行的是正确版本(v1.20.3)的 `peggo`:
+
+ ```bash
+ $ peggo version
+ Version v1.20.3 (5c3143e)
+ Compiled at 20260725-1056 using Go go1.26.4 (amd64)
+ ```
+
+7. 启动 peggo:
+
+ ```bash
+ peggo orchestrator
+ ```
diff --git a/.gitbook/docs.json b/.gitbook/docs.json
index 53a51f48..386c3905 100644
--- a/.gitbook/docs.json
+++ b/.gitbook/docs.json
@@ -768,6 +768,7 @@
"cn/defi/trading/order-types",
"cn/defi/trading/fees",
"cn/defi/trading/24-5-equity-feeds",
+ "cn/defi/trading/oracle-feed-sources",
"cn/defi/trading/margin",
"cn/defi/trading/margin-liquidation",
"cn/defi/trading/margin-funding-rates",
@@ -898,7 +899,8 @@
"cn/developers-ai/injective-mcp-servers-skill",
"cn/developers-ai/injective-trading-skills",
"cn/developers-ai/documentation-mcp",
- "cn/developers-ai/mcp"
+ "cn/developers-ai/mcp",
+ "cn/developers-ai/x402"
]
},
{
@@ -928,7 +930,11 @@
"pages": [
"cn/infra/validator-mainnet/index",
"cn/infra/validator-mainnet/peggo",
- "cn/infra/validator-mainnet/canonical-chain-upgrade"
+ "cn/infra/validator-mainnet/canonical-chain-upgrade",
+ "cn/infra/validator-mainnet/canonical-chain-upgrade-v1.20.3",
+ "cn/infra/validator-mainnet/canonical-chain-upgrade-v1.20.1",
+ "cn/infra/validator-mainnet/canonical-chain-upgrade-v1.20.0",
+ "cn/infra/validator-mainnet/canonical-chain-upgrade-v1.19.0"
]
},
{
@@ -986,6 +992,8 @@
"cn/developers-evm/oracle-precompile",
"cn/developers-evm/erc20-module",
"cn/developers-evm/infrastructure-and-tooling",
+ "cn/developers-evm/evm-gateway",
+ "cn/developers-evm/alchemy-rpc-setup",
"cn/developers-evm/add-injective-to-your-dapp",
"cn/developers-evm/evm-integrations-cheat-sheet",
"cn/developers-evm/evm-integrations-faq",
@@ -1032,6 +1040,8 @@
"cn/developers-defi/market-launch",
"cn/developers-defi/denom-and-bank",
"cn/developers-defi/provider-oracle",
+ "cn/developers-defi/usdc-stablecoin",
+ "cn/developers-defi/usdc-cctp-tutorial",
{
"group": "Injective Trader",
"expanded": false,
@@ -1170,7 +1180,8 @@
},
"cn/faq",
"cn/glossary",
- "cn/references"
+ "cn/references",
+ "cn/contributing"
]
}
]