摘要
了解 Avalanche 节点 RPC 的工作原理、公共端点与专用端点之间的区别,以及如何为 C-Chain、X-Chain 和 P-Chain 配置你的 dApp。本指南涵盖链设置、常见 JSON-RPC 方法以及生产工作负载的故障排除技巧。
快速建议:公共与专用 Avalanche RPC
如果你正在原型开发或运行低流量 dApp,公共 Avalanche RPC 端点足以入门。对于依赖稳定吞吐量、低延迟和归档数据的生产应用,专用 Avalanche 节点或像 OnFinality 这样的托管 RPC 服务能提供可预测的性能,并避免公共端点的速率限制和不稳定性。
在选择之前,请考虑你的工作负载:
- 读密集型 dApp(代币余额、NFT 元数据)通常可以在共享公共端点上运行。
- 写密集型或时间敏感型应用(交易、游戏、DeFi)需要专用节点或高级 RPC 服务。
- 历史查询(大范围的
eth_getLogs)需要归档节点访问。 - WebSocket 订阅用于实时更新,需要支持持久连接的服务提供商。
有关托管 RPC 选项的完整比较,请参阅如何选择 RPC 提供商。
Avalanche 架构:C-Chain、X-Chain 和 P-Chain
Avalanche 是一个子网网络,但大多数开发者与三个内置链交互:
- C-Chain(合约链):一个兼容 EVM 的链,运行智能合约。这是大多数 dApp 连接的地方。
- X-Chain(交易链):处理 Avalanche 地址之间的资产转移。
- P-Chain(平台链):管理验证者、质押和子网协调。
每条链都有自己的 RPC 端点和 API 命名空间。对于 EVM 开发者,C-Chain 是主要焦点,它支持标准的以太坊 JSON-RPC 方法,如 eth_call、eth_sendRawTransaction 和 eth_getLogs。
链设置一览
为你的钱包或 dApp 配置 Avalanche C-Chain 时,请使用以下设置:
| 设置 | 值 |
|---|---|
| 网络名称 | Avalanche C-Chain |
| 链 ID | 43114 |
| 货币符号 | AVAX |
| 区块浏览器 | https://snowtrace.io |
对于测试网开发,请使用链 ID 为 43113 的 Fuji C-Chain。始终验证链 ID,以避免将交易发送到错误的网络。
连接到 Avalanche RPC:代码示例
使用 ethers.js(JavaScript)
const { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("https://api.avax.network/ext/bc/C/rpc");
async function getBlockNumber() {
const blockNumber = await provider.getBlockNumber();
console.log("Current block:", blockNumber);
}
getBlockNumber();
使用 curl(JSON-RPC)
curl -X POST https://api.avax.network/ext/bc/C/rpc \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
钱包配置(MetaMask)
- 打开 MetaMask 并点击网络下拉菜单。
- 点击“添加网络”并填写:
- 网络名称:Avalanche C-Chain
- 新的 RPC URL:
https://api.avax.network/ext/bc/C/rpc - 链 ID:
43114 - 货币符号:
AVAX - 区块浏览器 URL:
https://snowtrace.io
对于生产环境,请将公共 URL 替换为来自 OnFinality 等提供商的托管端点。有关可用选项,请参阅支持的 RPC 网络。
Avalanche C-Chain 上的常见 JSON-RPC 方法
由于 C-Chain 兼容 EVM,你可以使用标准的以太坊方法:
eth_blockNumber– 获取最新区块号。eth_getBalance– 获取地址的 AVAX 余额。eth_call– 执行只读合约调用。eth_sendRawTransaction– 广播已签名的交易。eth_getTransactionReceipt– 获取交易收据。eth_getLogs– 查询事件日志(历史数据需要归档节点)。
对于 X-Chain 和 P-Chain,Avalanche 使用自己的 API(avm.* 和 platform.*),这些对 dApp 开发者来说不太常见。
调试常见的 Avalanche RPC 问题
1. 错误的链 ID
如果你的交易因“无效链 ID”而失败,你可能连接到了错误的网络。请仔细检查你的提供商是否使用主网的链 ID 43114。
2. 速率限制
公共端点通常会限制请求。如果你看到 429 Too Many Requests 或超时,请切换到专用节点或托管 RPC 服务。
3. 缺少归档数据
在非归档节点上,针对旧区块的 eth_getLogs 可能会失败。请使用归档端点或提供归档数据的服务提供商。
4. WebSocket 断开
如果你的 WebSocket 连接频繁断开,你的提供商可能无法很好地支持持久连接。请考虑使用支持 WebSocket 的专用节点。
Avalanche RPC 提供商评估矩阵
在比较 RPC 提供商时,请使用此表来指导你的决策:
| 标准 | 检查内容 | 重要性 |
|---|---|---|
| 吞吐量 | 每秒请求数(RPS)限制 | 避免流量高峰期间的限流 |
| 归档数据 | 历史状态访问 | 分析和日志查询所需 |
| WebSocket 支持 | 持久连接稳定性 | 对实时 dApp 至关重要 |
| 地理分布 | 边缘位置 | 减少全球用户的延迟 |
| 故障转移 | 自动冗余 | 防止停机 |
OnFinality 提供专用 Avalanche 节点和具有透明定价的托管 RPC 服务。在做出决定之前,请根据你的工作负载比较这些因素。
构建与购买:运行你自己的 Avalanche 节点
运行你自己的 Avalanche 节点可以完全控制,但需要大量的运维工作:
- 硬件:C-Chain 节点需要至少 8 个 CPU 核心、16 GB RAM 和快速 SSD 存储的机器。
- 维护:你必须处理软件升级、监控和安全补丁。
- 同步:初始同步可能需要数天,归档节点需要数 TB 的存储空间。
对于大多数团队来说,使用托管 RPC 服务更具成本效益。你可以避免前期基础设施成本和持续的维护,并随着 dApp 的增长进行扩展。
关键要点
- Avalanche C-Chain 兼容 EVM,并使用标准的以太坊 JSON-RPC。
- 始终验证链 ID(主网为 43114),以避免跨网络错误。
- 公共端点适合测试,但生产应用需要可靠、可扩展的 RPC。
- 归档数据和 WebSocket 支持对许多 dApp 用例至关重要。
- 根据吞吐量、归档访问和故障转移能力评估提供商。
常见问题解答
Avalanche C-Chain RPC URL 是什么?
公共 C-Chain RPC URL 是 https://api.avax.network/ext/bc/C/rpc。对于生产环境,请使用来自 OnFinality 等提供商的托管端点。
如何获取 Avalanche RPC 端点?
你可以使用公共端点或注册托管 RPC 服务。OnFinality 提供专用 Avalanche 节点和共享端点;有关详细信息,请参阅 Avalanche 网络页面。
Avalanche 是否支持 WebSocket RPC?
是的,C-Chain 支持 WebSocket 连接以进行实时更新。请确保你的提供商支持持久的 WebSocket 连接。
C-Chain、X-Chain 和 P-Chain RPC 之间有什么区别?
C-Chain 用于智能合约(EVM),X-Chain 处理资产转移,P-Chain 管理验证者和子网。每条链都有自己的 RPC 端点和 API 命名空间。