🇮🇹 "Accedere ai dati della Blockchain Cardano con Ledger Sync"

:it: Traduzione italiana di “Accessing Cardano Blockchain Data with Ledger Sync”

Traduzione italiana a cura di Lordwotton di RIOT Stake Pools. Se apprezzi queste traduzioni, per favore valuta di supportare il mio lavoro delegando i tuoi ada a RIOT :pray: entra nel nostro gruppo Telegram


Accedere ai dati della Blockchain Cardano con Ledger Sync

Il team di ingegneri della Cardano Foundation si è recentemente occupato dello sviluppo di uno strumento di fornitura di dati basato su Java, chiamato Ledger Sync, che consente di accedere ai dati della blockchain di Cardano. Ledger Sync mira a raggiungere lo stesso livello di completezza dei dati di Cardano DB Sync, noto anche come db-sync, fornendo al contempo un’opzione in un linguaggio di programmazione ben consolidato tra diverse aziende e un’ampia base di utenti. In linea con gli sforzi della Fondazione per promuovere la maturità open source di Cardano, il framework sarà rilasciato con una licenza open source per fornire agli sviluppatori e ai partner un ulteriore strumento per l’indicizzazione delle catene, aumentando la diversità dell’ecosistema degli sviluppatori di Cardano.

La Fondazione ha scelto di pubblicare il repository sotto la licenza Apache 2.0, che consente l’uso del framework in applicazioni commerciali e non commerciali e in altri strumenti open source. La licenza fornisce anche la certezza del diritto sotto forma di diritti di brevetto per gli strumenti costruiti su di essa o con essa, oltre che per le modifiche al framework stesso che devono essere evidenziate, ma non necessariamente rese pubbliche. Questo accordo garantisce un’accessibilità ottimale e la certezza del diritto per le aziende, gli altri sviluppatori e i membri della comunità.

Blockchain come struttura dati

Molti sistemi basati su blockchain affrontano una sfida comune: i dati non possono essere recuperati in modo efficiente con accesso casuale a causa dell’organizzazione dello storage nel formato di un elenco collegato. Ad esempio, per accedere alle transazioni memorizzate nel blocco numero 200 di Cardano, un’applicazione dovrebbe iterare sui primi 199 blocchi prima di raggiungere il blocco che contiene le informazioni desiderate. Se una rete blockchain si espande continuamente, questo approccio diventa impraticabile. Cardano, ad esempio, ha attualmente più di 9,5 milioni di blocchi coniati sulla mainnet.

Il fatto che alcune informazioni non siano esplicitamente memorizzate sulla blockchain rappresenta un’altra sfida. A causa del modello di contabilità di Cardano basato su EUTxO, questo vale anche per il saldo attuale o storico di un portafoglio. Per conoscere gli output di transazione non spesi (UTxO) in un portafoglio, sarebbe necessario tenere traccia di tutti gli UTxO che sono entrati e usciti dal portafoglio, quindi aggregarli per determinare il saldo finale.

Fino a circa l’inizio del 2022, db-sync era l’unica opzione disponibile per i costruttori dell’ecosistema per accedere ai dati della blockchain di Cardano in modo efficiente. Tuttavia, per raggiungere la punta della catena, db-sync richiede anche l’elaborazione di un’immensa quantità di dati durante la sincronizzazione iniziale. Questo rende impraticabile l’esecuzione di db-sync per tutti i progetti. Inoltre, in molti casi i progetti non hanno bisogno di tutti i dati forniti da db-sync, una realtà che ha portato allo sviluppo dei cosiddetti scoped chain-indexer, che consentono agli utenti di specificare con precisione quali dati devono essere indicizzati e resi disponibili per una determinata applicazione. Progetti come Kupo, Scrolls, Oura e Carp forniscono alla comunità diversi modi per farlo.

Oltre a questi requisiti più tecnici, le aziende hanno spesso esigenze di affidabilità dei servizi di fornitura dei dati. In genere, questi requisiti non riguardano l’effettiva implementazione nel codice sorgente, ma le modalità di funzionamento del sistema. La Cardano Foundation ha sviluppato Ledger Sync proprio per rispondere a questo tipo di esigenze aziendali. Se da un lato condivide alcune somiglianze con db-sync, dall’altro alcune scelte progettuali lo rendono più adatto alle architetture distribuite, in quanto consentono configurazioni ad alta disponibilità. In effetti, il nuovo [explorer] della Fondazione (Cardano Blockchain Explorer) ha già utilizzato Ledger Sync come pipeline di dati sottostante.

Se i progetti hanno bisogno di dati molto specifici dalla blockchain di Cardano, ma possono rinunciare a caratteristiche come l’alta disponibilità incorporata e l’offloading del consolidamento dei dati, gli indicizzatori modulari a catena come yaci-store, scrolls e Kupo rappresentano scelte adeguate. Ledger Sync, invece, offre ai progetti un’opzione affidabile per un livello di dati basato su Java in cima a Cardano, soprattutto quando i progetti hanno bisogno di un accesso affidabile ai dati relativi alla blockchain basato su un framework costruito in un linguaggio di programmazione facilmente accessibile.

Il progetto iniziale di Ledger Sync mirava a raggiungere tre obiettivi:

  1. Implementare i mini protocolli di rete in Java in modo che i dati di rete siano accessibili in modo nativo per il linguaggio di programmazione Java senza dipendere da altri framework.
  2. Disaccoppiare le fasi di crawling puro e di consolidamento dei dati per consentire architetture scale-out, vale a dire che parti del calcolo possono essere scaricate su più istanze, come container o server, con la conseguente valutazione dell’impatto negativo ereditato dal trasferimento dei dati attraverso una rete invece di mantenerli localmente in un singolo server.
  3. Implementare una versione indipendente dai nodi del calcolo di tesoreria, riserve e ricompense, che la Fondazione ha giĂ  recentemente reso disponibile in open source.

L’implementazione originale che è stata lanciata con la versione beta dell’explorer della Fondazione riguardava i primi due punti. Il team di ingegneri della Fondazione sta attualmente lavorando al terzo punto come parte di un altro [progetto open source] (GitHub - cardano-foundation/cf-java-rewards-calculation: This java project is used to calculate the rewards of the Cardano network. It aims to be both an edge case documentation and formula implementation.).

Viaggio verso il repository Ledger Sync

Durante la prima fase di sviluppo il team ha acquisito una serie di conoscenze, tutte giĂ  affrontate nella versione ora rilasciata con licenza open source.

Abbiamo iniziato a sviluppare i mini protocolli di rete in Java da zero perché, al momento dell’inizio del progetto, la nota libreria Yaci non era ancora disponibile in uno stato che consideravamo utilizzabile. Ciononostante, nella versione attuale abbiamo sostituito la precedente implementazione del mini protocollo di rete con Yaci, per favorire l’adozione di questo progetto comunitario. Questo cambiamento significa che un solo stack tecnologico Java deve essere mantenuto e aggiornato con qualsiasi modifica al protocollo.

Per coordinare le attività tra i diversi servizi, come il disaccoppiamento del crawling dall’elaborazione a valle e il consolidamento dei dati, il team ha inizialmente utilizzato Redis e Apache Kafka, una piattaforma di streaming dati open source ampiamente conosciuta. Sebbene questo approccio si sia rivelato efficace e Kafka, così come Redis, forniscano componenti robusti in un’architettura distribuita, le implementazioni sono piuttosto costose e possono diventare ingombranti, soprattutto per le configurazioni su scala ridotta. Con l’ultima versione, il team ha sostituito la necessità di Kafka e l’ha resa opzionale. Sebbene Ledger Sync operi senza Kafka, gli sviluppatori possono utilizzare un meccanismo di eventi in-app reso disponibile da Yaci Store e scegliere di pubblicare i dati dei blocchi su varie piattaforme di messaggistica, come Kafka e RabbitMQ, per poi consumarli da un’altra applicazione.

Abbiamo anche iniziato con lo stesso schema di database utilizzato da db-sync. Questo approccio si è rivelato utile durante lo sviluppo parallelo dell’explorer della Fondazione, in quanto ha permesso al backend dell’explorer di utilizzare dati reali per i test. Tuttavia, ha comportato anche sfide di progettazione per Ledger Sync, poiché ci siamo discostati dall’approccio Domain Driven Design e non abbiamo creato uno schema costruito ad hoc per la prima versione di Ledger Sync. Sebbene lo schema del database di db-sync serva allo scopo, non supporta l’architettura scelta e l’obiettivo della parallelizzazione durante l’elaborazione dei dati di Ledger Sync. Stiamo quindi lavorando alla progettazione di un nuovo schema per sostituire quello attuale.

Inoltre, la maggior parte delle recenti aggiunte al codice sorgente include il supporto per la Conway era in Yaci. Questo aggiornamento consente a Ledger Sync, così come a tutti gli altri strumenti basati su Java, di lavorare con l’ultima versione del ledger e del mini protocollo di rete.

Il team di ingegneri della Fondazione ha anche avviato un flusso di lavoro per implementare l’elaborazione parallela di blocchi multipli e transazioni in blocchi singoli durante il processo di sincronizzazione iniziale. La parallelizzazione di questi calcoli non è semplice, poiché è necessario tenere conto delle dipendenze tra gli UTxO, riducendo di conseguenza le prestazioni ottenute dalla parallelizzazione. Inoltre, gli sforzi di sviluppo in corso includono l’offerta di blueprint per ospitare Ledger Sync in vari scenari di distribuzione, come in configurazioni basate su Kubernetes o semplicemente tramite docker-compose.

La strada da percorrere

Oltre alle sue caratteristiche tecniche, Ledger Sync è accompagnato dall’impegno della Cardano Foundation a fornire una manutenzione continua e a gestire il repository come progetto open source. Oltre al framework come libreria e strumento in sé, questo sforzo mira a collaborare con i gruppi della comunità, cercando di definire uno standard e una potenziale implementazione di riferimento per le API di dati decentralizzate in cui Ledger Sync potrebbe essere utilizzato come livello di dati sottostante.

Un ulteriore obiettivo è quello di fornire un’API di dati in hosting che garantisca alta disponibilità, accuratezza e correttezza con un modello di supporto professionale. Garantire ciò risponderebbe alle esigenze di organizzazioni e imprese, rendendo più facile l’implementazione di soluzioni blockchain senza soluzione di continuità e favorendo così una maggiore adozione da parte delle imprese. Una simile impresa, tuttavia, richiede l’allineamento e la collaborazione con i progetti esistenti. Solo così sarà possibile sfruttare appieno la capacità dell’ecosistema Cardano già esistente, garantendo al contempo un approccio che supporti la diversità dei modelli di business emergenti.

La Cardano Foundation incoraggia tutti a provare Ledger Sync e a confrontarsi con il nostro team tramite Discord o inviando una richiesta di funzionalitĂ  o una segnalazione di bug nel repository Ledger Sync. Saremo lieti di ricevere il vostro feedback e i vostri contributi.

fonte: Accessing Cardano Blockchain Data with Ledger Sync