Resumen
Polygon Mainnet es una cadena compatible con EVM identificada por la chain ID 137, con POL como su token de gas nativo. Para conectarte, apunta tu billetera o aplicación a un endpoint RPC HTTP o WebSocket y confirma que la chain ID coincida con 137 antes de enviar transacciones. OnFinality proporciona un endpoint público de Polygon para pruebas e infraestructura de nodo dedicada de Polygon para cargas de trabajo en producción que necesitan capacidad constante.
Polygon Mainnet es una red compatible con EVM con chain ID 137 y POL como su token de gas nativo. Si estás conectando una billetera, un indexador backend o un bot de trading a Polygon, lo primero que necesitas es un endpoint RPC funcional más la configuración correcta de la cadena. Esta página te da la configuración, algunos ejemplos de solicitudes y una forma práctica de decidir entre un endpoint público y una infraestructura de nodo dedicada.
Recomendación rápida: ¿endpoint público o nodo dedicado?
Comienza con el endpoint público cuando estés prototipando, ejecutando un script o verificando que la configuración de tu billetera sea correcta. Es la forma más rápida de confirmar la chain ID, los saldos y las llamadas a contratos sin necesidad de registrarte.
Cambia a un nodo dedicado de Polygon cuando se cumpla cualquiera de estas condiciones:
- Envías un flujo constante de solicitudes
eth_call,eth_getLogsoeth_sendRawTransactiony no puedes tolerar capacidad compartida. - Necesitas un rendimiento predecible durante mints, liquidaciones u otros eventos de ráfaga.
- Dependes de suscripciones WebSocket como
newHeadsologsy quieres una conexión que controles. - Necesitas lecturas históricas tipo archivo o depuración tipo trace que los endpoints públicos a menudo restringen.
OnFinality ofrece ambos: un endpoint público de Polygon para desarrollo e infraestructura de nodo dedicado para producción. Puedes revisar los precios de RPC y las redes RPC compatibles para ver qué se ajusta a tu carga de trabajo.
Configuración de Polygon Mainnet de un vistazo
Usa estos valores al agregar Polygon a una billetera, una configuración de Hardhat o un cliente backend.
| Configuración | Valor |
|---|---|
| Nombre de la red | Polygon Mainnet |
| Chain ID | 137 |
| Moneda nativa | POL (18 decimales) |
| Explorador de bloques | https://polygonscan.com |
| Transporte | HTTP y WebSocket |
| URL RPC pública | https://polygon.api.onfinality.io/public |
Si una herramienta solicita un "network ID" por separado de una chain ID, usa 137 para ambos en Polygon Mainnet. Los ID que no coinciden son una de las causas más comunes de errores de "red incorrecta" en billeteras y dApps.
Conexión desde una billetera
La mayoría de las billeteras EVM aceptan una red personalizada. Ingresa los valores anteriores y luego confirma que la billetera muestre POL como token de gas y que el saldo de tu dirección se cargue. Si el saldo está vacío pero esperas fondos, verifica que no sigas apuntando a una testnet como Polygon Amoy (chain ID 80002).
Un error común es pegar una URL RPC de testnet mientras se mantiene la chain ID de mainnet, o al revés. La billetera rechazará la conexión o mostrará silenciosamente los saldos incorrectos. Siempre empareja el endpoint con la chain ID 137 para mainnet.
Realizando tus primeras llamadas JSON-RPC
Puedes verificar un endpoint con una sola solicitud curl. El siguiente ejemplo pide el número de bloque actual:
curl -X POST https://polygon.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'
Una respuesta saludable devuelve un número de bloque en hexadecimal. A partir de ahí, puedes verificar la chain ID y obtener un saldo:
curl -X POST https://polygon.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"eth_chainId","params":[]}'
El resultado de eth_chainId debería ser 0x89, que es 137 en decimal. Si obtienes un valor diferente, estás hablando con la red incorrecta.
Usando Polygon desde JavaScript
Con ethers, puedes apuntar un proveedor al endpoint y leer el estado sin administrar claves:
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));
Si usas viem, la misma idea aplica con createPublicClient y http() apuntando al endpoint. Para enviar transacciones, agrega un firmante y asegúrate de que la cuenta tenga suficiente POL para cubrir el gas.
Suscripciones WebSocket en Polygon
Polygon admite transporte WebSocket, lo cual es útil para reaccionar a nuevos bloques o eventos específicos de contratos sin hacer polling. Una suscripción mínima se ve así:
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);
}
});
Las conexiones WebSocket son con estado, así que planifica reconexiones. Si tu aplicación depende de suscripciones de larga duración, un nodo dedicado te da una conexión que no se comparte con tráfico no relacionado.
Qué falla primero en producción
La mayoría de los problemas de Polygon RPC no son exóticos. Caen en unas pocas categorías repetibles:
| Síntoma | Causa probable | Qué verificar |
|---|---|---|
| "Red incorrecta" en la billetera | La chain ID no coincide con el endpoint | Confirma la chain ID 137 y la URL de mainnet |
| Saldo vacío | Apuntando a testnet | Verifica Amoy (80002) vs mainnet (137) |
| Solicitudes lentas o limitadas | Capacidad pública compartida | Mueve las lecturas pesadas a un nodo dedicado |
eth_getLogs falla o expira | Rango de bloques amplio en endpoint compartido | Reduce el rango o usa un nodo dimensionado para consultas de logs |
| Suscripción se cae | WebSocket inactivo o inestable | Agrega lógica de reconexión y heartbeat |
| Transacción atascada | Precio de gas demasiado bajo para las condiciones actuales | Vuelve a estimar el gas y verifica el saldo de POL |
Si estás depurando un fallo específico, aíslalo: ejecuta eth_chainId, luego eth_blockNumber, luego el método que falla. Esa secuencia te dice si el problema es el endpoint, la red o tu payload de solicitud.
Eligiendo infraestructura para cargas de trabajo en Polygon
La elección correcta depende de lo que realmente hace tu aplicación. Una forma rápida de enmarcarlo:
| Carga de trabajo | Endpoint público | Nodo dedicado |
|---|---|---|
| Prototipado y scripts | Buena opción | No necesario |
| Lecturas de billetera o dApp | Generalmente bien | Útil a escala |
| Indexación de alto volumen | Riesgoso | Recomendado |
| Suscripciones WebSocket | Limitado | Recomendado |
| Consultas de archivo o trace | A menudo restringido | Recomendado |
| Tráfico en ráfaga (mints, liquidaciones) | Impredecible | Recomendado |
La página de red RPC de Polygon de OnFinality lista el endpoint y los detalles de transporte. Si estás comparando proveedores de manera más amplia, la guía de selección de proveedor de RPC cubre criterios como soporte de métodos, failover y observabilidad.
Agregando failover y monitoreo
Un solo endpoint es un único punto de falla. Para producción, ejecuta al menos dos endpoints y cambia según umbrales de error o latencia. Una sonda de salud simple puede verificar la chain ID y la frescura del bloque:
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";
}
Ejecuta esto de forma programada y redirige el tráfico lejos de los endpoints que fallen o se retrasen. Rastrea la altura del bloque a lo largo del tiempo para detectar un nodo que se está quedando atrás en lugar de fallar por completo.
Puntos clave
- Polygon Mainnet usa chain ID 137 y POL como su token de gas nativo.
- El endpoint público de OnFinality en
https://polygon.api.onfinality.io/publices adecuado para desarrollo y verificación. - Confirma que
eth_chainIddevuelva0x89antes de confiar en cualquier endpoint. - Usa transporte WebSocket para suscripciones y agrega lógica de reconexión.
- Mueve lecturas pesadas, consultas de logs y suscripciones a un nodo dedicado cuando la capacidad compartida se convierta en un cuello de botella.
- Siempre planifica failover y monitorea la frescura del bloque, no solo el uptime.
Preguntas frecuentes
¿Cuál es la URL RPC de Polygon Mainnet?
El endpoint público de Polygon de OnFinality es https://polygon.api.onfinality.io/public. Para producción, usa un endpoint dedicado desde el panel de tu proveedor.
¿Cuál es la chain ID de Polygon?
Polygon Mainnet usa chain ID 137, que es 0x89 en hexadecimal. Polygon Amoy, la testnet, usa chain ID 80002.
¿Polygon RPC admite WebSocket?
Sí. Polygon admite transporte HTTP y WebSocket. Usa WebSocket para métodos eth_subscribe como newHeads y logs.
¿Puedo usar el endpoint público en producción?
Puedes, pero la capacidad compartida es impredecible bajo carga. Para tráfico constante, ráfagas o suscripciones, un nodo dedicado es la opción más segura.
¿Cómo sé si mi endpoint está en la red incorrecta?
Llama a eth_chainId. Si no devuelve 0x89, estás conectado a una red diferente o a una testnet.
¿Dónde puedo ver los endpoints de Polygon compatibles y los precios?
Consulta la página de la red Polygon, los precios de RPC y la lista completa de redes RPC compatibles.