Le nuove librerie client IOTA: Harder, Better, Faster, Stronger

Annunci 3 mar 2021

Nel corso degli anni gli di sviluppatori nel nostro ecosistema hanno utilizzato le librerie client per integrare IOTA nelle loro applicazioni. Disponibili in molti linguaggi di programmazione diversi, sia in progetti ufficialmente supportati che quelli guidati dalla comunity, hanno reso possibile l'utilizzo del Tangle IOTA in molti progetti: Dai dispositivi IoT che utilizzano la libreria C alle applicazioni web in Node.js, Go o Python.

All'inizio del 2020 sono iniziati i piani per migliorare questa esperienza con gli insegnamenti degli anni passati.

È stato elaborato un piano solido ed è stato deciso che il rilascio di Chrysalis, incentrato su IOTA production ready e facile da usare, rende il momento ideale per sostituire le librerie esistenti e andare avanti con una soluzione più semplice da usare, più robusta, sostenibile e standardizzata, che si sta introducendo ora, alla luce della "Nuova Alba" di IOTA.

I principi fondamentali delle nuove librerie

Dopo aver lavorato con le librerie client esistenti per diversi anni ed aver supportato innumerevoli sviluppatori della comunità con i loro progetti, erano abbastanza chiari gli aspetti che si potevano migliorare.

Alcuni feedback ricorrenti erano affermazioni come "Ci sono troppe cose che devo imparare su IOTA prima di poter iniziare" o "La caratteristica X è supportata solo nel linguaggio Y".

Sono state raccolto tutte le esperienze ed il feedback della comunità e delle imprese e si è arrivati ad una serie di principi fondamentali per le nuove librerie client:

Bindings, un'unica fonte di verità

Fino ad ora ogni lingua ha avuto il proprio set di funzioni IOTA supportate e modi di eseguire certi compiti. Questo potrebbe a volte portare a confusione tra diverse implementazioni ed era chiaramente sub-ottimale.

Con le nuove librerie è stato deciso che ci dovrebbe essere una sola implementazione di riferimento per le librerie client (è stato scelto Rust per questo) e tutte le altre implementazioni dovrebbero seguire questa implementazione di riferimento in termini di denominazione e funzionalità.

Per far rispettare questo e per utilizzare le caratteristiche di sicurezza e le prestazioni di Rust è stato deciso che le nuove librerie dovrebbero utilizzare il riferimento a Rust attraverso i binding per assicurare lo stesso esatto comportamento e la stessa esatta funzionalità in qualsiasi lingua supportata. Ciò significa che potete effettivamente utilizzare le librerie Rust direttamente dal vostro linguaggio preferito nella vostra sintassi preferita, portando la potenza e le prestazioni della libreria basata su Rust nel vostro linguaggio di riferimento. Al momento sono disponibili i binding per Node.js e Python e si sta attivamente sviluppando ulteriori binding per Java e altri linguaggi.

Facile da usare, ma avanzato quando serve

Le librerie precedenti sono state create con la massima flessibilità in mente. Letteralmente ogni opzione disponibile nel protocollo poteva essere usata dai client, ma questo significava anche che bisognava avere conoscenze approfondite su come funziona il protocollo stesso prima di poterle usare al meglio.

Con Chrysalis è stato deciso di migliorare questa esperienza e di proporre il maggior numero possibile di impostazioni di default. In precedenza si doveva fornire manualmente l'URL del nodo, convertire/codificare la transazione, impostare opzioni come "minimum weight magnitude" (MWM) e "depth" prima di poter utilizzare le librerie. Nella nuova versione, tuttavia, questi sono tutti forniti di default sotto il presupposto che si vuole lavorare con la rete principale, utilizzando i parametri predefiniti per la rete principale e che si stanno codificando i dati in (UTF-8) byte. Questo si traduce in una libreria molto più facile da usare per tutti, anche se non avete mai lavorato oprima con IOTA.

Se non si fornisce un argomento specifico, viene utilizzato quello di default; se non si desidera il comportamento di default è possibile sovrascrivere questo comportamento per rendere possibili anche tutti i casi d'uso avanzati. Questo permette di offrire una nuova libreria che è allo stesso tempo facile da usare e ha tutte le funzionalità integrate di cui potreste aver bisogno.

Helper functions

Ci sono alcuni schemi durante lo sviluppo con IOTA che sono abbastanza comuni; per esempio trovare un nodo pubblico da usare. Questo era un lavoro manuale, ma con le nuove librerie client si può semplicemente dire di usare 'mainnet' o 'testnet' e troverà automaticamente un nodo pubblico sincronizzato per voi attraverso la nostra helper function. Un'altra bella funzione di aiuto offerta è l'astrazione degli eventi.

In passato si doveva usare una libreria separata di terze parti per connettersi al feed MQTT/ZMQ dei nodi per gli eventi, ora si ha semplicemente la possibilità di ascoltare gli eventi direttamente dalle librerie client fornendo la propria funzione di callback se un evento viene attivato.

Questi e altri helper sono già disponibili per l'uso in questo momento con le nuove librerie client che portano un altro livello di convenienza all'esperienza dello sviluppatore IOTA.

Una libreria wallet per domarli

In precedenza ogni implementazione IOTA che gestiva i token IOTA faceva la propria implementazione utilizzando le librerie client di base che è abbastanza di basso livello. Questo era un bel po' di lavoro e poiché ogni implementazione è diversa, a volte risultava in implementazioni errate.

Per rimediare a questo problema una volta per tutte è stata introdotta un'altra nuovissima libreria client, wallet.rs. Wallet.rs è essenzialmente un wallet programmabile che si consiglia di utilizzare per ogni implementazione che gestisce token IOTA. Questa libreria statica si prende cura di tutto per voi, comprese cose come la sincronizzazione e la sicurezza. Wallet.rs è già integrato nel nuovo wallet Firefly, il wallet da riga di comando e il faucet testnet, e permette a qualsiasi sviluppatore di implementare un proprio wallet in cui i componenti fondamentali critici sono gestiti dalla libreria.

Alcuni dei punti salienti di wallet.rs sono:

  • È stateful, quindi veloce da usare anche se si hanno molti indirizzi e conti
  • Puoi creare tutti gli account che vuoi con le loro opzioni; Gestisci sia gli account di prova che quelli della mainnet in una singola configurazione di wallet.rs se lo desideri
  • È sicuro per default, utilizzando Stronghold per la gestione dei segreti
  • Inviare e ricevere fondi è facile, se un reattach è necessario lo gestirà per voi
  • Il backup ed il recupero dello stato è una caratteristica integrata

Gli stessi principi che si applicano alla libreria principale si applicano anche a wallet.rs. La libreria è facile da usare con impostazioni predefinite ed ha bindings per Node.js, Python e Java con altri potenziali linguaggi da aggiungere in seguito.

Altre librerie

Indipendentemente da quanto piaccia il nostro nuovo approccio, non è una soluzione ideale in ogni possibile situazione. Per questi casi abbiamo anche altre librerie disponibili, ma con funzionalità più limitate:

Librerie C per dispositivi a bassa potenza

Il C è un linguaggio a basso livello, altamente performante, usato molto nei dispositivi embedded con risorse limitate. A causa di alcune delle limitazioni che vengono con i binding di Rust per i dispositivi embedded abbiamo deciso di creare comunque una libreria separata per C. Questa libreria gestisce tutte le interazioni di base, ma non offre funzionalità simili a wallet.rs o la maggior parte delle funzioni di aiuto di iota.rs.

Libreria nativa Go e TypeScript

Sono offerte anche librerie native in Go e TypeScript che non utilizzano i binding di Rust. Questo ha a che fare con il fatto che era già necessario usare queste librerie prima che iota.rs fosse disponibile. Stiamo considerando di offrire i binding per entrambi i linguaggi in una fase successiva, ma queste librerie possono già essere utilizzate se si desidera utilizzare la tecnologia IOTA utilizzando Go o in un browser web.

Guarda il video sulle nuove librerie client!

Conclusione

Con le nuove librerie client si porta un livello completamente nuovo di usabilità, flessibilità, prestazioni e professionalità all'ecosistema IOTA rendendo una vera gioia lavorarci. Sono disponibili fin d'ora per essere utilizzate sul testnet Chrysalis e sostituiranno le librerie esistenti una volta che sarà lanciato Chrysalis su mainnet.

La libreria client che include i binding può essere trovata qui, con la documentazione iniziale qui. Per la libreria del portafoglio si veda il repository wallet.rs su GitHub e la relativa documentazione iniziale.

Se avete delle domande, sentitevi liberi di unirvi al Discord di IOTA e chiacchierare con i membri della IOTA Foundation.


Segui la IOTA Foundation sui canali ufficiali per rimanere aggiornato

Discord | Twitter | LinkedIn | Instagram | YouTube


Il testo originale in lingua inglese si trova qui: https://blog.iota.org/the-new-iota-client-libraries-harder-better-faster-stronger/


Se avete trovato utile la mia libera traduzione, accetto volentieri delle donazioni 😉

IOTA:
iota1qrpakkq2uurgd8lyulcau3ntnwfwav64saakl20kz8pgu52tewn7gvr2aqr
BTC:
36yzaypPy6qmNnFGVTBsRPXaVdFbruFSMm

Non garantisco nulla e mi libero da ogni responsabilità.

Tag

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.