摘要
了解如何通过 RPC 连接到 Polygon 网络,包括 OnFinality 官方公共端点、链设置和常见故障排除步骤。本指南涵盖 JSON-RPC 方法、WebSocket 支持,以及如何为您的 dApp 选择公共、共享和专用 RPC 基础设施。
快速决策指南:哪种 Polygon RPC 选项适合您的应用?
在深入端点和方法之前,先决定您希望如何连接到 Polygon。您的选择取决于流量、可靠性需求以及是否需要历史数据。
- 公共 RPC 端点 – 适用于原型开发、黑客松或低流量应用。OnFinality 官方公共端点是
https://polygon.api.onfinality.io/public。它是免费的,但为共享资源,可能存在速率限制,不适合生产环境。 - 共享/托管 RPC – 一种托管服务,提供专用端点,具有更高的吞吐量、WebSocket 支持,并且通常提供归档数据。这是需要一致性能且无需运行基础设施的生产 dApp 的常见选择。
- 专用节点 – 为您的项目独享的全节点。这提供最高控制权、自定义配置,且没有邻居干扰。最适合高流量应用、索引器或需要自定义 RPC 方法的团队。
如果您不确定,可以先使用公共端点进行测试,然后随着用户增长迁移到托管或专用解决方案。有关提供商的详细比较,请参阅我们的 选择 RPC 提供商指南。
Polygon 网络概览
Polygon(原 Matic Network)是以太坊的第 2 层扩展解决方案。它使用权益证明(PoS)共识,并且兼容 EVM,这意味着您可以使用与以太坊相同的工具和库。主网因其低费用和快速最终性而广泛用于 DeFi、游戏和 NFT。
以下是配置钱包或 dApp 所需的关键链设置:
| 设置 | 值 |
|---|---|
| 网络名称 | Polygon 主网 |
| 链 ID | 137 |
| 原生货币 | POL(原 MATIC) |
| 符号 | POL |
| 小数位数 | 18 |
| 区块浏览器 | https://polygonscan.com |
| 公共 RPC 端点 | https://polygon.api.onfinality.io/public |
| WebSocket 支持 | 是(wss://polygon.api.onfinality.io/public) |
注意:原生代币已从 MATIC 更名为 POL。大多数 RPC 方法和钱包在某些上下文中仍将代币引用为 MATIC,但符号现在是 POL。
如何连接到 Polygon RPC
您可以使用标准的以太坊 JSON-RPC 方法与 Polygon RPC 交互。以下是使用 curl 和流行库的示例。
使用 curl
要检查当前区块号:
curl -X POST https://polygon.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
使用 ethers.js
const { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("https://polygon.api.onfinality.io/public");
async function getBlock() {
const blockNumber = await provider.getBlockNumber();
console.log("Current block:", blockNumber);
}
getBlock();
使用 viem
import { createPublicClient, http } from 'viem';
import { polygon } from 'viem/chains';
const client = createPublicClient({
chain: polygon,
transport: http('https://polygon.api.onfinality.io/public')
});
const blockNumber = await client.getBlockNumber();
console.log(blockNumber);
钱包配置
如果您需要将 Polygon 添加到 MetaMask 等钱包,请使用以下设置:
- 网络名称:Polygon 主网
- 新的 RPC URL:
https://polygon.api.onfinality.io/public - 链 ID:137
- 货币符号:POL
- 区块浏览器 URL:
https://polygonscan.com
Polygon 上常见的 JSON-RPC 方法
Polygon 支持大多数以太坊 JSON-RPC 方法。以下是您最常用的方法:
eth_blockNumber– 获取最新区块号。eth_getBalance– 获取地址余额。eth_call– 执行只读合约调用。eth_sendRawTransaction– 广播已签名的交易。eth_getTransactionReceipt– 获取交易收据。eth_getLogs– 获取事件日志(用于索引)。eth_estimateGas– 估算交易的 gas。
有关完整列表,请参阅以太坊 JSON-RPC 规范。Polygon 还支持 net_version 和 web3_clientVersion 方法。
WebSocket 支持和实时数据
如果您的 dApp 需要实时更新(例如价格馈送、交易状态),请使用 WebSocket。OnFinality 公共端点支持 WebSocket,地址为 wss://polygon.api.onfinality.io/public。
订阅新区块头的示例:
const { WebSocket } = require("ws");
const ws = new WebSocket("wss://polygon.api.onfinality.io/public");
ws.on("open", () => {
ws.send(JSON.stringify({
jsonrpc: "2.0",
method: "eth_subscribe",
params: ["newHeads"],
id: 1
}));
});
ws.on("message", (data) => {
console.log("New block:", JSON.parse(data));
});
调试常见的 RPC 问题
即使使用可靠的端点,您也可能会遇到问题。以下是常见问题及解决方法。
1. 速率限制
公共端点通常有速率限制。如果您看到 429 Too Many Requests 或 rate limit exceeded,您需要更高等级的端点。请考虑使用 托管 RPC 服务 或专用节点。
2. 找不到交易
如果 eth_getTransactionReceipt 返回 null,则交易可能处于待处理状态或被丢弃。使用 eth_getTransactionByHash 检查内存池。如果未找到,请以更高的 gas 价格重新提交。
3. 链 ID 错误
确保您的钱包或 dApp 使用链 ID 137。使用错误的链 ID 会导致交易失败。
4. WebSocket 断开连接
WebSocket 连接可能会断开。请实现具有指数退避的重连逻辑。
5. eth_getLogs 超时
查询大范围区块的日志可能会超时。请使用较小的范围并分页。
公共、托管与专用:需要考虑的事项
为 Polygon 选择 RPC 提供商时,请评估以下因素:
| 因素 | 公共 | 托管 | 专用 |
|---|---|---|---|
| 成本 | 免费 | 订阅 | 更高成本 |
| 速率限制 | 有 | 更高限制 | 自定义 |
| 可靠性 | 尽力而为 | 高 | 最高 |
| 归档数据 | 否 | 可选 | 是 |
| WebSocket | 是 | 是 | 是 |
| 自定义方法 | 否 | 有限 | 是 |
对于生产应用,建议使用托管或专用解决方案。OnFinality 为 Polygon 提供 专用节点 和 托管 RPC,支持归档数据和 WebSocket。
Polygon Amoy 测试网
如果您在测试网上开发,Polygon Amoy 是推荐的测试网(取代已弃用的 Mumbai)。链 ID 为 80002,公共 RPC 端点为 https://polygon-amoy.api.onfinality.io/public。您可以从 Amoy 水龙头获取测试 POL。
关键要点
- Polygon 主网使用链 ID 137 和原生代币 POL。
- OnFinality 官方公共端点是
https://polygon.api.onfinality.io/public。 - 使用 WebSocket 获取实时数据。
- 对于生产环境,请考虑使用托管或专用 RPC 以避免速率限制并确保可靠性。
- Polygon Amoy 是用于开发的测试网。
常见问题解答
Polygon 网络的 RPC URL 是什么?
Polygon 主网的公共 RPC URL 是 https://polygon.api.onfinality.io/public。对于 Amoy 测试网,请使用 https://polygon-amoy.api.onfinality.io/public。
Polygon 的链 ID 是什么?
Polygon 主网的链 ID 是 137。Amoy 测试网使用 80002。
Polygon RPC 是否与以太坊兼容?
是的,Polygon 兼容 EVM,因此您可以使用以太坊 JSON-RPC 方法和 ethers.js、viem 等库。
如何获取 Polygon Amoy 的测试 POL?
您可以从 Amoy 水龙头获取测试 POL。有关更多详细信息,请查看 Polygon 网络页面。
为什么我在公共端点上遇到速率限制?
公共端点是共享的,并且有速率限制。要获得更高的限制,请考虑使用 托管 RPC 服务 或 专用节点。
有关支持的网络的完整列表,请访问我们的 网络页面。