Accéder aux données de la blockchain Cardano avec Ledger Sync

L’équipe d’ingénierie de la Fondation Cardano a récemment entrepris de développer un outil de fourniture de données basé sur Java appelé Ledger Sync, qui donne accès aux données de la blockchain Cardano. Ledger Sync vise à atteindre le même niveau d’exhaustivité des données que Cardano DB Sync, également appelé db-sync, tout en fournissant une option dans un langage de programmation. bien établi parmi diverses entreprises ainsi qu’au sein d’une large base d’utilisateurs. Conformément aux efforts de la Fondation pour favoriser la maturité open source de Cardano, le framework sera publié sous une licence open source pour équiper les développeurs et les partenaires d’un outil supplémentaire d’indexation en chaîne, augmentant ainsi la diversité de l’écosystème des développeurs de Cardano.

La Fondation a choisi de publier le dépôt sous la Licence Apache 2.0< a i=4>, qui permet l’utilisation du framework dans des applications commerciales et non commerciales ainsi que dans d’autres outils open source. La licence offre également une sécurité juridique sous la forme de droits de brevet pour les outils construits sur ou avec elle, ainsi que pour les modifications du cadre lui-même qui doivent être signalées mais pas nécessairement divulguées au public. Cet arrangement garantit une accessibilité et une sécurité juridique optimales pour les entreprises ainsi que pour les autres développeurs et membres de la communauté.

La blockchain comme structure de données

De nombreux systèmes basés sur la blockchain sont confrontés à un défi commun : les données ne peuvent pas être récupérées efficacement de manière aléatoire en raison de l’organisation du stockage sous la forme d’une liste chaînée. Par exemple, pour accéder aux transactions stockées dans le bloc numéro 200 sur Cardano, une application devrait parcourir les 199 premiers blocs avant d’atteindre le bloc contenant les informations souhaitées. Si un réseau blockchain se développe continuellement, cette approche devient irréalisable. Cardano, par exemple, compte actuellement plus de 9,5 millions de blocs émis sur le réseau principal.

Le fait que certaines informations ne soient pas explicitement stockées sur la blockchain présente encore un autre défi. Grâce au modèle comptable basé sur EUTxO de Cardano, cela s’applique même au solde actuel ou historique d’un portefeuille. Afin de connaître les sorties de transactions non dépensées (UTxO) dans un portefeuille, il deviendrait nécessaire de suivre tous les UTxO qui sont entrés et sortis du portefeuille, puis de les regrouper pour déterminer le solde final.

Jusqu’au début 2022 environ, db-sync était la seule option disponible pour les constructeurs de l’écosystème pour accéder aux données de la blockchain Cardano de manière efficace. Cependant, pour atteindre le bout de la chaîne, db-sync nécessite également le traitement d’une immense quantité de données lors de la synchronisation initiale. Cela rend impossible l’exécution de db-sync pour tous les projets. De plus, dans de nombreux cas, les projets n’ont pas besoin de toutes les données fournies par db-sync, une réalité qui a conduit au développement de ce que l’on appelle des indexeurs en chaîne, permettant aux utilisateurs de spécifier précisément quelles données doivent être indexées et mises à disposition pour un projet. certaine application. Des projets comme Kupo, Scrolls, Oura et Carp fournissent tous à la communauté différentes façons de le faire.

En plus de ces exigences plus techniques, les entreprises ont également souvent des besoins concernant la fiabilité de ces services de fourniture de données. Généralement, ces exigences ne concernent pas l’implémentation réelle dans le code source mais la manière dont un tel système est exploité. La Fondation Cardano a développé Ledger Sync pour répondre précisément à ce type d’exigences commerciales. Bien qu’il partage certaines similitudes avec db-sync, certains choix de conception en font un meilleur choix pour les architectures distribuées car ils permettent des configurations à haute disponibilité. En fait, le nouvel explorateur de la Fondation a déjà utilisé Ledger Sync comme pipeline de données sous-jacent.

Si les projets nécessitent des données très spécifiques de la blockchain Cardano mais peuvent renoncer à des fonctionnalités telles que la haute disponibilité intégrée et le déchargement de la consolidation des données, les indexeurs de chaîne modulaires comme yaci-store, scrolls et Kupo présentent des choix appropriés. Ledger Sync, d’autre part, offre aux projets une option fiable pour une couche de données basée sur Java au-dessus de Cardano, en particulier lorsque les projets ont besoin d’un accès fiable aux données liées à la blockchain basé sur un cadre construit dans un langage de programmation facilement accessible.

La conception initiale de Ledger Sync visait à atteindre trois objectifs :

  1. Implémentez les mini-protocoles réseau en Java afin que les données réseau soient accessibles de manière native au langage de programmation Java sans dépendances sur d’autres frameworks.
  2. Dissociez les étapes d’exploration pure et de consolidation des données pour activer architectures évolutives, ce qui signifie que des parties du calcul peuvent être déchargées sur plusieurs instances. , tels que des conteneurs ou des serveurs, avec pour conséquence l’évaluation de l’impact négatif hérité du transfert de données via un réseau au lieu de les conserver localement sur un seul serveur.
  3. Mettre en œuvre une version indépendante des nœuds du calcul de la trésorerie, des réserves et des récompenses, que la Fondation a déjà récemment mise en open source.

L’implémentation originale mise en ligne avec la version bêta de l’explorateur de la Fondation couvrait les deux premiers points. L’équipe d’ingénierie de la Fondation travaille actuellement sur le troisième point dans le cadre d’un autre projet open source.

Accès au référentiel Ledger Sync

L’équipe a acquis un certain nombre d’apprentissages au cours de la première phase de développement, tous déjà abordés dans la version désormais publiée sous licence open source.

Nous avons commencé à développer les mini-protocoles réseau en Java à partir de zéro car, au moment du début du projet, la célèbre bibliothèque Yaci était pas encore disponible dans un état que nous jugeons utilisable. Néanmoins, nous avons remplacé l’implémentation précédente du mini-protocole réseau par Yaci dans la version actuelle pour aider à pousser l’adoption de ce projet communautaire. Ce changement signifie qu’une seule pile technologique Java doit être maintenue et mise à jour avec toute modification apportée au protocole.

Pour coordonner les tâches entre les différents services, comme le découplage de l’exploration du traitement en aval et de la consolidation des données, l’équipe a initialement utilisé Redis et < /span>, puis consommez-le à partir d’une autre application.RabbitMQ et choisir de publier des données de blocage sur diverses plateformes de messagerie. tels que Kafka et Yaci Store, une plateforme de données de streaming open source largement connue. Bien que cette approche s’avère efficace et que Kafka, ainsi que Redis, fournissent des composants robustes dans une architecture distribuée, les déploiements sont assez coûteux et peuvent devenir fastidieux, en particulier pour les configurations à plus petite échelle. Avec la dernière version, l’équipe a remplacé la nécessité de Kafka et l’a rendu facultatif. Bien que Ledger Sync fonctionne sans Kafka, les développeurs peuvent utiliser un mécanisme d’événement intégré à l’application mis à disposition par le Apache Kafka

Nous avons également commencé avec le même schéma de base de données utilisé par db-sync. Cette approche s’est avérée utile lors du développement parallèle de l’explorateur de la Fondation, car elle a permis au backend de l’explorateur d’utiliser des données réelles pour les tests. Cependant, cela a également entraîné des problèmes de conception pour Ledger Sync, car nous nous sommes écartés de l’approche Conception pilotée par domaine et n’avons pas créé de schéma spécialement conçu pour la première version de Ledger Sync. Bien que le schéma de base de données de db-sync remplisse son objectif, il ne prend pas en charge l’architecture choisie et vise la parallélisation lors du traitement des données de Ledger Sync. Nous travaillons donc actuellement à la conception d’un nouveau schéma pour remplacer l’actuel.

De plus, la majorité des ajouts récents de code source incluent la prise en charge de l’ère Conway dans Yaci. Cette mise à jour permet à Ledger Sync, ainsi qu’à tous les autres outils basés sur Java, de fonctionner avec la dernière version du grand livre et du mini-protocole réseau.

L’équipe d’ingénierie de la Fondation a également lancé un flux de travail pour mettre en œuvre le traitement parallèle de plusieurs blocs, ainsi que les transactions dans des blocs uniques lors du processus de synchronisation initial. Paralléliser ces calculs n’est pas simple car il devient nécessaire de prendre en compte les dépendances entre UTxO, diminuant par conséquent les performances acquises grâce à la parallélisation. De plus, les efforts de développement en cours incluent la proposition de modèles d’hébergement de Ledger Sync dans divers scénarios de déploiement, comme dans les configurations basées sur Kubernetes ou simplement via docker-compose.

La route à suivre

Outre ses fonctionnalités techniques, Ledger Sync s’accompagne d’un engagement de la Fondation Cardano à assurer une maintenance continue, ainsi que l’exploitation du référentiel en tant que projet open source. Outre le cadre en tant que bibliothèque et outil lui-même, cet effort vise à travailler avec des groupes communautaires, cherchant à définir une implémentation de référence standard et potentielle pour les API de données décentralisées où Ledger Sync pourrait être utilisé comme couche de données sous-jacente.

Fournir une API de données hébergée garantissant une haute disponibilité, précision et exactitude avec un modèle de support professionnel constitue un objectif supplémentaire. Garantir cela répondrait aux besoins des organisations et des entreprises, en leur permettant de mettre en œuvre plus facilement des solutions blockchain de manière transparente et en favorisant ainsi une plus grande adoption par les entreprises. Une telle entreprise nécessite toutefois un alignement et une collaboration avec les projets existants. Ce n’est qu’ainsi qu’il deviendra possible d’exploiter toute la capacité de l’écosystème Cardano déjà existant tout en garantissant simultanément une approche qui prend en charge la diversité des modèles commerciaux émergents.

La Fondation Cardano encourage tout le monde à essayer Ledger Sync et à interagir avec notre équipe via Discord ou en déposant une demande de fonctionnalité ou un rapport de bug dans le Dépôt Ledger Sync. Nous attendons avec impatience vos commentaires et vos contributions.

Source : https://cardanofoundation.org/en/news/accessing-cardano-blockchain-data-with-ledger-sync/

2 Likes