Logo
Nuevos usuarios de RPC: 35% de descuento el primer mesVer oferta
OnFinality Learn
Infraestructura y Operaciones10 min de lectura

Nodos de Alchemy: Arquitectura, Operaciones y Cómo Evaluar el Acceso a Nodos

Una guía técnica sobre cómo funciona la capa de nodos de Alchemy, cómo conectarse y verificarla, y cómo medir si el acceso a nodos gestionados se adapta a tu carga de trabajo.

TL;DR

Los nodos de Alchemy son nodos blockchain gestionados expuestos a través de endpoints RPC HTTP y WebSocket, envueltos en una capa de enrutamiento y almacenamiento en caché que Alchemy comercializa como Supernode. No operas el proceso del nodo; operas el cliente, la clave API y los patrones de solicitud que llegan al endpoint. Este artículo explica el modelo mental, muestra código ejecutable de conexión y verificación, y ofrece un método reproducible para medir latencia, tasas de error y consistencia para que puedas decidir si el acceso a nodos gestionados se adapta a tu carga de trabajo. La selección concreta de proveedor se deja a RPC Assistant; el enfoque aquí es cómo razonar y probar la capa de nodos que utilizas.

Qué son realmente los nodos de Alchemy

Cuando los desarrolladores dicen "nodos de Alchemy", normalmente se refieren a los endpoints RPC que Alchemy expone para una cadena determinada, no a una máquina virtual a la que acceden por SSH. Alchemy ejecuta el software de nodo subyacente, lo mantiene sincronizado y lo presenta con una capa de enrutamiento que gestiona el balanceo de carga, el almacenamiento en caché y la conmutación por error. Tu aplicación envía solicitudes JSON-RPC a una URL HTTPS o WSS que incluye tu clave API, y Alchemy devuelve la respuesta.

Este es un modelo de nodo gestionado, no autoalojado. Tú controlas el cliente, la clave, el volumen de solicitudes y la mezcla de métodos. No controlas el binario del nodo, el estado de sincronización, el conjunto de pares ni el calendario de actualizaciones. Ese intercambio es el núcleo de la decisión: cambias control operativo por una menor carga operativa.

Alchemy también superpone productos de nivel superior sobre el acceso básico a nodos, como API de datos mejoradas, webhooks y herramientas de abstracción de cuentas. Estos son independientes de la capa de nodos. Este artículo se centra en la capa de nodos/RPC porque es de lo que realmente tratan la mayoría de las búsquedas de "nodos de Alchemy".

  • Nodo gestionado: Alchemy ejecuta y sincroniza el software del nodo.
  • Superficie RPC: HTTP POST para solicitud/respuesta, WebSocket para suscripciones.
  • Endpoints con clave: la URL incorpora una clave API que identifica tu proyecto.
  • Capa de enrutamiento: las solicitudes pueden ser atendidas por diferentes nodos backend, lo que importa para las pruebas de consistencia.

Supuestos y requisitos previos

Esta guía asume que tienes una cuenta de Alchemy, un proyecto creado para una cadena específica y una clave API. También asume que puedes ejecutar curl y Node.js o Python localmente. Debes conocer el método JSON-RPC que pretendes llamar, porque el endpoint de Alchemy acepta métodos estándar y algunos mejorados.

Si aún no has elegido un proveedor, o estás comparando opciones de nodos gestionados entre cadenas, comienza con la guía de RPC Assistant sobre cómo elegir un proveedor RPC para proyectos Web3 y la guía más amplia de endpoints RPC. Esas páginas abordan la cuestión de la selección de endpoints; esta página aborda la cuestión operativa y de medición.

  • Un proyecto de Alchemy limitado a una cadena (por ejemplo, Ethereum mainnet).
  • Una clave API con permiso para los métodos que planeas llamar.
  • curl junto con Node.js 18+ o Python 3.10+ para los scripts de verificación.
  • Un lugar para almacenar la clave fuera del control de código fuente, como una variable de entorno.

Modelo mental: ruta de la solicitud a través de un nodo gestionado

Una solicitud a un nodo de Alchemy atraviesa varias capas. Tu cliente construye una carga útil JSON-RPC y la envía al endpoint HTTPS. El borde de Alchemy termina TLS, autentica la clave y enruta la solicitud a un nodo backend que está sincronizado con la etiqueta de bloque solicitada. La respuesta regresa por la misma ruta.

Se derivan dos consecuencias. Primero, como las solicitudes pueden ser atendidas por diferentes nodos backend, una lectura en latest puede llegar a un nodo que está uno o dos bloques por detrás de otro. Segundo, como el almacenamiento en caché puede servir lecturas repetidas, un acierto de caché puede ser más rápido que un fallo de caché y puede devolver un resultado ligeramente más antiguo. Ninguna de las dos cosas es un error; ambas son propiedades de una capa gestionada distribuida que deberías medir en lugar de asumir.

Para las escrituras, el panorama es diferente. El envío de una transacción se difunde a la red, y la respuesta que recibes es un acuse de recibo, no una confirmación. La confirmación requiere sondear un recibo o suscribirse a registros. Trata la capa de nodos como un transporte para tu transacción, no como una fuente de finalidad.

  • Lecturas: enrutadas, posiblemente en caché, posiblemente servidas por un backend ligeramente retrasado.
  • Escrituras: difundidas y reconocidas, confirmadas más tarde mediante recibo o suscripción.
  • Suscripciones: conexiones WebSocket que pueden reequilibrarse; maneja las reconexiones.
  • Etiquetas de bloque: latest es la más variable; los números de bloque fijados son más reproducibles.

Conexión y verificación con curl

La forma más rápida de confirmar que tu endpoint de nodo de Alchemy funciona es una única llamada JSON-RPC. Reemplaza RPC_URL con tu URL HTTPS completa de Alchemy, incluido el segmento de ruta de la clave API. No confirmes la URL real en un repositorio.

Una respuesta exitosa devuelve un objeto JSON con jsonrpc, id y result. Si ves un objeto de error en su lugar, el problema suele ser la clave, la cadena o el método, no la red.

  • Resultado esperado: un número de bloque hexadecimal como "0x...".
  • Si obtienes 401 o un error de autenticación, la clave es incorrecta o carece de permiso.
  • Si obtienes -32601, el método no es compatible con esa cadena o plan.
export RPC_URL="https://<your-chain>.g.alchemy.com/v2/<your-api-key>"

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

Script de verificación ejecutable en Node.js

Una sola llamada demuestra conectividad. Un pequeño script demuestra consistencia. El script siguiente muestrea eth_blockNumber y eth_getBlockByNumber varias veces, registra la altura de bloque observada y el tiempo hasta el primer byte, e imprime un resumen. No asume ninguna latencia particular; informa lo que ve.

Ejecútalo contra tu endpoint y conserva la salida. Esa salida es la línea base con la que compararás más adelante, y contra cualquier proveedor de nodos alternativo que evalúes.

  • Resultado esperado: una tabla de muestras y una pequeña dispersión entre la altura mínima y máxima.
  • Una gran dispersión entre muestras sugiere enrutamiento a backends en diferentes puntos de sincronización.
  • Una columna ms alta y variable sugiere latencia de red o de borde que vale la pena investigar.
const RPC_URL = process.env.RPC_URL;
const SAMPLES = 10;

async function call(method, params) {
  const start = performance.now();
  const res = await fetch(RPC_URL, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ jsonrpc: '2.0', id: 1, method, params })
  });
  const ms = performance.now() - start;
  const body = await res.json();
  return { ms, status: res.status, body };
}

(async () => {
  const rows = [];
  for (let i = 0; i < SAMPLES; i++) {
    const r = await call('eth_blockNumber', []);
    rows.push({ i, ms: Math.round(r.ms), status: r.status, block: r.body.result });
  }
  console.table(rows);
  const heights = rows.map(r => parseInt(r.block, 16));
  console.log('min height', Math.min(...heights), 'max height', Math.max(...heights));
})();

Medición de latencia, errores y consistencia

La calidad de un nodo gestionado tiene tres dimensiones medibles: latencia, tasa de error y consistencia. La latencia es cuánto tarda una llamada. La tasa de error es con qué frecuencia fallan las llamadas con errores de transporte o JSON-RPC. La consistencia es cuán de acuerdo están las lecturas repetidas en la misma etiqueta de bloque. Deberías medir las tres, porque un proveedor puede ser rápido y aun así devolver lecturas inconsistentes.

Utiliza el procedimiento siguiente y registra los resultados en una tabla. No rellenes números que no hayas medido. La tabla es una plantilla; los valores provienen de tus propias ejecuciones.

  • Ejecuta al menos 100 llamadas secuenciales a eth_blockNumber y registra la latencia p50 y p95.
  • Ejecuta 100 llamadas a eth_getBlockByNumber fijadas a un bloque fijo y confirma resultados idénticos.
  • Ejecuta 50 llamadas a eth_getBalance en latest y registra cuántos valores distintos aparecen.
  • Inyecta una solicitud malformada y confirma que el endpoint devuelve un error JSON-RPC, no un cuelgue.
  • Repite toda la ejecución a una hora diferente del día para ver la variación diurna.

Solución de fallos comunes en nodos de Alchemy

La mayoría de los fallos se agrupan en unos pocos tipos. Los fallos de autenticación significan que la clave es incorrecta, está revocada o está limitada a una cadena diferente. Los errores de método no encontrado significan que la cadena o el plan no exponen ese método. Las respuestas de límite de tasa significan que superaste el presupuesto de solicitudes de tu plan. Los tiempos de espera suelen significar que la solicitud nunca llegó a un backend saludable, o que el cliente se rindió demasiado pronto.

Para las suscripciones WebSocket, el fallo más común es una conexión caída que el cliente no reconecta. Implementa siempre una reconexión con retroceso exponencial y vuelve a suscribirte después de reconectar. Para el envío de transacciones, el fallo más común es tratar el acuse de recibo del envío como confirmación; en su lugar, sondea el recibo.

  • 401/403: rota la clave, confirma la cadena del proyecto, confirma los permisos del método.
  • -32601: verifica el método contra el conjunto compatible de la cadena.
  • 429: retrocede, agrupa cuando sea posible o aumenta el plan.
  • Tiempos de espera: establece un tiempo de espera explícito en el cliente y registra el id de la solicitud.
  • Caídas de WebSocket: reconecta con retroceso exponencial y vuelve a suscribirte.

Limitaciones y compensaciones del acceso a nodos gestionados

Los nodos gestionados eliminan trabajo operativo pero añaden dependencias. Dependes del tiempo de actividad del proveedor, su salud de sincronización, su cobertura de métodos y su modelo de precios. También dependes de su comportamiento de enrutamiento, que puede hacer que las lecturas en latest sean menos deterministas que un único nodo autoalojado que tú controlas.

El autoalojamiento te da control sobre el binario del nodo, el conjunto de pares y el directorio de datos, pero cuesta tiempo de ingeniería para sincronización, actualizaciones, monitoreo y respuesta a incidentes. Para muchos equipos, el modelo gestionado gana en costo total; para equipos con requisitos estrictos de determinismo o residencia de datos, el autoalojamiento o un nodo dedicado de inquilino único puede ganar. La oferta de nodos dedicados de OnFinality es una opción para equipos que necesitan infraestructura de inquilino único, y la guía de alojamiento de nodos blockchain cubre las compensaciones operativas con más profundidad.

El precio es la otra compensación. Los planes de nodos gestionados a menudo miden solicitudes o unidades de cómputo, por lo que una carga de trabajo con muchas llamadas pequeñas puede costar más que una con menos llamadas grandes. Revisa el modelo de precios de RPC antes de comprometerte con un diseño de alto volumen.

  • Gestionado: menor carga operativa, mayor dependencia del comportamiento del proveedor.
  • Autoalojado: mayor control, mayor costo operativo.
  • Dedicado: aislamiento de inquilino único, normalmente con un precio superior al de los nodos gestionados compartidos.
  • Precios medidos: diseña patrones de solicitud teniendo en cuenta el costo.

Elección entre nodos de Alchemy y alternativas

Si tu carga de trabajo consiste en lecturas y escrituras JSON-RPC estándar en una cadena compatible, los nodos de Alchemy son una opción predeterminada razonable y el procedimiento de verificación anterior te dirá si cumplen tus necesidades de latencia y consistencia. Si tu carga de trabajo depende de una cadena que Alchemy no admite, o de un método que no expone, necesitas una alternativa.

Para recomendaciones concretas de endpoints y proveedores, utiliza RPC Assistant en lugar de este artículo. Los puntos de partida relevantes incluyen la guía de endpoints RPC multicadena, la descripción general de la API RPC de Ethereum y la guía de proveedores RPC de Solana. Para detalles específicos de la red, el directorio de redes compatibles enumera las cadenas y sus características.

  • Lecturas/escrituras EVM estándar: verifica con los scripts anteriores y luego decide.
  • Cadena o método no compatible: evalúa un proveedor alternativo.
  • Determinismo estricto: considera etiquetas de bloque fijadas o un nodo dedicado.
  • Alto volumen: modela el costo según tu mezcla de solicitudes.

Próximos pasos: de la verificación a la producción

Una vez que tus ejecuciones de verificación pasen, pasa al endurecimiento para producción. Coloca la clave API en un gestor de secretos, no en el código del lado del cliente. Añade reintentos con retroceso para errores transitorios, pero no reintentes escrituras no idempotentes a ciegas. Registra los ids de solicitud para poder correlacionar fallos con el soporte del proveedor. Configura alertas sobre la tasa de error y la latencia p95 para notar la degradación antes que los usuarios.

Por último, vuelve a ejecutar el procedimiento de medición de forma programada. El comportamiento de los nodos gestionados cambia a medida que los proveedores actualizan la infraestructura, y una línea base de hace seis meses puede no describir el endpoint actual. Conserva la tabla, actualízala y deja que los datos guíen tus decisiones de proveedor.

  • Almacena las claves en un gestor de secretos y rótalas periódicamente.
  • Reintenta lecturas idempotentes con retroceso; maneja las escrituras mediante sondeo de recibos.
  • Alerta sobre la tasa de error y la latencia p95.
  • Vuelve a ejecutar la tabla de medición trimestralmente o después de cambios en el proveedor.

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