摘要
Polygon PoS 端点是你的应用用来读取链状态并向 Polygon 权益证明网络提交交易的 HTTP 和 WebSocket URL。主网链 ID 是 137,原生 Gas 代币是 POL,一个可用的端点需要支持你的工作负载实际调用的 JSON-RPC 方法。本页涵盖链设置、端点选项、请求示例以及生产环境中出现的故障模式。
用它来判断共享公共端点是否足以应对你的流量,或者你是否需要专用的 Polygon 节点。OnFinality 通过其 API 服务和专用节点基础设施提供 Polygon PoS RPC,因此你可以从共享端点开始,并随着请求量或索引需求的增长迁移到隔离容量。
Polygon PoS 是最繁忙的 EVM 链之一,大多数团队通过 JSON-RPC 端点访问它,而不是运行自己的节点。棘手的地方不是找到一个 URL——而是选择一个匹配你工作负载的 URL,将其正确接入钱包和后端服务,并知道当调用开始失败时该检查什么。
本页面向需要可用的 Polygon PoS 端点以及选择共享公共 URL 和专用容量之间所需背景的开发者与基础设施采购者。如果你想先了解网络概况,请参阅 Polygon RPC 页面。
链设置一览
在连接任何东西之前,请确认以下值。Polygon 已将其原生 Gas 代币从 MATIC 迁移到 POL,因此仍引用 MATIC 的旧教程可能会在钱包配置和 Gas 估算中造成混淆。
| 设置 | Polygon PoS 主网 | Polygon Amoy 测试网 |
|---|---|---|
| 链 ID | 137 | 80002 |
| 链名称 | Polygon Mainnet | Amoy |
| 原生代币 | POL(18 位小数) | POL(18 位小数) |
| 区块浏览器 | https://polygonscan.com | https://amoy.polygonscan.com |
| 传输 | HTTP、WebSocket | HTTP、WebSocket |
主网的公共 OnFinality 端点位于 https://polygon.api.onfinality.io/public,Amoy 测试网端点是 https://polygon-amoy.api.onfinality.io/public。公共端点是共享的,因此请将其视为开发和低流量读取的起点,而不是高流量生产应用的最终归宿。
共享端点何时足够——何时不够
这是大多数团队会搞错的决策。当你的调用量适中、请求主要是读取,并且偶尔的延迟变化不会破坏用户体验时,共享公共端点是可以的。当你需要可预测的吞吐量、隔离容量或长时间运行的订阅时,它就会成为负担。
使用这个快速匹配检查:
| 你的情况 | 共享公共端点 | 专用 Polygon 节点 |
|---|---|---|
| 原型设计、脚本、小型 dApp | 通常可以 | 过度 |
| 有稳定用户流量的钱包或 dApp | 负载下有风险 | 推荐 |
进行批量 eth_getLogs 的索引器或后端 | 经常被限流 | 推荐 |
实时订阅(eth_subscribe) | 容易争用 | 推荐 |
| 归档或历史状态查询 | 有限 | 推荐 |
| 合规或数据隔离需求 | 不适合 | 推荐 |
如果你不确定自己属于哪种情况,请从共享端点开始,测量你的请求模式,一旦你能描述峰值负载,就迁移到专用节点。如需更广泛的框架,RPC 提供商选择指南介绍了评估标准。
从代码连接
确认端点是否可用的最简单方法是原始 JSON-RPC 调用。这会检查连接性并返回当前区块号:
curl -s https://polygon.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
成功的响应看起来像 {"jsonrpc":"2.0","id":1,"result":"0x..."}。如果你遇到超时或非 200 状态,问题出在端点或你的网络路径——而不是你的应用逻辑。
在 JavaScript 中,大多数团队使用 viem 或 ethers。使用 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 block = await client.getBlockNumber();
console.log('Polygon PoS head:', block);
对于实时工作,Polygon PoS 支持 WebSocket 订阅。通过 wss 的最小 eth_subscribe 如下所示:
import WebSocket from 'ws';
const ws = new WebSocket('wss://polygon.api.onfinality.io/public/ws');
ws.on('open', () => {
ws.send(JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'eth_subscribe',
params: ['newHeads'],
}));
});
ws.on('message', (data) => {
console.log('New head:', data.toString());
});
WebSocket 的可用性取决于你使用的端点和计划。如果订阅是你设计的一部分,请在提交之前确认传输支持,因为并非每个共享端点都暴露 wss。
将 Polygon PoS 添加到钱包
钱包和网络配置是“错误链”错误的常见来源。以下字段与设置表中的值匹配:
{
"chainId": "0x89",
"chainName": "Polygon Mainnet",
"nativeCurrency": { "name": "POL", "symbol": "POL", "decimals": 18 },
"rpcUrls": ["https://polygon.api.onfinality.io/public"],
"blockExplorerUrls": ["https://polygonscan.com"]
}
请注意,0x89 是十进制 137 的十六进制形式。混合这两种格式是 wallet_addEthereumChain 调用失败的最常见原因之一。
方法、限制以及容易出问题的地方
Polygon PoS 兼容 EVM,因此适用标准方法集:eth_call、eth_getBalance、eth_getLogs、eth_getTransactionReceipt、eth_estimateGas、eth_sendRawTransaction 等等。你最可能遇到的故障并不罕见:
- 共享端点上的速率限制。 突发的
eth_getLogs扫描或轮询循环可能触发共享限制。尽可能批处理和缓存。 eth_getLogs范围限制。 提供商限制每次查询的区块范围。如果你的索引器在一次调用中扫描大范围,请将其拆分为块。- 重组处理。 Polygon PoS 可能发生重组,因此确认数很重要。对于涉及价值的逻辑,不要将单个收据视为最终结果。
- 归档缺口。 针对旧区块的历史
eth_call需要归档数据。共享端点可能不提供深层历史。 - WebSocket 断开。 长期订阅需要带有退避和重新订阅步骤的重连逻辑。
失败调用的调试路径
当调用失败时,按以下顺序处理,而不是猜测:
- 用 curl 重现。 如果原始请求失败,问题出在端点或网络,而不是你的 SDK。
- 检查链 ID。 调用
eth_chainId并确认在主网上得到0x89。 - 隔离方法。 测试失败的具体方法。
eth_blockNumber正常工作并不能证明eth_getLogs会成功。 - 检查错误体。 JSON-RPC 错误携带代码和消息——速率限制、方法未找到和范围错误看起来不同。
- 比较端点。 如果第二个端点成功,则第一个是问题所在。
- 检查时间。 与你自己的部署或 cron 作业相关的峰值通常指向请求量,而不是提供商。
在共享容量和专用容量之间选择
如果你的调试路径总是落在速率限制、范围上限或订阅断开上,那么修复方法是容量,而不是代码。OnFinality 通过共享 RPC API 服务和专用节点部署提供 Polygon PoS,为你的工作负载提供隔离资源。专用节点通常是索引器、交易所和具有稳定生产流量的应用的选择。
在比较提供商时,无论供应商是谁,都要关注相同的维度:
| 维度 | 需要确认的内容 |
|---|---|
| 传输 | 如果需要订阅,是否支持 HTTP 和 WebSocket |
| 归档访问 | 是否提供历史状态查询 |
eth_getLogs 限制 | 每次查询的最大区块范围 |
| 吞吐量 | 你的计划允许的每秒请求数 |
| 故障转移 | 当一个端点降级时如何切换 |
| 定价模式 | 按请求 vs 专用容量 |
共享和专用选项的定价在 RPC 定价页面上,你可以在支持的 RPC 网络列表中浏览其他链。
关键要点
- Polygon PoS 主网使用链 ID 137(
0x89)、原生代币 POL 和浏览器 polygonscan.com。 - OnFinality 公共端点:主网为
https://polygon.api.onfinality.io/public,Amoy 测试网为https://polygon-amoy.api.onfinality.io/public。 - 共享端点适合开发和轻量读取;专用节点适合生产流量、索引器和订阅。
- 大多数故障可追溯到速率限制、
eth_getLogs范围上限、重组处理或 WebSocket 断开——而不是链本身。 - 在为生产工作负载提交端点之前,始终确认传输支持和归档访问。
常见问题
Polygon PoS 的链 ID 是什么?
主网是 137,十六进制写作 0x89。Amoy 测试网是 80002。
Polygon PoS 的原生代币是什么? POL,18 位小数。它取代 MATIC 成为网络的 Gas 和质押代币。
我可以在生产环境中使用公共端点吗? 可以,但共享端点会受到争用影响。对于稳定流量、订阅或批量日志查询,专用节点为你提供隔离容量。
Polygon PoS 支持 WebSocket 订阅吗?
是的,网络支持 eth_subscribe,但你使用的端点必须暴露 wss。确认你选择的计划的传输支持。
为什么 eth_getLogs 在大范围上失败?
提供商限制每次查询的区块范围以保护共享基础设施。将大扫描拆分为更小的块并分页。
如何在不中断的情况下切换端点?
运行至少两个端点,并在健康检查失败时故障转移。一个定期调用 eth_blockNumber 的简单探测就足以检测到降级的端点。