Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
RPC Assistant

Polygon 主网 RPC:如何连接到链 ID 137?

摘要

Polygon 主网是一条 EVM 兼容链,链 ID 为 137,原生 Gas 代币为 POL。要连接,请将您的钱包或应用指向 HTTP 或 WebSocket RPC 端点,并在发送交易前确认链 ID 匹配 137。OnFinality 提供用于测试的公共 Polygon 端点,以及用于需要一致容量的生产工作负载的专用 Polygon 节点基础设施。

Polygon 主网是一个 EVM 兼容网络,链 ID 为 137,原生 Gas 代币为 POL。如果您正在将钱包、后端索引器或交易机器人连接到 Polygon,首先需要一个可用的 RPC 端点以及正确的链设置。本页提供了这些设置、一些请求示例,以及一种在公共端点和专用节点基础设施之间做出决定的实用方法。

快速推荐:公共端点还是专用节点?

在原型设计、运行脚本或验证钱包配置是否正确时,从公共端点开始。这是确认链 ID、余额和合约调用的最快方式,无需任何注册。

在以下任何情况下,请迁移到专用 Polygon 节点:

  • 您发送稳定的 eth_call、eth_getLogs 或 eth_sendRawTransaction 请求流,并且无法容忍共享容量。
  • 您需要在铸造、清算或其他突发事件期间获得可预测的吞吐量。
  • 您依赖 WebSocket 订阅,例如 newHeads 或 logs,并希望拥有自己控制的连接。
  • 您需要归档式历史读取或跟踪式调试,而公共端点通常会限制这些功能。

OnFinality 两者都提供:用于开发的公共 Polygon 端点,以及用于生产的专用节点基础设施。您可以查看 RPC 定价和支持的 RPC 网络,以了解哪种适合您的工作负载。

Polygon 主网链设置一览

在将 Polygon 添加到钱包、Hardhat 配置或后端客户端时,请使用以下值。

设置值
网络名称Polygon Mainnet
链 ID137
原生货币POL(18 位小数)
区块浏览器https://polygonscan.com
传输HTTP 和 WebSocket
公共 RPC URLhttps://polygon.api.onfinality.io/public

如果工具要求单独提供“网络 ID”和链 ID,在 Polygon 主网上两者都使用 137。ID 不匹配是钱包和 dApp 中出现“错误网络”错误的最常见原因之一。

从钱包连接

大多数 EVM 钱包接受自定义网络。输入上述值,然后确认钱包显示 POL 作为 Gas 代币,并且您的地址余额已加载。如果余额为空但您预期有资金,请检查您是否仍指向测试网,例如 Polygon Amoy(链 ID 80002)。

一个常见的错误是粘贴测试网 RPC URL 但保留主网链 ID,或者反过来。钱包要么拒绝连接,要么静默显示错误的余额。对于主网,始终将端点与链 ID 137 配对。

进行您的第一次 JSON-RPC 调用

您可以通过单个 curl 请求验证端点。以下示例请求当前区块号:

curl -X POST https://polygon.api.onfinality.io/public \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'

健康的响应会返回一个十六进制区块号。然后,您可以检查链 ID 并获取余额:

curl -X POST https://polygon.api.onfinality.io/public \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"eth_chainId","params":[]}'

eth_chainId 结果应为 0x89,即十进制的 137。如果得到不同的值,说明您正在与错误的网络通信。

从 JavaScript 使用 Polygon

使用 ethers,您可以将提供者指向端点并读取状态,而无需管理密钥:

import { JsonRpcProvider, formatEther } from "ethers";

const provider = new JsonRpcProvider("https://polygon.api.onfinality.io/public");

const network = await provider.getNetwork();
console.log("chainId:", network.chainId.toString()); // 137

const block = await provider.getBlockNumber();
console.log("latest block:", block);

const balance = await provider.getBalance("0xYourAddressHere");
console.log("POL balance:", formatEther(balance));

如果您使用 viem,同样的思路适用于 createPublicClient 和指向端点的 http()。对于发送交易,请添加签名者并确保账户持有足够的 POL 来支付 Gas。

Polygon 上的 WebSocket 订阅

Polygon 支持 WebSocket 传输,这对于无需轮询即可对新区块或特定合约事件做出反应非常有用。一个最小的订阅如下所示:

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) => {
  const msg = JSON.parse(data.toString());
  if (msg.method === "eth_subscription") {
    console.log("new head:", msg.params.result.number);
  }
});

WebSocket 连接是有状态的,因此请规划重连。如果您的应用依赖长期订阅,专用节点提供的连接不会与无关流量共享。

生产中首先出现的问题

大多数 Polygon RPC 问题并不罕见。它们属于几个可重复的类别:

症状可能原因检查内容
钱包中显示“错误网络”链 ID 与端点不匹配确认链 ID 137 和主网 URL
余额为空指向了测试网检查是 Amoy (80002) 还是主网 (137)
请求缓慢或被限流共享公共容量将大量读取迁移到专用节点
eth_getLogs 失败或超时共享端点上的区块范围过宽缩小范围或使用适合日志查询的节点
订阅断开WebSocket 空闲或不稳定添加重连逻辑和心跳
交易卡住Gas 价格对于当前条件太低重新估算 Gas 并检查 POL 余额

如果您正在调试特定故障,请将其隔离:运行 eth_chainId,然后 eth_blockNumber,然后失败的方法。该顺序告诉您问题是端点、网络还是请求负载。

为 Polygon 工作负载选择基础设施

正确的选择取决于您的应用实际做什么。一个快速框架:

工作负载公共端点专用节点
原型设计和脚本适合不需要
钱包或 dApp 读取通常可以大规模时有用
高容量索引有风险推荐
WebSocket 订阅有限推荐
归档或跟踪查询通常受限推荐
突发流量(铸造、清算)不可预测推荐

OnFinality 的 Polygon RPC 网络页面列出了端点和传输详细信息。如果您正在更广泛地比较提供商,RPC 提供商选择指南涵盖了方法支持、故障转移和可观测性等标准。

添加故障转移和监控

单个端点就是单点故障。对于生产环境,至少运行两个端点,并在错误或延迟阈值时切换。一个简单的健康探测可以检查链 ID 和区块新鲜度:

async function probe(url) {
  const res = await fetch(url, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      jsonrpc: "2.0",
      id: 1,
      method: "eth_chainId",
      params: []
    })
  });
  const data = await res.json();
  return data.result === "0x89";
}

定期运行此探测,并将流量从失败或滞后的端点路由出去。跟踪区块高度随时间的变化,以便发现正在落后而不是完全失败的节点。

关键要点

  • Polygon 主网使用链 ID 137 和 POL 作为其原生 Gas 代币。
  • OnFinality 的公共端点 https://polygon.api.onfinality.io/public 适用于开发和验证。
  • 在信任任何端点之前,确认 eth_chainId 返回 0x89。
  • 使用 WebSocket 传输进行订阅,并添加重连逻辑。
  • 当共享容量成为瓶颈时,将大量读取、日志查询和订阅迁移到专用节点。
  • 始终规划故障转移并监控区块新鲜度,而不仅仅是正常运行时间。

常见问题解答

Polygon 主网 RPC URL 是什么?

OnFinality 的公共 Polygon 端点是 https://polygon.api.onfinality.io/public。对于生产环境,请使用提供商仪表板中的专用端点。

Polygon 的链 ID 是什么?

Polygon 主网使用链 ID 137,十六进制为 0x89。测试网 Polygon Amoy 使用链 ID 80002。

Polygon RPC 支持 WebSocket 吗?

是的。Polygon 支持 HTTP 和 WebSocket 传输。使用 WebSocket 进行 eth_subscribe 方法,例如 newHeads 和 logs。

我可以在生产环境中使用公共端点吗?

可以,但共享容量在负载下不可预测。对于稳定流量、突发流量或订阅,专用节点是更安全的选择。

如何知道我的端点是否在错误的网络上?

调用 eth_chainId。如果它不返回 0x89,则您连接到了不同的网络或测试网。

在哪里可以看到支持的 Polygon 端点和定价?

请参阅 Polygon 网络页面、RPC 定价以及支持的 RPC 网络的完整列表。

RPC 知识库

相关 RPC 内容

测试网 RPCEthereumBase

Base Sepolia RPC 端点:链设置、水龙头与调试

Base Sepolia 是基于 OP Stack 构建的 Base L2 网络的测试网,使用 Sepolia ETH。本页面提供官方 RPC 端点、链配置、水龙头链接以及开发者在 Base Sepolia 上测试 dapp 时的常见故障排除技巧。...

网络 RPCHydraDX

什么是 HydraDX,如何通过 RPC 连接到它?

# 什么是 HydraDX,如何通过 RPC 连接到它? HydraDX(现已更名为 Hydration)是一个构建在 Polkadot 上的下一代 DeFi 协议,作为平行链运行。其旗舰产品是 Omnipool,一种创新的自动做市商(AMM),将所有资产整合到一个单一交易池中,从而实现资本高效的兑...

区块链基础设施BNB Chain

什么是币安智能链节点,你应该如何访问它们?

BNB智能链节点是维护BSC状态副本、验证区块并提供JSON-RPC请求服务的客户端实例。你可以自己运行全节点、归档节点或快速节点,或者在需要可靠访问而无需基础设施开销时连接到托管的RPC端点。 本文解释了主要的节点类型、运行自己的节点涉及的内容,以及如何在自托管、专用BSC节点和RPC API服务...

网络 RPCArbitrum

关于 Arbitrum RPC 端点,我需要了解什么?

# 关于 Arbitrum RPC 端点,我需要了解什么? Arbitrum RPC 端点至关重要,因为 Web3 应用程序依赖稳定的端点访问来进行读取、交易、仪表盘和后端工作流。正确的设置应匹配您的工作负载,支持您所需的网络和测试网,使限制可见,并在共享 RPC 不再足够时为您提供扩展路径。 对于...

网络 RPCSORA

SORA区块链和SORA网络:开发者应该了解什么?

SORA是一个基于Substrate的区块链网络,旨在创建一个主权经济系统,使用XOR代币和代币绑定曲线。它为Polkaswap提供动力,并支持民主治理和跨链互操作性。本文解释了什么是SORA,如何通过RPC连接到它,以及为生产应用选择基础设施时需要考虑的事项。...

区块链基础设施Bittensor

Bittensor TAO 挖矿:如何开始、需要什么硬件以及如何保持在线

Bittensor TAO 挖矿并非传统的工作量证明挖矿。矿工在子网上注册一个热键,并提供验证者评分的有用工作——计算、推理、存储或预测。TAO 奖励取决于你所在子网的排放量以及你相对于其他矿工的表现。 本指南涵盖如何选择子网、所需的硬件和软件、如何注册并运行矿工,以及如何使用可靠的 RPC 端点保...

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始