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

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 方法,例如 newHeadslogs

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

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

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

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

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

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

RPC 知识库

相关 RPC 内容

RPC 提供商选择Solana

如何为区块链项目选择最佳的 Solana RPC

选择合适的 Solana RPC 提供商对于您的 dApp、交易机器人或索引服务的性能和可靠性至关重要。本指南解释了公共、共享和专用 Solana RPC 端点之间的主要区别,并提供了一个实用的评估框架,帮助您将基础设施与项目的工作负载、延迟和数据需求相匹配。 我们涵盖了吞吐量、WebSocket ...

网络 RPCxx network

关于xx网络,我需要了解什么?

# 关于xx网络,我需要了解什么? xx网络是一个抗量子计算的Layer 1区块链,集成了去中心化混合网络(cMix)用于私密通信。由密码学先驱David Chaum创立,采用提名权益证明(NPoS)共识机制,为dApp和消息传递提供低费用、可扩展的基础设施。对于开发者而言,可靠的RPC端点和专用节...

区块链基础设施

什么是区块链节点基础设施,何时应租用而不是自行运行?

区块链节点基础设施是维持区块链网络运行的硬件、软件和网络。它包括全节点、归档节点和验证器,每种都有不同的存储和计算需求。运行自己的节点可以让你掌控一切,但也带来了同步、监控和扩展等运维负担。像 OnFinality 这样的托管 RPC 服务提供了可靠的节点基础设施访问,而无需自行托管的负担。...

RPC 提供商选择Solana

如何为初创企业选择具有竞争性定价和强大开发者工具的Solana RPC提供商

在Solana上构建的初创企业需要一个能够平衡可预测定价与加速迭代的开发者工具的RPC提供商。本指南分解了关键评估标准——定价模型、速率限制、WebSocket支持、存档数据和开发者体验——以便您在不超支或超出基础设施的情况下比较提供商。 我们涵盖了在Solana RPC提供商中应关注的内容,如何将...

网络 RPCBNB Chain

BNB智能链节点:它是什么以及如何可靠连接

BNB智能链节点是存储BSC状态并提供JSON-RPC请求的客户端。您可以自己运行一个节点,也可以使用托管的RPC提供商。本页解释了节点类型、如何连接以及如何选择与您的工作负载匹配的基础设施。...

网络 RPCSolana

Solana RPC Access: Authentication, Rate Limits & Common Errors

Solana RPC access uses JSON-RPC over HTTP and WebSocket. Public endpoints such as https://api.mainnet-beta.solana.com require no key but enforce chang...

永远不用担心基础设施

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

开始