Resumen
Un RPC público de ETH es un endpoint JSON-RPC compartido y sin autenticación que permite a cualquier desarrollador leer datos de Ethereum y transmitir transacciones sin ejecutar un nodo. Es ideal para prototipos, configuración de billeteras y scripts de bajo volumen, pero la capacidad compartida y los límites de velocidad lo hacen poco adecuado para cargas de trabajo en producción que necesitan rendimiento constante, datos de archivo o suscripciones WebSocket.
Esta página explica cómo conectarse a un RPC público de Ethereum, cómo verificar que funciona y las señales exactas que indican que es momento de pasar a un endpoint gestionado o dedicado. También cubre la configuración de la cadena, los modos de fallo comunes y una ruta de migración práctica a OnFinality RPC cuando tu aplicación supera el nivel público.
Cuándo un RPC público de ETH es el punto de partida adecuado
Un RPC público es la forma más rápida de hacer que una aplicación de Ethereum se comunique con la cadena. Pegas una URL en tu billetera, script o configuración de framework, y puedes leer saldos, obtener bloques y enviar transacciones sin aprovisionar nada. Para un prototipo de hackathon, un script puntual o una billetera que estás configurando por primera vez, esa es exactamente la compensación correcta.
La decisión de permanecer en un endpoint público es en realidad una pregunta sobre la forma de la carga de trabajo. Si tus solicitudes son ocasionales, tolerantes a reintentos y nunca dependen de suscripciones, un RPC público compartido puede llevarte muy lejos. Si tu aplicación sirve a usuarios reales, indexa historial o escucha eventos, el nivel compartido se convertirá en el cuello de botella.
Usa esta guía rápida para decidir dónde estás hoy:
| Tu situación | Idoneidad del RPC público | Qué hacer a continuación |
|---|---|---|
| Aprender JSON-RPC, probar una billetera | Buena | Usa un endpoint público, mantén bajo el volumen de solicitudes |
| Scripts locales, pruebas de humo en CI | Aceptable | Agrega reintentos y una URL de respaldo |
| dApp con usuarios en vivo | Mala | Pasa a un plan de RPC gestionado |
| Indexador, analítica o consultas de archivo | Mala | Usa un endpoint con capacidad de archivo |
| Bots, escuchadores de eventos, suscripciones WebSocket | Mala | Usa un nodo dedicado o gestionado con WS |
Si estás en las tres últimas filas, el resto de esta página explica la migración. Si estás en las dos primeras, sigue leyendo para obtener los detalles del endpoint y los pasos de depuración.
Configuración de la cadena Ethereum de un vistazo
Antes de depurar cualquier cosa, confirma que estás apuntando a la red correcta. Ethereum mainnet y Sepolia comparten el mismo conjunto de métodos JSON-RPC pero tienen diferentes chain IDs, y confundirlos es una de las causas más comunes de errores de "red incorrecta".
| Configuración | Ethereum mainnet | Ethereum Sepolia |
|---|---|---|
| Chain ID | 1 | 11155111 |
| Nombre de la cadena | Ethereum Mainnet | Ethereum Sepolia |
| Moneda nativa | ETH (18 decimales) | Sepolia Ether (18 decimales) |
| Explorador de bloques | https://etherscan.io | https://sepolia.etherscan.io |
| RPC público de OnFinality | https://eth.api.onfinality.io/public | https://eth-sepolia.api.onfinality.io/public |
| Transporte | HTTP, WebSocket | HTTP, WebSocket |
OnFinality expone endpoints públicos para ambas redes, por lo que puedes desarrollar contra Sepolia y cambiar a mainnet cambiando una sola URL y el chain ID. Para detalles específicos de la red, consulta la página de la red Ethereum Sepolia y la lista completa de redes RPC compatibles.
Conectar una billetera o framework
La mayoría de las billeteras y bibliotecas aceptan una URL de RPC personalizada más un chain ID. Una configuración mínima de red de billetera se ve así:
{
"chainId": "0x1",
"chainName": "Ethereum Mainnet",
"nativeCurrency": { "name": "Ether", "symbol": "ETH", "decimals": 18 },
"rpcUrls": ["https://eth.api.onfinality.io/public"],
"blockExplorerUrls": ["https://etherscan.io"]
}
Para Sepolia, cambia chainId a 0xaa36a7 (11155111 en decimal) y cambia la URL de RPC al endpoint de Sepolia. En JavaScript, la misma configuración funciona con ethers o viem:
import { createPublicClient, http } from 'viem';
import { mainnet } from 'viem/chains';
const client = createPublicClient({
chain: mainnet,
transport: http('https://eth.api.onfinality.io/public')
});
const blockNumber = await client.getBlockNumber();
console.log('Latest block:', blockNumber);
Si prefieres JSON-RPC sin procesar, una sola llamada curl confirma que el endpoint es accesible y devuelve la cadena que esperas:
curl -s https://eth.api.onfinality.io/public \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
La respuesta debería ser {"jsonrpc":"2.0","id":1,"result":"0x1"}. Si obtienes un chain ID diferente, estás en la red incorrecta. Si obtienes un resultado vacío o un error HTTP, el endpoint no es accesible o tiene límite de velocidad.
Ruta de depuración: qué significa realmente cada fallo
Los endpoints públicos fallan de unas pocas formas predecibles. Relaciona el síntoma con la causa antes de cambiar nada.
| Síntoma | Causa probable | Solución |
|---|---|---|
429 Too Many Requests | Límite de velocidad compartido excedido | Retrocede, agrupa solicitudes o pasa a un plan gestionado |
-32005 o "limit exceeded" | Cuota por método o por IP | Reduce la frecuencia de sondeo, almacena en caché los resultados |
result vacío para bloques antiguos | Sin datos de archivo en el nivel compartido | Usa un endpoint con capacidad de archivo |
| Desconexiones de WebSocket | Tiempo de espera inactivo o límites de conexión compartidos | Reconéctate con retroceso o usa un nodo dedicado |
Tiempos de espera de eth_getLogs | Rangos de bloques amplios en capacidad compartida | Reduce el rango o pagina |
| Chain ID incorrecto | Desajuste entre mainnet y Sepolia | Corrige la URL y el chain ID |
Un hábito útil es registrar el estado HTTP y el código de error JSON-RPC juntos. Un 429 es una señal de capacidad, mientras que un -32601 (método no encontrado) es una señal de capacidad funcional. Apuntan a soluciones diferentes.
Dónde dejan de escalar los endpoints públicos
Los RPC públicos compartidos están diseñados para acceso amplio y de baja intensidad. Tres patrones de carga de trabajo rompen ese modelo rápidamente:
- Sondeo de alta frecuencia. Las billeteras y paneles que sondean
eth_blockNumberoeth_getBalancecada segundo alcanzarán los límites compartidos rápidamente. En su lugar, agrupa o almacena en caché. - Consultas históricas y de archivo. Leer el estado en un bloque antiguo requiere un nodo de archivo. La mayoría de los endpoints públicos solo sirven estado reciente.
- Aplicaciones basadas en eventos. Las suscripciones WebSocket (
eth_subscribe) necesitan una conexión estable y de larga duración. Los endpoints compartidos a menudo limitan los sockets concurrentes o descartan los inactivos.
Si alguno de estos describe tu aplicación, el nivel público es una herramienta de prototipado, no una dependencia de producción. La siguiente sección cubre qué evaluar cuando migres.
Evaluar un RPC de ETH gestionado o dedicado
Cuando superas el endpoint público, estás eligiendo entre un plan de RPC gestionado y un nodo dedicado. Ambos eliminan el problema de capacidad compartida; difieren en control, modelo de costos y carga operativa.
| Opción de proveedor | Ideal para | Archivo / trace | WebSocket | Carga operativa |
|---|---|---|---|---|
| API RPC de OnFinality | Equipos que quieren endpoints Ethereum gestionados con capacidad predecible | Disponible bajo solicitud | Compatible | Baja — gestionado para ti |
| Nodos dedicados de OnFinality | Cargas de trabajo de alto volumen o sensibles al cumplimiento que necesitan capacidad aislada | Configurable | Compatible | Baja — OnFinality opera el nodo |
| Nodo autoalojado | Equipos con estrictos requisitos de residencia de datos o bifurcaciones personalizadas | Control total | Control total | Alta — tú lo ejecutas y actualizas |
| Otros proveedores compartidos | Aplicaciones de bajo costo y bajo volumen | Varía | A menudo limitado | Baja |
OnFinality aparece primero porque es la opción que opera este sitio: endpoints RPC gestionados más infraestructura de nodos dedicados para equipos que necesitan capacidad aislada. Compara planes en la página de precios de RPC, o revisa nodos dedicados si necesitas un nodo privado en lugar de un endpoint compartido.
Cuando evalúes cualquier proveedor, haz cuatro preguntas:
- Modelo de capacidad: ¿El rendimiento es compartido o reservado? ¿Qué sucede durante un pico de tráfico?
- Cobertura de métodos: ¿Están disponibles los métodos
debug_ytrace_, y se incluyen los datos de archivo? - Transporte: ¿Se admite WebSocket para suscripciones, y cómo se manejan las conexiones inactivas?
- Conmutación por error: ¿Puedes configurar un endpoint secundario, y cómo detectas un primario degradado?
Estas preguntas importan más que los números de latencia destacados, porque determinan si tu aplicación se mantiene en pie bajo carga.
Puntos de control de migración
Pasar de un endpoint público a uno gestionado es principalmente un cambio de configuración, pero algunos puntos de control evitan sorpresas:
- Inventario de tus métodos. Enumera cada método JSON-RPC que llama tu aplicación, incluidos
eth_getLogs,eth_cally cualquier uso dedebug_otrace_. Confirma que el nuevo endpoint los admite todos. - Separa las rutas de lectura y escritura. Las lecturas a menudo pueden usar un endpoint compartido; las escrituras y suscripciones se benefician de una conexión dedicada.
- Agrega un respaldo. Configura una URL de RPC secundaria para que el fallo de un solo endpoint no derribe tu aplicación.
- Vuelve a probar primero en Sepolia. Valida el nuevo endpoint contra Sepolia antes de cambiar el tráfico de mainnet.
- Monitorea después del cambio. Rastrea tasas de error, conteos de
429y reconexiones de WebSocket durante los primeros días.
Una sonda de monitoreo simple te mantiene honesto:
async function probe(url) {
const start = Date.now();
const res = await fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'eth_blockNumber', params: [] })
});
return { ok: res.ok, status: res.status, ms: Date.now() - start };
}
Ejecuta esto contra tus endpoints primario y de respaldo de forma programada, y alerta cuando cualquiera se degrade.
Puntos clave
- Un RPC público de ETH es un endpoint compartido y sin autenticación — excelente para prototipos, débil para producción.
- Confirma siempre el chain ID:
0x1para mainnet,0xaa36a7para Sepolia. - Los errores
429significan capacidad; los resultados de archivo vacíos significan historial faltante; las caídas de WebSocket significan límites de conexión. - Pasa a un endpoint gestionado o dedicado cuando sondees con frecuencia, necesites datos de archivo o dependas de suscripciones.
- Evalúa a los proveedores por modelo de capacidad, cobertura de métodos, transporte y conmutación por error — no solo por latencia.
- OnFinality ofrece RPC de Ethereum gestionado y nodos dedicados; consulta precios de RPC y redes compatibles.
Preguntas frecuentes
¿Es seguro usar un RPC público de ETH en producción?
Puede funcionar para tráfico de solo lectura y bajo volumen con reintentos y un respaldo. Para aplicaciones orientadas al usuario, sondeo de alta frecuencia, consultas de archivo o suscripciones WebSocket, un endpoint gestionado o dedicado es la opción más confiable.
¿Cuál es el chain ID de Ethereum mainnet y Sepolia?
Ethereum mainnet usa el chain ID 1 (0x1). Sepolia usa el chain ID 11155111 (0xaa36a7). Establecer el incorrecto es una causa común de errores de "red incorrecta".
¿Por qué mi RPC público devuelve resultados vacíos para bloques antiguos?
La mayoría de los endpoints públicos solo sirven estado reciente. Leer estado histórico requiere un nodo de archivo, que normalmente está disponible en planes gestionados o dedicados.
¿Puedo usar suscripciones WebSocket en un RPC público?
Algunos endpoints públicos exponen WebSocket, pero los límites de conexión compartidos y los tiempos de espera inactivos los hacen poco confiables para suscripciones de larga duración. Usa un endpoint gestionado o dedicado para aplicaciones basadas en eventos.
¿Cómo cambio de un RPC público a OnFinality?
Cambia tu URL de RPC y chain ID en la configuración de tu billetera o framework, confirma la cobertura de métodos, agrega un endpoint de respaldo y prueba en Sepolia antes de mover el tráfico de mainnet. Consulta precios de RPC para detalles del plan.