Una de las principales preocupaciones que tienen los desarrolladores de DApps es contar con una infraestructura que les permita probar sus aplicaciones y llevarlas a entornos de producción sin tener que invertir grandes cantidades de tiempo y de dinero. El proyecto Infura ofrece a los desarrolladores un conjunto de herramientas y la infraestructura necesaria para que puedan conectar sus proyectos a Ethereum e IPFS sin configuraciones complejas ni sincronizaciones iniciales.

 

¿Qué es Infura?

Infura es una plataforma que proporciona un conjunto de herramientas e infraestructuras que permiten a los desarrolladores llevar fácilmente su aplicación blockchain de la prueba, a la implementación a escala, con acceso simple y confiable a Ethereum e IPFS.

¿Qué ventajas aporta a los desarrolladores?

En la elaboración de un proyecto blockchain, los desarrolladores se encuentran, a menudo, con diferentes circunstancias que ralentizan su puesta en marcha.

Por un lado, las aplicaciones Blockchain necesitan conexiones a redes punto a punto que pueden requerir largos tiempos de inicialización. Puede llevar horas o días sincronizar un nodo con la cadena de bloques Ethereum y puede usar más ancho de banda y almacenamiento de lo que se había planeado.

Por otro lado, es costoso almacenar la cadena de bloques de Ethereum completa, aumentando estos costes a medida que se agregan más nodos si se necesita expandir la infraestructura. Además, a medida que la infraestructura se vuelve más compleja, es posible que se necesiten ingenieros y equipos de DevOps para ayudar a mantenerla.

Infura viene a resolver estos problemas al proporcionar una infraestructura y herramientas que hacen que los desarrolladores de aplicaciones descentralizadas se conecten a Ethereum e IPFS de manera rápida, fácil y rentable. No requiere de sincronizaciones iniciales, ni configuraciones complejas.

 

Características Principales

A continuación, vamos a pasar a describir las características más importantes que tiene Infura:

  • Proporciona una API que permite trabajar con la cadena de bloques de Ethereum, tanto en la mainnet, como en las testnets Ropsten, Rinkeby, Kovan y Görli. Además, también proporciona una API para trabajar con el sistema IPFS (Interplanetary File System) (Figura 1).

Redes Infura Master Blockchain OnlineFigura 1: Endpoints de Ethereum e IPFS usados por Infura. Fuente

  • Mediante las APIs proporcionadas por Infura, se permite acceder a Ethereum a través de los nodos de equilibrio de carga, de la misma manera que se haría a través de nodos propios. En el caso de IPFS Infura proporciona una puerta de enlace IPFS pública que permite acceder a través de HTTPS como se haría a través de nodos propios de IPFS.

  • El conjunto de APIs proporcionadas por Infura de Ethereum e IPFS sirven a miles de aplicaciones descentralizadas todos los días, con acceso las 24 horas del día, los 7 días de la semana y ofrece tiempos de respuesta de solicitud hasta 20 veces más rápidos que otros servicios o soluciones auto-hospedadas

  • Infura proporciona servicios y APIs mediante JSON RPC sobre HTTPS, WebSockets, y cualquier otro entorno de intercambio de mensajes, siendo compatibles con otras bibliotecas y entornos de programación (Figura 2 y Figura 3). Para los lectores que quieran profundizar en la API de Ethereum JSON RPC sobre HTTPS, se recomienda acceder al siguiente enlace. Para consultar la API de Ethereum JSON RPC Sobre Websockets se recomienda acceder al siguiente enlace. Por último, para profundizar en la API de IPFS se puede acceder al siguiente enlace.

Solicitud HTTPS Infura Master Blockchain Online

Figura 2: Solicitud JSON RPC mediante HTTPS. Fuente

 

Solicitud Websocket Infura Master Blockchain OnlineFigura 3: Solicitud JSON RPC mediante Websockets. Fuente

 

  • Infura establece un mecanismo de autenticación mediante el uso de un «Project ID». Las «request URL» que manejan las APIs de Infura requieren de un «Project ID» que identifique de forma única cada proyecto (Figura 4).

Authenticating Project ID Infura Master Blockchain Online

Figura 4: Autenticación mediante «Project ID». Fuente

 

  • Infura también proporciona un mecanimo de autenticación para implementar confidencialidad mediante un «Project ID» y «Project Secret». Cuando se necesita implementar confidencialidad en el proyecto con el que se trabaja, Infura permite usar HTTP Basic Authentication para acceder a la API (Figura 5). En la sección «Security» del panel de control de Infura se pueden configurar las opciones de seguridad que se necesitan en la implementación del proyecto.

Authenticating Project Secret Infura Master Blockchain Online

Figura 5: Autenticación mediante «Project ID» y «Project Secret». Fuente

 

  • Infura soporta solicitudes de subscripción a eventos de Ethereum mediante «pub/sub» sobre Websockets. Las solicitudes de subscripción y de filtro no pueden ser realizadas sobre HTTPS. Para los lectores que quieran profundizar en el estudio de estas solicitudes de subscripción a eventos pueden acceder al siguiente enlace.
  • Infura es compatible de forma nativa en la extensión del Kit de desarrollo de Azure Blockchain para VS Code. Esta integración facilita a los desarrolladores acceder y enviar solicitudes a sus proyectos Infura en cualquiera de las redes Ethereum compatibles, sin tener que abandonar la interfaz VS Code. Para los lectores que quieren obtener más información sobre cómo funciona esta integración pueden consultar el siguiente enlace.

  • Para garantizar la seguridad en las solicitudes de las APIs y que una tercera parte no pueda utilizar un «Project ID» sobre el que no tiene permiso de acceso, Infura utiliza las herramientas «Allowlists», mediante las cuales se pueden configurar reglas y listas de acceso a cada uno de los proyectos. En cada proyecto se pueden configurar diferentes tipos de «Allowlists», tales como «User-Agent Allowlist», «HTTP Origin Allowlist» y «Ethereum Addresses Allowlist» (Figura 6). Si un proyecto no tiene ninguna Allowlist activa, todas las solicitudes que se realicen a la API serán aceptadas, pero tan pronto como exista una entrada en una Allowlist, todas las solicitudes deberán pasar por dicha entrada. Se permiten un máximo de 30 entradas por cada tipo de Allowlist y proyecto. Cuando existen entradas de diferentes tipos se procesarán según un «AND», y cuando se tienen diferentes entradas del mismo tipo de procesarán según un «OR». Para aquellos lectores que quieran profundizar en el uso de las Allowlists, y ver algunos ejemplos de uso, pueden consultar el siguiente enlace.

User Agent Allowlist Infura Master Blockchain Online

Figura 6: Ejemplo de User-Agent Allowlist. Fuente

  • Infura utiliza el proyecto Vipnode, ejecutando grupos privados para emparejar diferentes tipos de nodos, asegurando que sus nodos de Ethereum estén conectados entre sí. Para profunizar sobre el protocolo Vipnode se puede consultar el siguiente enlace.

  • Infura trabaja con los siguientes clientes de Ethereum: Geth (escrito en Go, de código abierto y desarrolado bajo la licencia GNU LGPL v3), Parity (escrito en Rust e implementado por Parity Technologies) y Hypeledger Besu (escrito en Java, de código abierto, y desarrollado bajo la licencia Apache 2.0).

Planes

Infura ofrece cuatro planes/tipos de servicios con el fin de poder dar soporte a todas las necesidades que tenga el desarrollador para implementar su proyecto.

El plan básico, llamado «Core», es gratuito y proporciona todo lo que se necesita para comenzar a crear aplicaciones de blockchain. Este plan permite crear hasta 3 proyectos diferentes. Cada proyecto proporciona un conjunto único de credenciales de API que sirven para distinguir las aplicaciones que usan Infura, y que permiten ver análisis y controlar configuraciones de seguridad distintas de los casos de uso individuales.

Se pueden ver todos los planes, sus características y precios en el siguiente enlace.

 

En conclusión

El proyecto Infura ofrece a los desarrolladores de DApps un conjunto de utilidades y una serie de herramientas de infraestructura, que permiten crear sus proyectos de forma ágil, conectánsose a Ethereum e IPFS de manera rápida, fácil y rentable, sin sincronizaciones iniciales, ni configuraciones complejas.

 

Referencias