摘要
Avalanche API是开发者用于在Avalanche主网及其Layer 1上读写数据的接口集合。它包括C链、P链和X链的JSON-RPC方法,以及用于余额、交易和代币元数据的更高级数据API。选择合适的API访问方式取决于你的工作负载:简单的dApp调用可以使用公共RPC端点,而生产环境应用通常需要专用或托管基础设施以确保可靠性和速率限制。
Avalanche API决策清单
在选择Avalanche API方案之前,请检查以下清单:
- 你需要哪条链? Avalanche有C链(EVM)、P链(平台)和X链(资产)。每条链暴露不同的JSON-RPC命名空间。
- 你需要哪些数据? 对于原始区块和交易,使用RPC。对于索引余额、代币转账和历史数据,数据API通常更简单。
- 你的速率限制是多少? 公共端点是共享的,可能会限制你。对于生产环境,请检查提供商的速率限制以及他们是否提供专用吞吐量。
- 你需要归档数据吗? 历史状态查询需要归档节点。请确认你的提供商支持C链的归档RPC。
- 你需要WebSocket吗? 对于实时订阅,你需要WebSocket端点。并非所有提供商都提供。
- 如何处理故障转移? 单个端点是单点故障。请规划多个端点或使用具有自动故障转移功能的提供商。
- 你的预算是多少? 免费层适用于开发,但生产工作负载通常需要付费计划以获得更高限制和支持。
什么是Avalanche API?
Avalanche API是让应用程序与Avalanche网络交互的接口集合。它包括:
- 用于C链、P链和X链的JSON-RPC API。
- 提供索引化、人类可读数据(如交易历史和代币余额)的数据API。
- 用于实时事件订阅的WebSocket API。
Avalanche的C链是EVM兼容链,因此它支持标准的以太坊JSON-RPC方法,如eth_getBalance、eth_call和eth_sendRawTransaction。P链和X链使用Avalanche特定的方法进行平台操作和资产转移。
Avalanche C链API:EVM JSON-RPC
C链是Avalanche上的默认智能合约链。它完全兼容EVM,这意味着你可以使用熟悉的工具,如ethers.js、web3.js和Hardhat。
常见的C链RPC方法
eth_blockNumber– 获取最新区块号eth_getBalance– 获取地址的AVAX余额eth_call– 执行只读合约调用eth_sendRawTransaction– 广播已签名的交易eth_getTransactionReceipt– 获取交易收据eth_subscribe– 通过WebSocket订阅事件
示例:获取AVAX余额
curl -X POST https://api.avax.network/ext/bc/C/rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "eth_getBalance",
"params": ["0xYourAddress", "latest"],
"id": 1
}'
将0xYourAddress替换为真实地址。响应将包含以wei为单位的余额。
Avalanche P链和X链API
P链处理平台操作,如质押和验证者管理。X链处理资产转移。这些链使用Avalanche特定的JSON-RPC方法。
- P链:
platform.getCurrentValidators、platform.getBalance、platform.issueTx - X链:
avm.getBalance、avm.issueTx、avm.getUTXOs
这些方法可在不同的端点路径上使用,例如/ext/bc/P和/ext/bc/X。如果你构建的dApp仅使用C链,可能不需要这些,但它们对于质押或跨链操作至关重要。
Avalanche数据API与RPC对比
Avalanche官方数据API提供索引化数据,比原始RPC更容易查询。例如,你可以获取地址的交易列表,而无需扫描每个区块。
| 标准 | 检查什么 | 为什么重要 |
|---|---|---|
| 数据新鲜度 | 数据更新速度有多快? | 实时应用需要低延迟。 |
| 历史深度 | 索引回溯多远? | 分析和审计需要完整历史。 |
| 速率限制 | 每秒请求数是多少? | 高流量应用需要余量。 |
| WebSocket支持 | 能否订阅事件? | 实时通知需要WebSocket。 |
| 归档数据 | 历史状态是否可用? | 某些查询需要归档节点。 |
| 成本 | 免费层与付费计划 | 预算影响可扩展性。 |
对于简单查询(如“获取最新区块”),RPC就足够了。对于复杂查询(如“获取此地址的所有ERC-20转账”),数据API更高效。
如何选择Avalanche API提供商
评估Avalanche API提供商时,请考虑:
- 可靠性:寻找具有正常运行时间和透明状态页面记录的提供商。
- 可扩展性:提供商能否处理流量高峰而不会限制你的应用?
- 支持:他们是否为生产问题提供专门支持?
- 安全性:端点是否受到DDoS和其他攻击的保护?
- 兼容性:他们是否支持你需要的所有方法,包括归档和WebSocket?
OnFinality作为其支持的RPC网络的一部分提供Avalanche RPC端点。你还可以启动专用节点以完全控制你的基础设施。查看RPC定价以找到适合你工作负载的计划。
常见陷阱和故障排除
- 速率限制:公共端点经常返回
429 Too Many Requests。使用具有更高限制的提供商或实现重试逻辑。 - 错误的端点路径:确保你使用了目标链的正确路径。例如,C链是
/ext/bc/C/rpc。 - EVM兼容性问题:某些工具期望以太坊主网设置。正确配置链ID(C链主网为43114)和网络名称。
- WebSocket断开:WebSocket连接可能会断开。实现重连逻辑。
- 归档数据缺失:如果遇到
missing trie node错误,你需要归档节点。
示例:使用ethers.js连接Avalanche C链
const { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("https://api.avax.network/ext/bc/C/rpc");
async function getBalance(address) {
const balance = await provider.getBalance(address);
console.log(`Balance: ${ethers.formatEther(balance)} AVAX`);
}
getBalance("0xYourAddress");
何时使用专用节点
专用节点让你独占访问Avalanche节点。这在以下情况下很有用:
- 你有高吞吐量需求。
- 你需要自定义RPC方法或调优。
- 你想避免共享端点上的嘈杂邻居。
- 你需要遵守严格的数据隐私政策。
OnFinality的专用节点服务让你无需运营开销即可部署和管理Avalanche节点。
关键要点
- Avalanche提供多种API:C链(EVM)、P链、X链和数据API。
- C链兼容EVM,因此以太坊工具只需少量配置即可使用。
- 对于原始区块链访问,选择RPC;对于索引化、查询友好的数据,选择数据API。
- 评估提供商时,考虑可靠性、速率限制、归档支持和WebSocket可用性。
- 对于生产环境,考虑专用节点或托管服务以确保性能和正常运行时间。
常见问题
什么是Avalanche API?
Avalanche API是用于与Avalanche网络(包括C链、P链和X链)交互的JSON-RPC和REST接口集合。
Avalanche API是否兼容以太坊?
是的,C链完全兼容EVM,因此它支持标准的以太坊JSON-RPC方法和库,如ethers.js和web3.js。
使用Avalanche API需要API密钥吗?
公共端点不需要密钥,但它们有速率限制。对于生产环境,像OnFinality这样的提供商提供具有更高限制和更好可靠性的API密钥。
RPC和数据API有什么区别?
RPC提供原始区块链数据,而数据API提供索引化、更易查询的数据,如交易历史和代币余额。
如何开始使用Avalanche API?
你可以从公共端点开始测试,然后为生产环境注册托管RPC服务。查看OnFinality的支持的网络以获取Avalanche端点。