Este tutorial está diseñado para guiar a quienes desean aprender más acerca de Infura. Es ideal para un nivel medio.
Infura es un proveedor líder de infraestructura como servicio (RPC Provider) para acceder de forma fiable y escalable a redes blockchain y al sistema de archivos descentralizado IPFS, sin la complejidad de operar nodos completos propios. Esta guía de nivel intermedio profundiza en la creación y gestión de proyectos Infura, la importancia de los Project ID y Project Secret para la autenticación y seguridad, y cómo conectar a una amplia gama de redes blockchain compatibles con EVM (Ethereum Mainnet, testnets, L2s como Polygon y Arbitrum) utilizando diferentes tipos de endpoints (HTTPS para peticiones stateless, WSS para suscripciones en tiempo real). Explora cómo utilizar Infura con librerías Web3 (ethers.js, web3.js) para leer datos de la blockchain, enviar transacciones (firmadas off-chain), entender los límites de tasa de uso y monitorizar el consumo en el dashboard. También introduce el servicio Infura IPFS para añadir y recuperar archivos programáticamente, destacando las ventajas de usar un proveedor RPC sobre operar un nodo completo propio para la mayoría de los casos de uso de desarrollo y dApps.
El 'Hola, mundo' de Infura: crear un proyecto, obtener el Project ID y usar un endpoint HTTPS para conectar a Ethereum Mainnet y obtener el número del último bloque.
# 1. Regístrate y crea un proyecto en https://infura.io/register
# 2. Obtén tu Project ID en el dashboard.
# 3. Usa el siguiente código (Node.js con web3.js):
const Web3 = require('web3');
const infuraProjectId = 'TU_PROJECT_ID'; // Reemplaza con tu ID
const web3 = new Web3(`https://mainnet.infura.io/v3/${infuraProjectId}`);
async function getLatestBlockNumber() {
try {
const blockNumber = await web3.eth.getBlockNumber();
console.log('Número del último bloque:', blockNumber);
} catch (error) {
console.error('Error al obtener el número de bloque:', error);
}
}
getLatestBlockNumber();
Resultado:
Número del último bloque: XXXXXXX
Familiarizarse con estos comandos es esencial para interactuar eficientemente con Infura:
Ir a https://infura.io/register, completa el registro y sigue los pasos en el dashboard para crear tu primer proyecto (ej: para Ethereum).
Accede a tu dashboard en https://infura.io/dashboard. Selecciona tu proyecto. En la sección 'KEYS' o 'Settings', encontrarás tu Project ID y la opción para generar o ver tu Project Secret (recomendado para seguridad).
Endpoint: `https://mainnet.infura.io/v3/TU_PROJECT_ID`
(Con autenticación básica usando Project Secret para seguridad)
Endpoint: `https://:${TU_PROJECT_SECRET}@mainnet.infura.io/v3/TU_PROJECT_ID`
Endpoint Goerli: `https://goerli.infura.io/v3/TU_PROJECT_ID`
Endpoint Sepolia: `https://sepolia.infura.io/v3/TU_PROJECT_ID`
(Usar autenticación básica con Project Secret)
Endpoint: `https://polygon-mainnet.infura.io/v3/TU_PROJECT_ID`
(Usar autenticación básica con Project Secret)
Endpoint Arbitrum Mainnet: `https://arbitrum-mainnet.infura.io/v3/TU_PROJECT_ID`
Endpoint Optimism Mainnet: `https://optimism-mainnet.infura.io/v3/TU_PROJECT_ID`
Endpoint BNB Smart Chain Mainnet: `https://bsc-mainnet.infura.io/v3/TU_PROJECT_ID`
(Infura soporta más redes, consulta la documentación para endpoints específicos; usar autenticación básica)
Endpoint Ethereum Mainnet WSS: `wss://mainnet.infura.io/ws/v3/TU_PROJECT_ID`
(Con autenticación básica usando Project Secret para seguridad)
Endpoint: `wss://:${TU_PROJECT_SECRET}@mainnet.infura.io/ws/v3/TU_PROJECT_ID`
Endpoint API: `https://ipfs.infura.io:5001/api/v0/add`
Método HTTP: POST (multipart/form-data)
(Requiere autenticación básica con Project ID y Secret)
URL Gateway: `https://TU_PROJECT_ID.infura-ipfs.io/ipfs/<CID>`
const { ethers } = require("ethers");
const infuraProjectId = 'TU_PROJECT_ID';
const infuraProjectSecret = 'TU_PROJECT_SECRET';
// Conectar a Mainnet con autenticación
const provider = new ethers.providers.InfuraProvider('mainnet', { projectId: infuraProjectId, projectSecret: infuraProjectSecret });
// Conectar a Polygon con solo Project ID (menos seguro)
// const polygonProvider = new ethers.providers.JsonRpcProvider(`https://polygon-mainnet.infura.io/v3/${infuraProjectId}`);
const Web3 = require('web3');
const infuraProjectId = 'TU_PROJECT_ID';
const infuraProjectSecret = 'TU_PROJECT_SECRET';
// Endpoint WSS con autenticación básica
const infuraWssEndpoint = `wss://:${infuraProjectSecret}@mainnet.infura.io/ws/v3/${infuraProjectId}`;
const web3 = new Web3(infuraWssEndpoint);
// Suscribirse a nuevos bloques
web3.eth.subscribe('newBlockHeaders', (error, blockHeader) => {
if (error) console.error(error);
console.log('Nuevo bloque recibido:', blockHeader.number);
});
Accede a https://infura.io/dashboard. Selecciona tu proyecto y ve a la sección 'USAGE' o 'Analytics'.
En el dashboard Infura, en la configuración de tu proyecto, busca la sección de seguridad ('Security'). Añade direcciones IP (para backends) o dominios/URLs Referer (para frontends) permitidos para acceder a tus endpoints.
Comprender estos conceptos fundamentales te ayudará a dominar Infura de forma más organizada y eficiente:
Proveedor RPC (Node as a Service):
Comprender que Infura actúa como un servicio que ejecuta nodos completos de blockchains (Ethereum, Polygon, etc.) e IPFS por ti. Ofrece acceso a través de APIs y endpoints RPC/HTTP/WSS. Esto te permite leer datos de la blockchain, enviar transacciones y suscribirte a eventos sin tener que descargar, sincronizar y mantener tu propio nodo, lo cual es complejo, lento y consume muchos recursos.
Proyecto Infura (Dashboard, Project ID, Project Secret):
Tu acceso a Infura se gestiona a través de proyectos. Cada proyecto tiene un Project ID (identificador público en las URLs de los endpoints) y un Project Secret (clave privada para autenticación y seguridad). El dashboard Infura es la interfaz web donde creas y gestionas tus proyectos, obtienes tus credenciales y monitorizas tu uso.
Conexión a Diferentes Redes Blockchain:
Infura soporta múltiples redes blockchain, principalmente compatibles con EVM: Ethereum Mainnet, testnets (Goerli, Sepolia), y soluciones de escalado de Capa 2 (Polygon PoS, Arbitrum, Optimism). Cada red tiene su propio endpoint URL específico que incluye tu Project ID. Elegir el endpoint correcto es crucial.
Tipos de Endpoints: HTTPS y WSS:
Infura ofrece acceso a través de dos protocolos: HTTPS y WebSockets (WSS). Los endpoints HTTPS son para la mayoría de las llamadas RPC estándar ('stateless'), como consultar saldos o enviar transacciones firmadas. Los endpoints WSS son para conexiones persistentes ('stateful'), necesarias para funcionalidades como suscribirse a eventos de la blockchain en tiempo real (ej: nuevos bloques, logs de contratos).
Límites de Tasa de Uso y Planes:
Infura (como la mayoría de los proveedores de nodos) tiene límites en la cantidad de solicitudes API/RPC que puedes hacer, el ancho de banda consumido y el almacenamiento (para IPFS), que varían según tu plan (gratuito vs pago). Es vital monitorizar tu uso en el dashboard Infura para evitar exceder los límites y experimentar interrupciones del servicio.
Seguridad (Protección del Project Secret, Whitelisting):
El Project Secret es sensible y debe protegerse. Nunca lo expongas en código frontend público. La forma segura de usarlo es a través de autenticación básica en peticiones HTTPS/WSS (ideal para backends) o configurando Whitelisting de Direcciones IP o Whitelisting de Referers HTTP en el dashboard de Infura para restringir el acceso a tus endpoints.
Uso con Librerías Web3 (ethers.js, web3.js):
Cómo integrar Infura en tus aplicaciones que interactúan con la blockchain. Configuras un 'Provider' (ej: `JsonRpcProvider`, `InfuraProvider`, `WebSocketProvider`) en tu librería JavaScript (ethers.js, web3.js, viem) apuntando a los endpoints de Infura y proporcionando tu Project ID (y Secret) para la autenticación.
Servicio Infura IPFS:
Infura extiende su infraestructura para soportar IPFS. Ofrecen endpoints API/RPC para que puedas agregar archivos a la red IPFS directamente a través de su infraestructura (Infura pineará el contenido para ti) y un Gateway IPFS dedicado por proyecto para acceder a contenido IPFS de forma fiable (TU_PROJECT_ID.infura-ipfs.io).
Beneficios frente a Operar un Nodo Propio:
Usar Infura ofrece ventajas significativas sobre ejecutar tu propio nodo completo: escalabilidad (manejan el tráfico por ti), fiabilidad (infraestructura redundante), menor latencia, y un ahorro masivo en tiempo, esfuerzo y recursos (almacenamiento, ancho de banda, mantenimiento, actualizaciones). Ideal para la mayoría de los desarrolladores y dApps.
Tipos Comunes de Peticiones RPC:
Familiarizarse con las categorías de llamadas RPC que harás: consultas de estado (`eth_getBalance`, `eth_call` para funciones `view`/`pure`), envío de transacciones (siempre pre-firmadas, `eth_sendRawTransaction`), consultas de bloques y transacciones (`eth_getBlockByNumber`, `eth_getTransactionByHash`), y suscripciones (vía WSS, `eth_subscribe` para nuevos bloques, logs, etc.).
Algunos ejemplos de aplicaciones prácticas donde se utiliza Infura:
Proporcionar acceso fiable y escalable a la blockchain para el frontend de dApps:
Conectar la interfaz de usuario de una dApp a Ethereum, Polygon u otra red soportada a través de los endpoints HTTPS de Infura, permitiendo a los usuarios leer datos (saldos, estado de contratos) y enviar transacciones que firman con su billetera (ej: Metamask).
Habilitar servicios backend para interactuar con datos de la blockchain y enviar transacciones programáticamente:
Permitir que tus servicios backend (Node.js, Python, etc.) consulten datos de contratos, obtengan información histórica o envíen transacciones pre-firmadas a la red blockchain utilizando los endpoints de Infura.
Construir sistemas que requieren suscripciones en tiempo real a eventos de la blockchain:
Utilizar los endpoints WSS de Infura para escuchar eventos de contratos específicos (ej: transferencias de tokens, cambios de estado) o nuevos bloques, y actualizar la UI o realizar acciones en tu backend en tiempo real.
Integrar el almacenamiento y recuperación de archivos en IPFS dentro de dApps o servicios:
Utilizar el servicio Infura IPFS para subir archivos programáticamente (ej: metadatos de NFTs, archivos de dApps) y recuperarlos de forma fiable a través del Gateway dedicado de tu proyecto.
Utilizar Infura como proveedor RPC en frameworks de desarrollo (Truffle, Hardhat):
Configurar tus herramientas de desarrollo para desplegar contratos y ejecutar scripts en redes públicas (testnets, mainnet) a través de los endpoints de Infura, simplificando la conexión a la blockchain durante el desarrollo y el despliegue.
Acceder a datos históricos de la blockchain para análisis o funcionalidades de dApps:
Consultar información de bloques pasados, estados de contratos en puntos específicos del tiempo o historiales de transacciones para análisis on-chain, auditorías o para alimentar funcionalidades de tu dApp que requieren datos históricos.
Construir plataformas de análisis o indexación que requieren acceso masivo y fiable a datos de la blockchain:
Utilizar los planes de Infura con mayores límites de uso para aplicaciones que necesitan realizar un gran volumen de consultas a la blockchain para indexar datos, construir grafos o realizar análisis complejos.
Desarrollar aplicaciones que operan en múltiples redes blockchain compatibles con EVM:
Utilizar los endpoints de Infura para conectar tu aplicación a diferentes cadenas soportadas (Ethereum, Polygon, Arbitrum, etc.), gestionando las interacciones específicas de cada red a través de una única infraestructura de proveedor RPC.
Aquí tienes algunas recomendaciones para facilitar tus inicios en Infura:
Crea una Cuenta Gratuita y un Proyecto para Empezar:
El primer paso es simple: regístrate en infura.io y crea tu primer proyecto. Obtendrás un Project ID. Esto te dará acceso a los endpoints gratuitos para empezar a experimentar con las redes soportadas.
Protege Tu Project Secret Rigurosamente:
Si generas un Project Secret (muy recomendado para seguridad), trátalo como una contraseña. Nunca lo incluyas en código frontend que se ejecute en el navegador. Úsalo para autenticación básica (junto a tu Project ID) en llamadas desde backends o configura Whitelisting de IP/Referer en el dashboard Infura.
Entiende la Diferencia entre Endpoints HTTPS y WSS:
HTTPS es para la mayoría de las llamadas RPC (lectura, envío de transacciones firmadas). WSS (WebSocket) es para suscripciones en tiempo real a eventos. Usa HTTPS para llamadas únicas y WSS cuando necesites escuchar eventos continuamente.
Usa el Endpoint Correcto para Cada Red y Propósito:
Cada red (Mainnet, Goerli, Polygon, etc.) tiene su propia URL de endpoint (tanto HTTPS como WSS). Asegúrate de usar la URL específica para la red y el tipo de conexión que necesitas. La documentación de Infura tiene la lista completa.
Monitoriza Tu Uso en el Dashboard Infura:
Revisa regularmente la sección 'USAGE' en el dashboard de tu proyecto. Te muestra cuántas solicitudes has hecho y cuánto ancho de banda/almacenamiento (IPFS) has usado. Esto es vital para no exceder los límites de tu plan, especialmente si usas el plan gratuito en una aplicación que crece.
Configura Tus Librerías Web3 (ethers.js, web3.js) Correctamente:
Aprende a inicializar los 'Providers' en tu librería Web3 con los endpoints de Infura, incluyendo cómo pasar tus credenciales de proyecto (Project ID y Project Secret) para la autenticación segura.
Recuerda que Infura No Guarda Tus Claves Privadas:
Infura te da acceso a la red, pero no gestiona tus cuentas o claves privadas. Si necesitas enviar transacciones que modifican el estado de la blockchain, la transacción debe estar firmada por una clave privada (ej: desde la billetera del usuario en el navegador o desde tu backend con una clave gestionada de forma segura) ANTES de enviarla a Infura vía `eth_sendRawTransaction`.
Explora el Servicio Infura IPFS si Necesitas Almacenamiento Descentralizado:
Si tu dApp requiere almacenar metadatos, imágenes o archivos de forma descentralizada, el servicio IPFS de Infura te permite agregar archivos fácilmente a través de su API y acceder a ellos de forma fiable a través de tu Gateway dedicado. Es una alternativa a operar tu propio nodo IPFS o usar otros servicios de pinning.
Configura Opciones de Seguridad como Whitelisting:
Para mayor seguridad, configura Whitelisting de IP (para backends) o Whitelisting de Referer (para frontends) en el dashboard de Infura. Esto restringe quién puede usar tus endpoints y ayuda a proteger tus credenciales y límites de uso.
Si te interesa Infura, también podrías explorar estas herramientas:
Amplía tus conocimientos con estos enlaces y materiales: