摘要
Acala是一个专注于DeFi的Polkadot平行链,它同时提供Substrate RPC和EVM+接口。本文介绍了可用的Acala RPC端点,如何配置钱包和dApp,以及如何为生产工作负载选择公共、认证和专用节点基础设施。
快速决策指南:你应该使用哪种Acala RPC设置?
在深入端点列表之前,先确定你的工作负载实际需要什么。正确的Acala RPC设置取决于你的阶段和流量模式:
- 原型开发或轻量测试:使用公共Acala RPC端点进行快速检查、脚本调试和初始集成测试。它适用于低量请求,且不需要API密钥。
- 生产dApp或后端服务:切换到认证端点。你可以获得更清晰的速率限制、分析和操作可见性,这有助于规划容量并避免意外限流。
- 高吞吐量、归档或自定义节点需求:考虑使用专用Acala节点。这为你提供隔离的资源、运行归档节点的能力以及对节点配置的控制——对于收集人、索引器或需要一致性能的应用程序非常重要。
如果不确定,可以从公共端点开始,测量请求量,然后随着流量增长升级到认证或专用基础设施。有关RPC提供商的更深入比较,请参阅我们的选择RPC提供商指南。
Acala概览:一个网络中的Substrate和EVM+
Acala是一个为DeFi构建的Polkadot平行链。它提供完整的Substrate运行时,包含稳定币、流动性质押和DEX功能的pallet。在此基础上,Acala提供EVM+环境,与以太坊工具兼容,同时仍可访问Substrate特定功能。
这种双重性质意味着,当你搜索“Acala RPC”时,你可能在寻找以下两种之一:
- Substrate RPC端点,用于查询链状态、提交交易或与Acala的自定义pallet交互。
- EVM RPC端点,用于使用MetaMask、ethers.js或viem等工具部署和交互Solidity智能合约。
两者都很重要,你选择的端点取决于你正在构建的应用程序类型。
Acala链设置概览
如果你要连接钱包或基于EVM的工具,需要正确的链配置。以下是Acala主网的关键设置:
| 设置 | 值 |
|---|---|
| 网络名称 | Acala |
| 链ID | 787 (0x313) |
| 货币符号 | ACA |
| 区块浏览器 | https://blockscout.acala.network |
| RPC URL (HTTPS) | https://eth-rpc-acala.aca-api.network |
| RPC URL (WSS) | wss://eth-rpc-acala.aca-api.network |
这些设置通常列在ChainList等链注册表中。在连接钱包之前,请务必使用官方Acala文档验证链ID和RPC URL。
Acala RPC端点选项
Acala提供多个公共RPC端点,每个端点具有不同的特性。以下是你常见的端点摘要:
| 提供商 | 端点 (HTTPS) | 端点 (WSS) | 备注 |
|---|---|---|---|
| Acala基金会 | https://acala-rpc.aca-api.network | wss://acala-rpc.aca-api.network | 官方端点,可能有速率限制 |
| Dwellir | https://acala-rpc.n.dwellir.com | wss://acala-rpc.n.dwellir.com | 独立提供商 |
| LuckyFriday | https://rpc-acala.luckyfriday.io | wss://rpc-acala.luckyfriday.io | 社区提供商 |
| OnFinality | https://acala-polkadot.api.onfinality.io/public | wss://acala-polkadot.api.onfinality.io/public-ws | 用于测试的公共端点;生产环境需认证访问 |
注意:公共端点是共享的,可能会被限流或经历停机。对于生产应用程序,应使用认证端点或专用节点。
使用MetaMask连接Acala EVM+
如果你正在构建使用Acala EVM+侧的dApp,可以将Acala作为自定义网络添加到MetaMask。以下是示例配置:
{
"chainId": "0x313",
"chainName": "Acala",
"nativeCurrency": {
"name": "Acala",
"symbol": "ACA",
"decimals": 18
},
"rpcUrls": ["https://eth-rpc-acala.aca-api.network"],
"blockExplorerUrls": ["https://blockscout.acala.network"]
}
你也可以使用window.ethereum.request方法以编程方式添加网络:
await window.ethereum.request({
method: 'wallet_addEthereumChain',
params: [{
chainId: '0x313',
chainName: 'Acala',
nativeCurrency: {
name: 'Acala',
symbol: 'ACA',
decimals: 18
},
rpcUrls: ['https://eth-rpc-acala.aca-api.network'],
blockExplorerUrls: ['https://blockscout.acala.network']
}]
});
使用ethers.js或viem调用Acala RPC
对于EVM+开发,你可以使用标准的以太坊库。以下是使用ethers.js的示例:
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider('https://eth-rpc-acala.aca-api.network');
const blockNumber = await provider.getBlockNumber();
console.log('Acala block number:', blockNumber);
以及使用viem:
import { createPublicClient, http } from 'viem';
const client = createPublicClient({
chain: {
id: 787,
name: 'Acala',
network: 'acala',
nativeCurrency: { name: 'Acala', symbol: 'ACA', decimals: 18 },
rpcUrls: {
default: { http: ['https://eth-rpc-acala.aca-api.network'] },
},
},
transport: http(),
});
const blockNumber = await client.getBlockNumber();
console.log('Acala block number:', blockNumber);
Substrate RPC:查询链状态
对于Substrate特定操作,你可以直接使用JSON-RPC接口。以下是获取最新最终确定区块头的curl示例:
curl -H "Content-Type: application/json" \
-d '{"id":1,"jsonrpc":"2.0","method":"chain_getFinalizedHead","params":[]}' \
https://acala-polkadot.api.onfinality.io/public
你也可以使用WebSocket订阅新区块:
const WebSocket = require('ws');
const ws = new WebSocket('wss://acala-polkadot.api.onfinality.io/public-ws');
ws.on('open', () => {
ws.send(JSON.stringify({
id: 1,
jsonrpc: '2.0',
method: 'chain_subscribeNewHeads',
params: []
}));
});
ws.on('message', (data) => {
console.log('New head:', data.toString());
});
Acala RPC方法和限制
Acala RPC端点支持标准的Substrate和以太坊JSON-RPC方法。常见方法包括:
chain_getBlockchain_getFinalizedHeadstate_getStorageeth_blockNumbereth_getBalanceeth_call
公共端点通常有速率限制以保护基础设施。如果你需要更高的吞吐量或更一致的性能,请考虑认证端点或专用节点。OnFinality的RPC定价页面提供了计划和限制的详细信息。
常见Acala RPC问题排查
以下是使用Acala RPC时可能遇到的一些常见问题:
- 连接超时:公共端点可能缓慢或过载。尝试不同的端点或使用WebSocket连接获取实时数据。
- 速率限制:如果你收到HTTP 429响应,说明你达到了速率限制。降低请求频率或升级到认证端点。
- 错误的链ID:确保你的钱包或dApp配置了链ID 787。使用错误的链ID可能导致交易失败。
- EVM与Substrate混淆:如果你尝试在Substrate端点上调用EVM方法,将会失败。请根据你的用例使用适当的端点。
何时考虑使用专用Acala节点
专用Acala节点让你完全控制节点环境。这对于以下情况很有用:
- 高流量应用程序,需要一致的性能和明确的速率限制。
- 归档节点,需要查询历史状态。
- 收集人,需要运行节点进行区块生产。
- 自定义节点配置,需要特定标志或补丁。
OnFinality提供专用Acala节点,具有托管操作、监控和隔离资源。你也可以探索我们的支持的网络以查看我们支持的其他链。
关键要点
- Acala是一个Polkadot平行链,同时具有Substrate和EVM+接口。
- 使用公共RPC端点进行测试,但生产环境应切换到认证或专用基础设施。
- 使用正确的链ID(787)和RPC URL配置钱包。
- 使用ethers.js或viem等标准以太坊库进行EVM+开发。
- 对于Substrate特定查询,直接使用JSON-RPC接口。
- 监控使用情况并规划扩展,以避免速率限制和停机。
常见问题解答
Acala RPC端点是什么?
Acala提供多个公共RPC端点,包括https://acala-rpc.aca-api.network和https://acala-polkadot.api.onfinality.io/public。对于生产环境,请使用认证端点或专用节点。
Acala链ID是多少?
Acala链ID是787(0x313)。
我可以将MetaMask与Acala一起使用吗?
是的,你可以使用链ID 787和EVM RPC URL将Acala作为自定义网络添加到MetaMask。
Acala上的Substrate和EVM RPC有什么区别?
Substrate RPC用于链状态和交易,而EVM RPC用于智能合约交互。请根据你的用例使用适当的端点。
如何获得专用Acala节点?
你可以通过OnFinality的专用节点服务获得专用Acala节点。