馃嚜馃嚫 Acceso a los datos de la blockchain Cardano con Ledger Sync

Recientemente, el equipo de ingenier铆a de la Fundaci贸n Cardano ha emprendido el desarrollo de una herramienta de aprovisionamiento de datos basada en Java denominada Ledger Sync, que permite acceder a los datos de la blockchain Cardano. Ledger Sync aspira a alcanzar el mismo nivel de exhaustividad de datos que Cardano DB Sync-tambi茅n conocido como db-sync-al tiempo que proporciona una opci贸n en un lenguaje de programaci贸n bien establecido entre diversas empresas, as铆 como dentro de una amplia base de usuarios. En consonancia con los esfuerzos de la Fundaci贸n por fomentar la madurez del c贸digo abierto de Cardano, el entorno se publicar谩 bajo una licencia de c贸digo abierto para dotar a los desarrolladores y socios de una herramienta adicional para la indexaci贸n de cadenas, aumentando la diversidad del ecosistema de desarrolladores de Cardano.

La Fundaci贸n opt贸 por publicar el repositorio bajo la licencia Apache 2.0, que permite el uso del entorno en aplicaciones comerciales y no comerciales, as铆 como en otras herramientas de c贸digo abierto. Esta licencia tambi茅n ofrece seguridad jur铆dica en forma de derechos de patente para las herramientas construidas sobre o con 茅l, adem谩s de para los cambios en el propio entorno que sea necesario se帽alar, pero no necesariamente una divulgaci贸n p煤blica. Esta disposici贸n garantiza una accesibilidad y una seguridad jur铆dica 贸ptimas tanto para las empresas como para otros desarrolladores y miembros de la comunidad.

Blockchain como estructura de datos

Numerosos sistemas basados en la tecnolog铆a blockchain se enfrentan a un reto com煤n: no es posible recuperar los datos de forma eficiente mediante un acceso aleatorio debido a la organizaci贸n del almacenamiento en el formato de una lista enlazada. A modo de ejemplo, para acceder a las transacciones almacenadas en el bloque n煤mero 200 de Cardano, una aplicaci贸n tendr铆a que iterar sobre los 199 primeros bloques antes de llegar al bloque que contiene la informaci贸n deseada. Si una red blockchain se expande continuamente, este enfoque se vuelve inviable. Cardano, por ejemplo, tiene actualmente m谩s de 9,5 millones de bloques acu帽ados en mainnet.

Otra dificultad es que cierta informaci贸n no se almacena expl铆citamente en la blockchain. Dado el modelo de contabilidad basado en EUTxO de Cardano, esto se aplica incluso al saldo actual o hist贸rico de una wallet. Para conocer los productos de transacci贸n no gastados (UTxOs) en una wallet, ser铆a necesario rastrear todos los UTxOs que han entrado y salido de la wallet, y luego agregarlos para determinar el saldo final.

Hasta principios de 2022 aproximadamente, db-sync hab铆a sido la 煤nica opci贸n disponible para que los creadores del ecosistema accedieran a los datos de la blockchain Cardano de una forma eficiente. No obstante, para llegar a la punta de la cadena, db-sync tambi茅n requiere el procesamiento de una inmensa cantidad de datos durante la sincronizaci贸n inicial. Esto hace inviable ejecutar db-sync para todos los proyectos. Por a帽adidura, en muchos casos los proyectos no necesitan todos los datos que ofrece db-sync, una realidad que condujo al desarrollo de los llamados indexadores de cadena con alcance, que permiten a los usuarios especificar con precisi贸n qu茅 datos deben indexarse y estar disponibles para una determinada aplicaci贸n. Proyectos como Kupo, Scrolls, Oura y Carp proporcionan a la comunidad diferentes formas de hacerlo.

Por encima de estos requisitos m谩s t茅cnicos, las empresas tambi茅n suelen tener necesidades relativas a la fiabilidad de estos servicios de suministro de datos. Por lo general, estos requisitos no est谩n relacionados con la implementaci贸n real en c贸digo fuente, sino con la forma en que funciona dicho sistema. La Fundaci贸n Cardano desarroll贸 Ledger Sync para abordar precisamente ese tipo de requisitos empresariales. Aunque por un lado comparte algunas similitudes con db-sync, ciertas elecciones de dise帽o hacen que se adapte mejor a las arquitecturas distribuidas, ya que permiten configuraciones de alta disponibilidad. De hecho, el nuevo [explorador] de la Fundaci贸n (Cardano Blockchain Explorer) ya ha puesto en uso Ledger Sync como su canalizaci贸n de datos subyacente.

En el caso de que los proyectos requieran datos muy espec铆ficos de la blockchain Cardano pero puedan renunciar a caracter铆sticas como la alta disponibilidad incorporada y la descarga de la consolidaci贸n de datos, los indexadores de cadenas modulares como yaci-store, scrolls y Kupo presentan opciones adecuadas. Ledger Sync, por otro lado, equipa a los proyectos con una opci贸n fiable para una capa de datos basada en Java sobre Cardano, especialmente cuando los proyectos necesitan un acceso fiable a los datos relacionados con el blockchain basado en un entorno construido en un lenguaje de programaci贸n de f谩cil acceso.

El dise帽o inicial de Ledger Sync pretend铆a alcanzar tres objetivos:

    1. Implementar los miniprotocolos de red en Java para que los datos de la red sean accesibles de forma nativa en el lenguaje de programaci贸n Java sin dependencias de otros entornos.
  1. Desacoplar los pasos de rastreo puro y consolidaci贸n de datos para permitir arquitecturas de escalabilidad horizontal, lo que significa que partes del c贸mputo pueden descargarse en m煤ltiples instancias, como contenedores o servidores, con la consiguiente evaluaci贸n del impacto negativo heredado de transferir datos a trav茅s de una red en lugar de mantenerlos localmente en un 煤nico servidor.
  2. Implementar una versi贸n independiente del nodo del c谩lculo de tesorer铆a, reservas y recompensas, que la Fundaci贸n ya ha puesto en marcha recientemente (open sourced).

Con la implementaci贸n inicial que se puso en marcha con la versi贸n beta del explorador de la Fundaci贸n se cubrieron los dos primeros puntos. El equipo de ingenier铆a de la Fundaci贸n trabaja actualmente en el tercer punto como parte de otro proyecto de c贸digo abierto.

Viaje al repositorio de Ledger Sync

Durante la primera fase de desarrollo, el equipo alcanz贸 una serie de aprendizajes, todos ellos ya abordados en la versi贸n que ahora se publica bajo licencia de c贸digo abierto.

Comenzamos a desarrollar los miniprotocolos de red en Java desde cero porque, en el momento en que comenz贸 el proyecto, la conocida biblioteca Yaci a煤n no estaba disponible en un estado que consider谩semos utilizable. No obstante, sustituimos la anterior implementaci贸n de miniprotocolos de red por Yaci en la versi贸n actual para ayudar a impulsar la adopci贸n de este proyecto comunitario. El cambio significa que solo hay que mantener una pila tecnol贸gica Java y estar al d铆a de cualquier cambio en el protocolo.

A fin de coordinar las tareas entre los distintos servicios -como desacoplar el rastreo del procesamiento posterior y la consolidaci贸n de datos-, el equipo utiliz贸 inicialmente Redis y Apache Kafka, una plataforma de datos en flujo de c贸digo abierto ampliamente conocida. Aunque este enfoque resulta eficaz y tanto Kafka como Redis ofrecen componentes robustos en una arquitectura distribuida, los despliegues son bastante costosos y pueden llegar a ser engorrosos, especialmente para configuraciones a menor escala. Con la 煤ltima versi贸n, el equipo ha sustituido la necesidad de Kafka y la ha hecho opcional. Aunque Ledger Sync funciona sin Kafka, los desarrolladores pueden utilizar un mecanismo de eventos in-app puesto a su disposici贸n por Yaci Store y optar por publicar datos en bloque en varias plataformas de mensajer铆a, como Kafka y RabbitMQ, para luego consumirlos desde otra aplicaci贸n.

Tambi茅n comenzamos inicialmente con el mismo esquema de base de datos utilizado por db-sync. Este enfoque result贸 煤til mientras desarroll谩bamos el explorador de la Fundaci贸n en paralelo, ya que permiti贸 que el backend del explorador utilizara datos reales para las pruebas. No obstante, tambi茅n dio lugar a retos de dise帽o para Ledger Sync, ya que nos desviamos del enfoque Domain Driven Design y no creamos un esquema construido a medida para la primera versi贸n de Ledger Sync. Aunque el esquema de base de datos de db-sync cumple su prop贸sito, no es compatible con la arquitectura elegida ni con el objetivo de paralelizaci贸n durante el procesamiento de datos de Ledger Sync. Por ello, actualmente estamos trabajando en el dise帽o de un nuevo esquema que sustituya al actual.

Por otro lado, la mayor铆a de las adiciones recientes al c贸digo fuente incluyen la compatibilidad con la era Conway en Yaci. Esta actualizaci贸n permite a Ledger Sync, as铆 como al resto de herramientas basadas en Java, trabajar con la 煤ltima versi贸n del ledger y del miniprotocolo de red.

El equipo de ingenier铆a de la Fundaci贸n tambi茅n inici贸 una corriente de trabajo para implementar el procesamiento paralelo de bloques m煤ltiples, adem谩s de transacciones en bloques individuales durante el proceso de sincronizaci贸n inicial. Paralelizar estos c谩lculos no es sencillo, ya que es necesario tener en cuenta las dependencias entre UTxOs, lo que disminuye el rendimiento obtenido de la paralelizaci贸n. Adem谩s, los esfuerzos de desarrollo en curso incluyen ofrecer planos para alojar Ledger Sync en varios escenarios de despliegue, como en configuraciones basadas en Kubernetes o simplemente a trav茅s de docker-compose.

El camino por delante

Junto a sus caracter铆sticas t茅cnicas, Ledger Sync viene con el compromiso de la Fundaci贸n Cardano de ofrecer un mantenimiento continuo, adem谩s del funcionamiento del repositorio como proyecto de c贸digo abierto. Aparte del entorno como biblioteca y herramienta en s铆, este esfuerzo tiene como objetivo trabajar con grupos de la comunidad, buscando definir un est谩ndar y una posible implementaci贸n de referencia para API de datos descentralizadas en las que Ledger Sync pueda utilizarse como capa de datos subyacente.

La entrega de una API de datos alojada que garantice una alta disponibilidad, precisi贸n y correcci贸n con un modelo de soporte profesional se erige como un objetivo adicional. Garantizar esto responder铆a a las necesidades de las organizaciones y empresas, facilit谩ndoles la implementaci贸n sin problemas de soluciones blockchain y fomentando as铆 una mayor adopci贸n empresarial. Tal empresa, no obstante, requiere alineaci贸n y colaboraci贸n con los proyectos existentes. Solo as铆 ser谩 posible aprovechar toda la capacidad del ecosistema Cardano ya existente y, al mismo tiempo, garantizar un enfoque que respalde la diversidad de los modelos empresariales emergentes.

La Fundaci贸n Cardano anima a todo el mundo a probar Ledger Sync y a colaborar con nuestro equipo a trav茅s de Discord o presentando una solicitud de funci贸n o un informe de error en el repositorio de Ledger Sync. Esperamos sus comentarios y contribuciones.


Traducci贸n al espa帽ol de 鈥淎ccessing Cardano Blockchain Data with Ledger Sync鈥, escrito por Sebastian Bode, Director de Ingenier铆a, en noviembre 09 de 2024.


Notas del traductor

  • Corchetes del traductor.
  • Asuma que todo enlace apunta a un contenido en idioma :uk: ingl茅s.
  • :es: Indica que el enlace apunta a un contenido en idioma espa帽ol.

Considere suscribirse a las siguientes fuentes de informaci贸n en espa帽ol de Cardano seg煤n su inter茅s.