Il cuore tecnologico: IdaNode

Scrypta
3 min readApr 23, 2021

Il viaggio attraverso i meandri dell’infrastruttura blockchain di scrypta è complesso ma non impossibile. Esistono tante piccole innovazioni in cui è stato teorizzato prima e realizzato poi un cambio di paradigma.

Nello scorso insight, che ti invito a leggere qualora tu ancora non l’avessi fatto, abbiamo parlato della proof of stake, oggi scendiamo ancora di più nel dettaglio parlando degli IdaNode.

Un IdaNode è sicuramente la tecnologia più importante sviluppata da Scrypta. È il cuore di tutte le operazioni di scrittura e lettura dei dati, nonché la principale fonte di dati per le dApp.

IdaNode è un’applicazione NodeJS scritta in TypeScript con una moltitudine di funzionalità:

  1. Blockchain explorer: tiene traccia di tutte le transazioni e di tutti i blocchi, può essere usato al pari di un block explorer visuale.
  2. Relay: viene usato dai client (Scrypta-Core) per inviare le transazioni al network.
  3. Data explorer: serve da interfaccia per la lettura delle informazioni scritte sulla blockchain; questa è una delle funzionalità più importanti per lo sviluppo di dApp.
  4. IPFS: serve da interfaccia per il file system distribuito (InterPlanetary File System), utile per caricare e scaricare i dati.
  5. Replica: IdANode è la principale replica di tutte le informazioni e di tutti i file caricati sulla Blockchain di Scrypta.
  6. Wallet: può anche funzionare da “client”, ovvero può compiere le stesse operazioni dei client scrypta-core, semplicemente richiamando delle API e passando le informazioni necessarie.
  7. Trustlink: le operazioni relative ai Trustlink sono gestite internamente all’IdANode, tra cui la creazione e la scrittura di informazioni da parte di un Trustlink.
  8. Smart Contract: permette di eseguire del codice esterno grazie alla virtual machine interna.
  9. P2P Network: permette la comunicazione istantanea tra i vari client collegati attraverso.

Panoramica di funzionamento

Il primo script che viene chiamato è il file Index.ts , questo file verifica che il wallet ed il database siano raggiungibili, in caso contrario si preoccupa di avviarli ed attendere finchè non lo siano. Questo sistema garantisce un certo grado di automazione nel caso in cui qualche processo dovesse interrompersi inaspettatamente.

Dopo aver verificato che tutto sia raggiungibile, lo script inizia a controllare che le collezioni e gli indici siano esistenti, in caso contrario inizializza il database.

Dopo di che, se nel .env il parametro SYNC è true inizia a sincronizzare tutta la blockchain e tutti i dati inseriti all’interno.

Contemporaneamente l’applicazione Express serve le API, che saranno immediatamente disponibili, non importa se il sync è completo. Chiaramente in questo caso il set di dati disponibili non corrisponderà all’ultimo blocco.

L’applicazione Express è definita nel file App.ts e da lì si possono evincere tutte le varie chiamate. Queste verranno analizzate nei capitoli successivi.

Progressive Data Management

Questi endpoint rappresentano il cuore delle funzionalità degli IdANode. La scrittura, ma soprattutto la lettura, delle informazioni scritte sulla blockchain rappresentano le due funzionalità chiave dello sviluppo di qualsiasi dApp.

Ricordiamo che la scrittura di dati arbitrari è permessa grazie all’ OP_RETURN, che permette di inserire 8000 byte di dati su qualunque transazione. È importante capire che gli output marcati con OP_RETURN sono delle transazioni non spendibili, infatti vengono spese le sole fee di 0.001 LYRA per ogni transazione, ovvero per ogni 50 kilobyte.

Se le dimensioni del dato che si vuole scrivere superano gli 50000 byte, l’IdANode suddivide i dati in pezzi da 49994 byte e usa i primi 3 byte e gli ultimi 3 byte per creare un legame tra dati sequenziali. In particolare i primi 3 byte vengono legati alla transazione precedente e gli ultimi 3 a quella successiva. In questo modo gli IdANode riescono a ricostruire le informazioni scritte su più transazioni.

Per avere contezza di tutta la documentazione tecnica consulta qui la wiki.

Per non perderti alcun aggiornamento seguici su:

TelegramTwitterLinkedinDiscordFacebook

--

--