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

Nodo Sei y API RPC: Doble runtime EVM y Cosmos

Aprende cómo un nodo Sei expone tanto una API JSON-RPC compatible con Ethereum como una superficie Cosmos/Tendermint, y cómo verificar un endpoint Sei.

TL;DR

Sei es una L1 basada en Cosmos-SDK y CometBFT con un entorno de ejecución EVM integrado, por lo que un único nodo Sei sirve tanto una superficie JSON-RPC compatible con Ethereum (métodos eth_* más helpers específicos de Sei) como una superficie Cosmos/Tendermint (Tendermint RPC y Cosmos gRPC/REST). La altura de bloque EVM y la altura de bloque Cosmos son contadores separados, por lo que debes elegir la fuente de altura correcta al reconciliar transacciones. Este artículo explica las capas de acceso a datos, los métodos JSON-RPC clave, la configuración del nodo con el binario seid y un procedimiento reproducible de verificación de endpoints. También cubre el autoalojamiento frente a endpoints alojados, limitaciones y un manual de solución de problemas.

El modelo de doble runtime de Sei: consenso Cosmos con una EVM integrada

Sei no es una cadena puramente EVM. Es una capa 1 basada en Cosmos-SDK y Tendermint (CometBFT) que incluye un entorno de ejecución EVM integrado. Esto significa que un único nodo Sei expone dos superficies de API distintas: una superficie JSON-RPC compatible con Ethereum para interacciones EVM, y una superficie Cosmos/Tendermint para consultas de consenso y a nivel de módulo. La documentación de Sei describe la operación del nodo y el binario seid, mientras que la documentación de EVM detalla la superficie JSON-RPC.

La superficie EVM responde preguntas sobre contratos inteligentes, saldos de cuentas y transacciones EVM usando métodos estándar eth_*. La superficie Cosmos responde preguntas sobre staking, gobernanza, saldos bancarios y estado de consenso usando Tendermint RPC y Cosmos gRPC/REST. Comprender qué superficie responde a cada pregunta es esencial para construir aplicaciones fiables en Sei.

  • EVM JSON-RPC: eth_chainId, eth_blockNumber, eth_getBalance, eth_call, eth_getLogs, eth_sendRawTransaction y helpers específicos de Sei como los métodos eth_getSei...
  • Cosmos/Tendermint RPC: estado del consenso, consultas de bloques y difusión de transacciones a través del puerto de consenso del nodo.
  • Cosmos gRPC/REST: consultas a nivel de módulo para bank, staking, gobernanza y otros módulos del SDK.

Capas de acceso a datos: nodo autoalojado, proveedor alojado e indexador

Hay tres formas principales de acceder a los datos de Sei. Primero, un nodo seid autoalojado sirve la API JSON-RPC directamente, dándote control total sobre la frescura y disponibilidad de los datos. Segundo, los proveedores alojados ejecutan nodos Sei y exponen la misma API JSON-RPC, a menudo con herramientas y soporte adicionales. Tercero, los endpoints Cosmos REST/gRPC y las capas de indexador/explorador proporcionan consultas a nivel de módulo y datos agregados, como el historial de transacciones y análisis.

Un nodo simple sirve eficientemente datos recientes y de consenso, pero el estado EVM histórico profundo puede requerir un nodo de archivo. El equilibrio entre autoalojar y usar un endpoint alojado depende de tu capacidad operativa y requisitos de latencia. Para una comparación de estilos de protocolo, consulta JSON-RPC vs gRPC vs REST.

  • Autoalojado: control total, pero gestionas actualizaciones, almacenamiento y tiempo de actividad.
  • Proveedor alojado: infraestructura gestionada, a menudo con soporte de archivo y mayor disponibilidad.
  • Indexador/explorador: vistas agregadas, útiles para análisis pero no para estado en tiempo real.

Métodos JSON-RPC clave y sus valores de retorno

La superficie JSON-RPC EVM en Sei sigue la especificación JSON-RPC de Ethereum para métodos estándar. Los métodos de identidad como eth_chainId y web3_clientVersion devuelven el chain ID y la versión del cliente. Los métodos de cabeza como eth_blockNumber y eth_getBlockByNumber devuelven el último número de bloque y los detalles del bloque. Los métodos de estado de cuenta y contrato como eth_getBalance, eth_getTransactionCount y eth_getCode devuelven saldos, nonces y bytecode. eth_call ejecuta llamadas de solo lectura a contratos, eth_getLogs recupera registros de eventos para un rango de bloques, y eth_sendRawTransaction envía transacciones firmadas.

Sei también proporciona consultas de asociación estilo Cosmos, como los helpers eth_getSei..., que conectan direcciones EVM y cuentas Cosmos. Estos son específicos de Sei y están documentados en la documentación EVM de Sei.

  • eth_chainId: devuelve el chain ID de la EVM (por ejemplo, 1329 para la mainnet de Sei).
  • eth_blockNumber: devuelve el último número de bloque EVM.
  • eth_getBalance: devuelve el saldo de una dirección en un bloque dado.
  • eth_call: ejecuta una llamada de solo lectura contra un contrato.
  • eth_getLogs: devuelve registros que coinciden con un filtro para un rango de bloques.
  • eth_sendRawTransaction: envía una transacción en bruto firmada.

Altura de bloque EVM vs altura de bloque Cosmos: distinción crítica para la corrección

Sei separa la finalidad de Cosmos (finalidad BFT de CometBFT) de la producción de bloques EVM. La altura de bloque EVM y la altura de bloque Cosmos son contadores diferentes. Al reconciliar una transacción, debes elegir deliberadamente la fuente de altura correcta. Para transacciones EVM, usa el número de bloque EVM de eth_blockNumber o eth_getTransactionReceipt. Para transacciones Cosmos, usa la altura de bloque Cosmos de Tendermint RPC o Cosmos gRPC/REST.

Mezclar estas alturas puede llevar a suposiciones incorrectas sobre la finalidad de la transacción o la disponibilidad de datos. Verifica siempre qué altura devuelve una API dada y documéntalo en tu integración.

  • Altura EVM: se incrementa con cada bloque EVM, usada por los métodos eth_*.
  • Altura Cosmos: se incrementa con cada bloque CometBFT, usada por Tendermint RPC y los módulos Cosmos.
  • Reconciliación: mapea las transacciones EVM a su bloque Cosmos mediante el recibo de transacción o el indexador.

Ejecutar un nodo Sei para servir la API JSON-RPC

Para ejecutar un nodo Sei, usas el binario seid. Después de inicializar el nodo con seid init, configuras config.toml y app.toml. En app.toml, habilita el servidor JSON-RPC y la sección evm_rpc, incluido el soporte de websocket si es necesario. El nodo expone múltiples puertos: el puerto de consenso (por defecto 26656), el puerto Tendermint RPC (26657), el puerto Cosmos gRPC (9090), el puerto Cosmos REST (1317) y el puerto EVM JSON-RPC (8545) con websocket (8546).

La documentación de Sei proporciona instrucciones detalladas para la operación y configuración del nodo. Asegúrate de que tu nodo esté completamente sincronizado antes de servir solicitudes de API.

seid init my-node --chain-id sei-chain
# Edit ~/.sei/config/app.toml to enable JSON-RPC and EVM RPC
# [json-rpc]
# enabled = true
# [evm_rpc]
# enabled = true
# ws-enabled = true
seid start

Verificar un endpoint Sei: un procedimiento reproducible

Para verificar que un endpoint Sei está activo y es honesto, realiza una serie de llamadas JSON-RPC. Primero, llama a eth_chainId y confirma que coincide con el chain ID esperado de Sei (por ejemplo, 1329 para mainnet). Segundo, llama a eth_blockNumber dos veces y confirma que el número de bloque avanza. Tercero, llama a eth_getBlockByNumber en la altura reportada y confirma que el hash del bloque es consistente. Cuarto, llama a una consulta Cosmos para una cuenta conocida para confirmar que la superficie del módulo funciona. Esto detecta un endpoint que responde a la cadena incorrecta o está estancado.

Usa el siguiente script de Node.js para automatizar estas comprobaciones. Registra tus resultados en una tabla para comparar entre endpoints.

const axios = require('axios');
const endpoint = 'https://your-sei-endpoint';

async function verify() {
  const chainId = await axios.post(endpoint, { jsonrpc: '2.0', method: 'eth_chainId', params: [], id: 1 });
  console.log('Chain ID:', chainId.data.result);
  const block1 = await axios.post(endpoint, { jsonrpc: '2.0', method: 'eth_blockNumber', params: [], id: 2 });
  await new Promise(r => setTimeout(r, 2000));
  const block2 = await axios.post(endpoint, { jsonrpc: '2.0', method: 'eth_blockNumber', params: [], id: 3 });
  console.log('Block numbers:', block1.data.result, block2.data.result);
  const block = await axios.post(endpoint, { jsonrpc: '2.0', method: 'eth_getBlockByNumber', params: [block1.data.result, false], id: 4 });
  console.log('Block hash:', block.data.result.hash);
}
verify();

Tabla de resultados: medir el comportamiento del endpoint con tus propias comprobaciones

Usa la siguiente tabla para registrar tus mediciones. Rellénala con los valores que observes desde tu endpoint. Este es un método verificado por el lector; aquí no se proporcionan números de referencia.

Columnas: Comprobación, Esperado, Observado, Aprobado/Fallido. Filas: eth_chainId, eth_blockNumber (primera llamada), eth_blockNumber (segunda llamada), hash de eth_getBlockByNumber, consulta de cuenta Cosmos.

  • eth_chainId: se espera 1329 para la mainnet de Sei.
  • eth_blockNumber: la segunda llamada debe ser mayor que la primera.
  • eth_getBlockByNumber: el hash debe coincidir con el bloque en esa altura.
  • Consulta de cuenta Cosmos: debe devolver el saldo o la secuencia de la cuenta.

Autoalojamiento vs endpoint alojado: compensaciones y selección

Autoalojar un nodo Sei te da control total sobre los datos y la privacidad, pero requiere un esfuerzo operativo significativo, incluido hardware, actualizaciones y monitoreo. Un endpoint alojado, como los ofrecidos por OnFinality, proporciona infraestructura gestionada con mayor disponibilidad y, a menudo, soporte de archivo. La elección depende de la capacidad de tu equipo y de los requisitos de latencia y fiabilidad de tu aplicación.

Para obtener una lista de redes compatibles y elegir un endpoint, consulta Precios de RPC y Servicio de API. También puedes explorar guías de protocolos adyacentes como Guía de métodos EVM JSON-RPC de HyperEVM y API JSON-RPC y configuración de nodo de NEAR Protocol para comparar.

  • Autoalojado: control, pero gestionas el tiempo de actividad y las actualizaciones.
  • Alojado: gestionado, a menudo con archivo y mayor rendimiento.
  • Híbrido: usa alojado para producción y autoalojado para desarrollo.

Limitaciones y suposiciones

Este artículo asume que estás familiarizado con JSON-RPC y conceptos básicos de blockchain. No cubre todos los métodos específicos de Sei ni la superficie completa de consultas del Cosmos SDK. Los números de puerto exactos y las opciones de configuración pueden variar según la versión de Sei; consulta siempre la documentación de Sei para obtener los detalles más recientes. El procedimiento de verificación asume un nodo Sei estándar sin modificaciones personalizadas.

El comportamiento específico del proveedor, como los límites de velocidad y los métodos compatibles, varía según el proveedor. Prueba siempre contra el endpoint que elijas.

  • No todos los métodos eth_* pueden ser compatibles con todos los proveedores.
  • Se requieren nodos de archivo para el estado EVM histórico.
  • Los endpoints Cosmos gRPC/REST pueden estar deshabilitados por defecto.

Manual de solución de problemas para endpoints Sei

Los problemas comunes incluyen chain ID incorrecto, discrepancia entre altura EVM y Cosmos, rango vacío en getLogs y caídas de websocket. Para un chain ID incorrecto, verifica el eth_chainId del endpoint contra el chain ID esperado de Sei. Para una discrepancia de altura, asegúrate de usar la fuente de altura correcta para tu consulta. Para getLogs vacío, comprueba que el rango de bloques sea válido y que el contrato haya emitido eventos. Para caídas de websocket, implementa lógica de reconexión y monitorea la salud de la conexión.

Si el endpoint está estancado, compara los números de bloque a lo largo del tiempo. Si la superficie Cosmos falla, verifica que los puertos gRPC/REST estén habilitados y sean accesibles.

  • Chain ID incorrecto: el endpoint puede estar apuntando a una red diferente.
  • Discrepancia de altura: usa la altura EVM para consultas EVM, la altura Cosmos para consultas Cosmos.
  • getLogs vacío: verifica el rango de bloques y los eventos del contrato.
  • Caídas de websocket: añade latido y lógica de reconexión.

Próximos pasos: integrar Sei en tu stack

Después de verificar tu endpoint Sei, intégralo en tu aplicación usando bibliotecas estándar de Ethereum como ethers.js o web3.js para interacciones EVM, y clientes del Cosmos SDK para consultas de módulos. Para métodos de identidad, consulta Métodos de identidad de nodo Ethereum: chainId y clientVersion. Para una visión más amplia de las redes, visita el centro de aprendizaje de OnFinality y explora Optimism como ejemplo de otra red compatible con EVM.

Considera usar un proveedor alojado para cargas de trabajo en producción para garantizar la fiabilidad y el acceso al archivo. Monitorea siempre la salud de tu endpoint y la progresión de la altura de bloque.

  • Usa ethers.js para llamadas JSON-RPC EVM.
  • Usa CosmJS para consultas Cosmos gRPC/REST.
  • Monitorea regularmente la altura de bloque y el chain ID.

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