Colaborador: indexar y consultar datos de blockchain se ha convertido en un desafío para los proyectos descentralizados.
[wps_section size=”full-boxed” height=”auto” background_color=”#1e73be” background_size=”cover” background_repeat=”no-repeat” background_mode=”fixed” align_content_vertical=”center” align=”left” content_width=”100%” content_color=”#fff” padding=”12″ margin=”15″] [wps_lists icon=”arrow-right” icon_color=”#fff”]- Desafíos con la consulta de datos de blockchain
- ¿Cuál es la salida ideal?
- ¿Cuáles son las soluciones actuales que podemos utilizar?
- Una inmersión profunda en el servicio Graph
- Cómo utilizar el gráfico
- Pensamientos finales
“Lo curioso de los datos de blockchain es que, aunque en teoría todo es transparente y accesible, en la práctica históricamente ha sido muy opaco”. – Hayden Adams, fundador de Uniswap
Hay algunos desafíos que las cadenas de bloques tienen en común cuando se trata de consultas de datos. En este artículo, trataremos de describirlos, así como las formas existentes de resolver problemas con el acceso a datos de blockchain.
Desafíos con la consulta de datos de blockchain
La tecnología Blockchain parece ser una solución perfecta para el almacenamiento de datos transparente y descentralizado. También permite la apertura en el acceso a los datos y se ve reforzada por su naturaleza inmutable. Estas características han ayudado a que esta tecnología demuestre su utilidad en varias industrias hasta ahora. Sin embargo, la tecnología de contabilidad distribuida no actúa como una base de datos pura, por lo que se producen algunos problemas con el acceso a los datos de la cadena de bloques.
En el sentido habitual, una base de datos es una colección de datos organizados de acuerdo con una estructura conceptual que describe las características de estos datos y su relación. Puede considerar MySQL o PostageSQL como ejemplos comúnmente conocidos. Cada base de datos tiene su propio lenguaje de consulta (como CQL o JPQL) que admite uno o más campos de aplicación.
La consulta de datos desde blockchain se encuentra con problemas de rendimiento y ancho de banda. Principalmente, esto sucede porque las cadenas de bloques no tienen un lenguaje de consulta inicial a diferencia de otras bases de datos regulares. La naturaleza distribuida de Blockchain también se convierte en un obstáculo en este caso.
Generalmente, podemos definir los siguientes problemas que impiden la consulta eficiente en blockchains:
- Descentralización y distribución de datos: por muy buena que sea, en algunos casos, una infraestructura tan descentralizada puede crear inconvenientes para consultar la información correcta en un corto período de tiempo. La naturaleza secuencial de los bloques no permite almacenar información completa en un bloque. Según las reglas de la red, cada bloque guarda solo el “hash” del bloque anterior y se rellena con nueva información. Es por eso que encontrar una sola pieza de información entre un gran conjunto de datos requiere mucho tiempo y capacidades de rendimiento.
- Falta de lenguaje de consulta: cada tipo de base de datos tiene un lenguaje de consulta que sirve para responder la pregunta fáctica o proporcionar los documentos relevantes para la consulta de entrada. La forma en que Blockchain almacena los datos lamentablemente no cumple con ninguno de los lenguajes de consulta utilizados actualmente, por lo que requiere una gran cantidad de código para poder interactuar con los datos de una DApp.
- Confusión y enredo de datos: los problemas mencionados anteriormente contribuyen al tercer problema con el acceso a los datos de blockchain: la confusión de datos dentro del sistema interno. En términos generales, en las cadenas de bloques similares a Ethereum, los datos históricos (registros) se distribuyen en eventos que se almacenan en una parte separada del nodo (separada de la cadena de bloques y el almacenamiento de bloques). La recuperación frecuente de esos eventos no es efectiva en absoluto.
- Además, los nodos públicos como Infura a menudo intentan limitar tales acciones que ralentizan considerablemente el proceso de consulta. Esto se debe principalmente a la dificultad de interpretación de los datos y al entrelazamiento de datos generales dentro de una estructura de nodo.
- API limitadas: las interfaces de programación de aplicaciones actuales se consideran fuertemente dependientes de la plataforma y solo pueden proporcionar consultas simples (como consultas de rango o consultas top-k).
Estos problemas son extremadamente dolorosos en términos de intentar almacenar una larga lista de registros o transacciones.
Por ejemplo, blockchain se puede aplicar con éxito para almacenar datos de forma segura con fines sanitarios. Sin embargo, cuando se trata de recuperar datos, por ejemplo, sobre un paciente en particular durante un cierto período de tiempo, blockchain extendería el tiempo de procesamiento y haría el trabajo realmente difícil.
El problema no se limita a las aplicaciones blockchain en la industria de la salud. Puede ocurrir al manejar transacciones en intercambios descentralizados o al procesar datos dentro de plataformas de apuestas o comercio.
¿Cuál es la salida ideal?
Siguiendo las características mencionadas anteriormente, podemos definir las características principales de la solución requerida para una consulta de datos de blockchain suficiente. Esos son:
- Un enfoque centralizado para el almacenamiento de datos donde cada pieza de información tiene su propio lugar y se puede acceder fácilmente
- Obtener un lenguaje de consulta adecuado para poder recuperar la información de la cadena de bloques;
- Garantice la transparencia y el orden de almacenamiento de datos para facilitar la navegación de datos dentro del sistema.
¿Cuáles son las soluciones actuales que podemos utilizar?
El mercado actual conoce algunas formas de resolver problemas con el acceso a datos de blockchain. Una DApp basada en blockchain que necesita procesar una gran cantidad de datos puede:
- Use one of various centralized services
There are a number of companies that provide centralized databases and APIs for blockchain data access. This might be a good solution that will considerably fasten the operational work of your system, but it violates the decentralized nature of the desired project. Another disadvantage might be the possibility of service disruption or lack of access to the stored data due to external problems on the database side.
- Build your own data storing service
Providing project users with private database storage would solve the problem of possible data loss or access limitations. Yet, on the other hand, such a system will require a huge investment for initial development and set up as well as ongoing maintenance.
- Use The Graph service
Using The Graph protocol for querying blockchains is a convenient solution that solves problems with bandwidth and data access. The Graph is an open source protocol that helps to ensure the full decentralization of data transmission.
Una inmersión profunda en el servicio Graph
Graph presenta un servicio eficiente para consultar datos almacenados en cadenas de bloques o sistemas de archivos interplanetarios (IPFS). El servicio Graph proporciona una solución de alto rendimiento y bien optimizada que elimina las consultas de eventos innecesarias de los nodos.
El gráfico permite la creación de subgrafos para almacenar datos de forma segura y de fácil acceso. [Para una mejor comprensión, puede ver un subgráfico como un gráfico dentro de un gráfico más grande].
El Subgraph es una forma de indexar datos de blockchain y luego consultarlos con la API GraphQL simple. Por lo tanto, una vez implementado, se convierte en parte del gráfico global de datos de blockchain.
El Subgraph proporcionado por The Graph puede entenderse como otra instancia del servicio de indexación. Sin embargo, a pesar de la similitud en su naturaleza, los Subgrafos desplegados no cooperan e interactúan entre sí. No importa cuántos Subgraphs cree para una DApp, no se excluirán entre sí.
Los subgrafos cooperan y se comunican con el servicio principal usando GraphQL. GraphQL es un lenguaje para consultar y manipular datos de código abierto para la API y un entorno de ejecución para manejar solicitudes de datos disponibles. El algoritmo está construido para que permita al usuario recuperar la información en una sola consulta mientras preserva el ancho de banda y reduce las solicitudes en cascada.
Cómo utilizar el gráfico
Básicamente, hay dos formas de usar el servicio The Graph: la primera es ejecutar su propia copia del nodo The Graph o utilizar el servicio alojado como una solución lista para usar.
Ejecutar su propia instancia de Graph puede ayudar a ser completamente independiente del servicio y está totalmente bien siempre que el código sea de código abierto. Por otro lado, puede causar ciertos inconvenientes, ya que tendrá que contar horas adicionales para actualizar cada vez que entren nuevas funciones.
La segunda opción es utilizar el servicio alojado proporcionado por The Graph. El servicio combina su propia red de curadores, delegadores e indexadores que operan dentro del sistema para garantizar la indexación y el procesamiento de consultas. Vale la pena señalar que el uso de la solución alojada irá acompañado de las tarifas de consulta para los proveedores de servicios.
Pensamientos finales
Cuantas más aplicaciones basadas en blockchain tengamos, más información necesitan almacenar y procesar. Por lo tanto, el problema con el flujo de datos suficiente y el aumento del ancho de banda inevitablemente ocurrirá tarde o temprano.
Las soluciones mencionadas anteriormente definitivamente han encontrado su aplicación y pueden usarse más para obtener el resultado requerido en la consulta de datos de blockchain. Sin embargo, la tecnología ofrecida por The Graph sin duda ha simplificado la indexación de datos. Por lo tanto, crear una aplicación verdaderamente descentralizada que se ejecute completamente en una infraestructura pública ya no parece tan oneroso.