Logo
Nuevos usuarios de RPC: 35% de descuento el primer mesVer oferta
OnFinality Learn
Guías de redes y protocolos12 min de lectura

Cadena Optimism: arquitectura, acceso RPC y flujo de verificación

Una guía práctica sobre la cadena Optimism que cubre su arquitectura de rollup, los componentes de OP Stack, la conectividad RPC y métodos de verificación reproducibles.

TL;DR

La cadena Optimism es un rollup optimista de Capa 2 de Ethereum que ejecuta transacciones fuera de la red principal de Ethereum mientras publica datos comprimidos de vuelta en ella para su seguridad. Esta guía explica la arquitectura de OP Stack, cómo conectarse a la cadena mediante JSON-RPC y cómo verificar que se está en la red correcta utilizando comandos de diagnóstico reproducibles. Cubre problemas comunes de conectividad y configuración, las ventajas y desventajas del diseño de rollup optimista, y los próximos pasos para desarrolladores que construyen sobre la cadena Optimism o que operan infraestructura para ella.

Qué es la cadena Optimism y qué cubre esta guía

La cadena Optimism, a menudo denominada OP Mainnet, es una Capa 2 de Ethereum construida sobre tecnología de rollup optimista. Ejecuta transacciones en su propia cadena pero obtiene seguridad de Ethereum al publicar datos de transacciones y compromisos de estado en la red principal de Ethereum. Los usuarios obtienen tarifas más bajas y confirmaciones más rápidas que en la Capa 1 de Ethereum, mientras que los desarrolladores obtienen un entorno equivalente a la EVM donde los contratos Solidity existentes generalmente se despliegan sin modificaciones.

Esta guía está escrita para desarrolladores y operadores de infraestructura que necesitan comprender cómo funciona la cadena y cómo conectarse a ella de manera confiable. Cubre el modelo de componentes de OP Stack, la conectividad JSON-RPC, la verificación de identidad de la cadena, la solución de problemas y las ventajas y desventajas inherentes al diseño de rollup optimista. La selección concreta de un endpoint es un tema aparte; si necesita una recomendación de proveedor, consulte la descripción general de proveedores RPC de Optimism.

El ecosistema Optimism también incluye muchas cadenas separadas construidas sobre el mismo software OP Stack, a veces llamadas miembros de Superchain. Cada una tiene su propio ID de cadena, secuenciador y endpoint RPC. A lo largo de esta guía, "la cadena Optimism" se refiere a OP Mainnet a menos que se indique lo contrario, pero los métodos de diagnóstico se aplican a cualquier cadena OP Stack una vez que se sustituye el ID de cadena y el endpoint correctos.

  • OP Mainnet es un rollup optimista equivalente a la EVM asegurado por Ethereum.
  • OP Stack es software de código abierto utilizado por muchas cadenas además de OP Mainnet.
  • Cada cadena OP Stack tiene un ID de cadena y un endpoint RPC distintos.

Requisitos previos y suposiciones

Los procedimientos a continuación asumen que tiene una terminal con curl instalado, opcionalmente Node.js 18+ o Python 3.9+ para los ejemplos con scripts, y acceso a un endpoint HTTP JSON-RPC para la cadena Optimism. Los valores de marcador de posición como RPC_URL deben reemplazarse con un endpoint funcional de su proveedor. No necesita una cuenta con fondos para ejecutar diagnósticos de solo lectura; una clave privada solo es necesaria si tiene la intención de enviar transacciones, y nunca debe confirmarse en el control de versiones.

Si está evaluando proveedores antes de ejecutar estas comprobaciones, la guía de endpoints RPC explica qué buscar en cuanto a confiabilidad y límites de velocidad de los endpoints. Para cargas de trabajo en producción, la infraestructura dedicada suele ser preferible a los endpoints públicos compartidos; consulte opciones de nodos dedicados para ese modelo.

Cómo los rollups optimistas ejecutan y liquidan transacciones

Un rollup optimista separa la ejecución de la liquidación. En la cadena Optimism, un secuenciador ordena las transacciones entrantes y produce bloques de Capa 2. Estos bloques son ejecutados por el cliente de ejecución del rollup, y los datos de transacción resultantes se agrupan y se publican en Ethereum como calldata o blobs. Dado que los datos necesarios para reconstruir el estado de Capa 2 están disponibles en Ethereum, cualquiera puede verificar el historial de la cadena.

La palabra "optimista" se refiere al modelo de prueba de fraude. Los compromisos de estado publicados en Ethereum se asumen correctos a menos que se impugnen durante una ventana de disputa. Si se publica una transición de estado inválida, un verificador puede presentar una prueba de fraude y el compromiso inválido se revierte. Esto difiere de los rollups de conocimiento cero, que envían pruebas criptográficas de validez con cada lote. La consecuencia práctica es que los retiros de la cadena Optimism a Ethereum generalmente esperan un período de desafío, mientras que los depósitos desde Ethereum son mucho más rápidos.

OP Stack descompone este sistema en servicios distintos: un secuenciador, un batcher que envía datos de transacciones a la Capa 1, un proposer que envía raíces de estado y un challenger que monitorea y disputa propuestas inválidas. Los sistemas de prueba de fraude han evolucionado con el tiempo, y el mecanismo exacto activo en una cadena determinada depende de su configuración y historial de actualizaciones. Consulte la documentación oficial de la cadena para conocer el sistema de prueba actual en lugar de asumir un diseño específico.

  • La ejecución ocurre en Capa 2; la disponibilidad de datos y la liquidación se anclan a Ethereum.
  • Las pruebas de fraude protegen los compromisos de estado después de una ventana de desafío.
  • Los depósitos de Capa 1 a Capa 2 son rápidos; los retiros de Capa 2 a Capa 1 esperan el período de desafío.

Conexión a la cadena Optimism mediante JSON-RPC

La cadena Optimism expone una interfaz JSON-RPC estándar de Ethereum. La mayoría de las herramientas de Ethereum funcionan sin cambios una vez que se apuntan a un endpoint de Optimism y se utiliza el ID de cadena correcto. El primer paso en cualquier integración es confirmar que el endpoint que está utilizando realmente sirve a la cadena que espera.

El siguiente comando curl recupera el ID de cadena. Un endpoint de OP Mainnet configurado correctamente devuelve un valor hexadecimal correspondiente al ID de cadena 10, que es 0xa en hexadecimal. Si recibe un valor diferente, está conectado a una cadena OP Stack diferente o a una red completamente distinta.

curl -s -X POST "$RPC_URL" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'

Verificación de la identidad de la cadena y el progreso de bloques

El ID de cadena por sí solo es una comprobación débil porque puede ser falsificado por un proxy mal configurado. Una verificación más sólida combina varias llamadas RPC y compara sus resultados con fuentes independientes, como un explorador de bloques. El procedimiento a continuación verifica el ID de cadena, el número de bloque más reciente y la marca de tiempo y el hash del último bloque. Ejecute cada llamada dos veces con unos segundos de diferencia para confirmar que el número de bloque está avanzando.

Registre los resultados en una tabla como la siguiente. No complete los valores esperados de memoria; obténgalos del explorador oficial o la documentación de la cadena en el momento de la prueba. El propósito de la tabla es hacer que su verificación sea reproducible y auditable.

  • | Comprobación | Método RPC | Resultado esperado | Resultado observado |
  • | Identidad de la cadena | eth_chainId | Coincide con el ID documentado de la cadena | Registrar valor hexadecimal |
  • | Vitalidad | eth_blockNumber | Aumenta entre llamadas | Registrar ambos valores |
  • | Metadatos del bloque | eth_getBlockByNumber("latest", false) | Marca de tiempo reciente; hash distinto de cero | Registrar marca de tiempo y hash |
  • | Verificación cruzada con explorador | Manual | El hash del bloque coincide con el explorador | Registrar URL del explorador y hash |
const RPC_URL = process.env.RPC_URL;

async function rpc(method, params = []) {
  const res = await fetch(RPC_URL, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ jsonrpc: "2.0", id: 1, method, params })
  });
  const json = await res.json();
  if (json.error) throw new Error(`${method}: ${json.error.message}`);
  return json.result;
}

(async () => {
  const chainId = await rpc("eth_chainId");
  const blockA = await rpc("eth_blockNumber");
  await new Promise(r => setTimeout(r, 5000));
  const blockB = await rpc("eth_blockNumber");
  const latest = await rpc("eth_getBlockByNumber", ["latest", false]);

  console.log("chainId:", chainId);
  console.log("block A:", parseInt(blockA, 16));
  console.log("block B:", parseInt(blockB, 16));
  console.log("advancing:", parseInt(blockB, 16) > parseInt(blockA, 16));
  console.log("latest timestamp:", new Date(parseInt(latest.timestamp, 16) * 1000).toISOString());
  console.log("latest hash:", latest.hash);
})();

Interpretación de los resultados de la verificación

Un endpoint de Optimism saludable devuelve un ID de cadena que coincide con la red que pretendía, un número de bloque que aumenta entre llamadas y un último bloque cuya marca de tiempo está dentro de unos segundos del tiempo real. El hash del bloque debe coincidir con lo que muestra un explorador público para la misma altura de bloque. Si las cuatro comprobaciones pasan, su endpoint está sirviendo la cadena correcta y está razonablemente actualizado.

Si el número de bloque no avanza, el endpoint puede estar retrasado, limitado en velocidad o apuntando a un nodo obsoleto. Si el ID de cadena es correcto pero el hash del bloque no coincide con el explorador, es posible que esté conectado a una bifurcación o a una testnet que comparte el ID de cadena por una mala configuración. Si la marca de tiempo es muy antigua, es probable que el nodo esté sincronizando o degradado. Estas distinciones importan porque cada modo de fallo tiene un remedio diferente.

Solución de problemas comunes de RPC en Optimism

La mayoría de los fallos de integración en la cadena Optimism se engloban en un pequeño número de categorías. La siguiente tabla relaciona los síntomas con las causas probables y los primeros pasos de diagnóstico. Procéselos en orden; una discrepancia en el ID de cadena provocará errores posteriores engañosos, así que verifique la identidad antes de depurar la lógica de la aplicación.

  • | Síntoma | Causa probable | Primer paso |
  • | eth_chainId devuelve un valor inesperado | Endpoint o proxy incorrecto | Confirmar URL y configuración de red del proveedor |
  • | Errores 429 o de límite de velocidad | Cuota de endpoint compartido excedida | Reducir la tasa de solicitudes o pasar a un plan dedicado |
  • | eth_call se revierte inesperadamente | Contrato no desplegado en esa dirección en esta cadena | Verificar la dirección en el explorador de la cadena |
  • | Transacción atascada como pendiente | Precio de gas demasiado bajo o brecha de nonce | Verificar eth_getTransactionByHash y el nonce pendiente |
  • | Número de bloque congelado | Nodo sincronizando o en mal estado | Reintentar contra un segundo endpoint |
  • | Retiro no llega a Capa 1 | Período de desafío no transcurrido | Consultar el tiempo de espera documentado del puente |

Envío de una transacción y confirmación de inclusión

Las comprobaciones de solo lectura confirman la conectividad, pero una prueba de integración completa también debe enviar una transacción y confirmar que se incluye en un bloque. El ejemplo de Python a continuación firma y envía una transferencia de valor usando web3.py. Reemplace PRIVATE_KEY y RPC_URL con sus propios valores, y use una clave de prueba con fondos mínimos. Nunca use una clave de producción para transacciones de diagnóstico.

Después del envío, el script espera un recibo e imprime el número de bloque y el estado. Un estado de 1 indica éxito. Si el recibo nunca llega, verifique el hash de la transacción en un explorador e inspeccione el nonce pendiente para descartar una brecha de nonce.

import os
from web3 import Web3

w3 = Web3(Web3.HTTPProvider(os.environ["RPC_URL"]))
account = w3.eth.account.from_key(os.environ["PRIVATE_KEY"])

print("connected:", w3.is_connected())
print("chain id:", w3.eth.chain_id)
print("nonce:", w3.eth.get_transaction_count(account.address))

tx = {
    "to": account.address,
    "value": w3.to_wei(0, "ether"),
    "gas": 21000,
    "maxFeePerGas": w3.to_wei(0.001, "gwei"),
    "maxPriorityFeePerGas": w3.to_wei(0.0001, "gwei"),
    "nonce": w3.eth.get_transaction_count(account.address),
    "chainId": w3.eth.chain_id,
}

signed = account.sign_transaction(tx)
tx_hash = w3.eth.send_raw_transaction(signed.raw_transaction)
print("sent:", tx_hash.hex())

receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=120)
print("block:", receipt.blockNumber, "status:", receipt.status)

Limitaciones y compensaciones del modelo de rollup optimista

La cadena Optimism hereda el modelo de seguridad de Ethereum para la disponibilidad de datos y la liquidación, pero no hereda automáticamente las propiedades de descentralización de Ethereum. La secuenciación actualmente está operada por un secuenciador centralizado, lo que significa que el orden de las transacciones está controlado por ese operador. Esta es una compensación deliberada por rendimiento y es común en los rollups; la hoja de ruta y el proceso de gobernanza determinan cómo y cuándo cambia esto.

Los retiros a Ethereum están sujetos a un período de desafío, que normalmente se mide en días. Las aplicaciones que necesitan movimiento rápido entre cadenas a menudo utilizan puentes de terceros, que introducen sus propias suposiciones de confianza. Las pruebas de fraude también requieren verificadores activos; si ninguna parte honesta está vigilando, el estado inválido podría persistir. Estas son propiedades estructurales de los rollups optimistas, no errores, y deben informar cómo diseña aplicaciones que dependen del tiempo de retiro o de la seguridad de los puentes.

Finalmente, OP Stack es software compartido, no una única red. Las cadenas construidas sobre él pueden tener diferentes configuraciones de seguridad, operadores de secuenciador y calendarios de actualización. Al integrar, verifique los parámetros de la cadena específica en lugar de asumir que el comportamiento de OP Mainnet se aplica en todas partes. El directorio de redes es un punto de partida útil para identificar las cadenas compatibles y sus identificadores.

Próximos pasos para construir sobre la cadena Optimism u operarla

Una vez que su endpoint pase las comprobaciones de verificación, el siguiente paso depende de su rol. Los desarrolladores de aplicaciones deben probar el despliegue e interacción de contratos contra la cadena, confirmar el comportamiento de estimación de gas y validar la indexación de eventos. Los operadores de infraestructura deben monitorear la altura de bloque, el número de pares y el uso de disco, y deben planificar el crecimiento de almacenamiento que los nodos de rollup acumulan con el tiempo.

Para cargas de trabajo en producción, evalúe si los endpoints compartidos cumplen con sus requisitos de latencia y límites de velocidad o si se justifican nodos dedicados. El precio de los servicios RPC generalmente se basa en el volumen de solicitudes y el rendimiento; consulte la página de precios de RPC para el modelo de costos. Si está comparando proveedores, la descripción general del servicio API describe la oferta gestionada, y la guía de proveedores RPC de Optimism cubre los criterios de selección con más profundidad.

Cualquiera que sea el camino que elija, mantenga el procedimiento de verificación de esta guía en su runbook. Volver a ejecutar las comprobaciones de ID de cadena, progreso de bloques y hash de bloque después de cualquier cambio de endpoint detecta errores de configuración antes de que lleguen a los usuarios.

Nunca te preocupes por la infraestructura nuevamente

OnFinality elimina la carga pesada de DevOps para que puedas construir de forma más inteligente y rápida.

Comenzar