Opzioni per implementare un’API per la vostra dApp Web3

Introduzione

I progetti Web3 sono più simili alla blockchain quando sono completamente decentralizzati, ma in alcuni casi è necessario creare un’API centralizzata per la propria applicazione a causa delle limitazioni della blockchain. Molti progetti di successo si affidano alle loro potenti API per essere in grado di rispondere alle centinaia di migliaia di richieste al minuto. Ad esempio, Opensea non sarebbe così veloce se non avesse il suo database.
In questo articolo, accennerò ad alcune limitazioni della blockchain e poi presenterò i modi per implementare un’API per la vostra dApp.

Perchè abbiamo bisogno di una API ??

Leggere i dati dalle blockchain richiede molto tempo. Inoltre, alcune applicazioni hanno una logica complessa e l’implementazione di questa logica nei contratti intelligenti aumenta il consumo di gas.
Un’interfaccia di programmazione delle applicazioni (API) definisce una modalità di comunicazione tra programmi informatici. Creando un’API per la vostra dApp potrete recuperare i dati richiesti da essa invece di interrogare l’intera blockchain.

Ma dunque che cosa sono le API ??

Le API (Application Programming Interface) sono un insieme di protocolli e strumenti per la creazione di applicazioni che interagiscono con un determinato sistema.
In pratica, le API servono a consentire la comunicazione tra due sistemi differenti.

Nel caso della Blockchain, le API possono essere utilizzate per consentire a un’applicazione di interagire con la catena di blocchi e di utilizzare i dati in essa contenuti.
Ad esempio, un’applicazione potrebbe utilizzare le API di una Blockchain per verificare la validità di una transazione o per recuperare il saldo di un indirizzo specifico.

Le API possono velocizzare l’utilizzo della Blockchain in diversi modi. Innanzitutto, consentono di semplificare l’interazione con la catena di blocchi, rendendo più facile per gli sviluppatori creare nuove applicazioni basate sulla Blockchain. Inoltre, le API possono essere utilizzate per creare “ponti” tra diverse Blockchain, consentendo ai dati di essere condivisi e utilizzati tra più piattaforme diverse.

Inoltre, le API possono essere utilizzate per creare servizi “on demand”, ovvero per fornire accesso ai dati della Blockchain solo quando sono richiesti, evitando di dover fare una copia di tutti i dati in un database locale e quindi rendendo più efficiente l’utilizzo della memoria.

Infine, le API possono essere utilizzate per creare servizi di “abstracting”, ovvero per nascondere la complessità della Blockchain agli utenti finali, rendendo più facile per loro utilizzare le applicazioni basate sulla Blockchain.

In sintesi, le API rappresentano un modo semplice e veloce per gli sviluppatori di creare applicazioni che interagiscono con la Blockchain, rendendo più facile per gli utenti finali utilizzare queste applicazioni e facilitando la condivisione dei dati tra diverse piattaforme basate sulla Blockchain.

GraphQL – un linguaggio per interfacciarsi con la Blockchain

GraphQL è un linguaggio di query progettato per fornire un modo semplice ed efficiente per i clienti di interagire con i dati di un server.
GraphQL consente ai clienti di richiedere esattamente i dati di cui hanno bisogno, e solo quelli, evitando di dover scaricare tutti i dati presenti in un database o in una risorsa.

Per utilizzare GraphQL per interagire tra la Blockchain Ethereum e IPFS (InterPlanetary File System), è necessario prima di tutto creare un server GraphQL che faccia da intermediario tra le due piattaforme. Questo server dovrà essere in grado di connettersi alla Blockchain Ethereum utilizzando una libreria come Web3.js, e di utilizzare le API di IPFS per accedere ai file presenti sulla rete.

Una volta creato il server GraphQL, sarà possibile utilizzare GraphQL per eseguire query sui dati presenti sulla Blockchain Ethereum e su IPFS.

Ad esempio, sarà possibile utilizzare GraphQL per richiedere il saldo di un indirizzo specifico sulla Blockchain Ethereum o per ottenere il contenuto di un file su IPFS.

Per eseguire queste query, sarà sufficiente inviare una richiesta HTTP POST al server GraphQL con il corpo della richiesta in formato JSON contenente la query GraphQL. Il server GraphQL eseguirà quindi la query e restituirà i dati richiesti al client in formato JSON.

In sintesi, GraphQL consente di interagire con la Blockchain Ethereum e con IPFS in modo semplice e veloce, fornendo un modo efficiente per accedere ai dati di cui si ha bisogno senza dover scaricare tutti i dati presenti in un database o in una risorsa.

MORALIS

Moralis non è solo un indicizzatore, questa piattaforma fornisce molte soluzioni come API blockchain, API NFT, autenticazione web3, API token e API stream.
I prodotti di Moralis possono rispondere facilmente a molte delle vostre esigenze. In questo modo non sarà necessario implementare un’API o un indicizzatore da zero per avere un accesso veloce ai dati della blockchain.

In Moralis, potrete creare un database di eventi di smart contract e interrogarlo come vorrete.

Sviluppare una propria API

Questa è sempre un’opzione valida e che da pieno controllo sul codice e sulle azioni che si andranno a sviluppare. Dovrete però spendere molto tempo per sviluppare un’API che potrebbe comunque rivelarsi non buona come le opzioni precedenti.
Richiede maggiori conoscenze, studio e tempo di sviluppo.

L’aspetto positivo è che potete implementare e aggiungere funzionalità uniche per la vostra dApp. Gli indicizzatori di cui ho parlato nelle sottosezioni precedenti sono progettati per rispondere al maggior numero possibile di scenari diversi. Ma quando si crea un’API personalizzata, è possibile personalizzarla come si desidera.

Potete sviluppare l’API utilizzando qualsiasi linguaggio di programmazione, ma dovete tenere conto dei seguenti suggerimenti:

  • Integrazione della blockchain
  • Manutenibilità
  • Velocità
  • Strumenti disponibili

Conclusioni

Se volete sviluppare un’API per la vostra dApp o se non siete sicuri di quale delle opzioni disponibili sia la più adatta a voi, tenete sempre presente che anche utilizzando un indicizzatore potreste aver bisogno di sviluppare un’API personalizzata per tenere traccia di alcuni lavori che l’indicizzatore già pronto potrebbe non supportare.
Nelle prossime parti ci cimenteremo nello sviluppo di un’API per un semplice smart contract, quindi assicuratevi di seguire il blog per non perdervi i prossimi aggiornamenti!

Il web3 è sicuro, se sai quello che fai


Mentre ero affacendato nella preparazione del prossimo articolo su Bitcoin, e tutto il mondo che gli ruota attorno, mi sono imbattuto in un post Linkedin che recitava esattamente “Il web3 è sicuro, se sai quello che fai”.

Questo pensiero mi ha intrattenuto in una serie di pensieri articolati che proverò a sciorinare senza esprimere verdetti ma dando, come sempre, il mio parere personale.

Consapevolezza

I progressi tecnologici diventano veramente di massa nel momento in cui l’avanzamento delle nuove tecnologie si evolve talmente tanto da diventare quasi invisibile per cui il loro utilizzo si trasforma in uno standard in nuova gestualità a cui non dobbiamo più pensare. Oggi quasi chiunque ha familiarità con l’account di posta, con l’uso di diversi tool di messaggistica (su pc e smartphone) o anche l’uso di vari sistemi di pagamento tra carte di credito, pagamenti online o anche tramite App su smartphone e smartwatch.

Molta della tecnologia appena descritta fruisce dalle pagine web dei nostri browser che usiamo per comprare su Amazon, per scrivere messaggi su Whatsapp, per sbrigare una commissione amministrativa sui portali delle Regioni magari usando un sistema SPID e molto altro ancora. A tutto ciò che potremmo includere in quelli che sono ad oggi la base portante dei servizi web online su quello che viene chiamato WEB 2.0 si sono aggiunti e continuano ad aggiungersi nuovi servizi con nuove modalità che sono quelli che appartengono alla galassia del WEB 3.0, tra i quali spiccano certamente in pole-position le crypto, gli nft ed i metaversi.

Ma in molti servizi giornalistici/TG continuano a comparire i rischi di frode dati dalla poca conoscenza delle metodologie migliori per gestire i propri dati personali durante l’uso dei servizi online, per cui filoni come il Phishing sono ancora oggi una delle minacce più importanti per le frodi online, frodi che spaziano dal furto di identità online da rivendere nel DarkWeb fino al furto di username/password per l’accesso a servizi bancari, carte di credito e quant’altro.

Dunque sarebbe logico affermare che ci troviamo ancora in una fase di “studio” da parte della CriticalMass nell’imparare i metodi per un uso consapevole dei mezzi informatici, potremmo paragonarci all’inizio del ‘900 in cui l’uso dell’automobile iniziava a diffondersi ma ancora non esistevano molti sistemi di verifica e controllo per un uso intelligente e consapevole da parte dei neo possessori dell’auto, mancanza di segnaletica stradale, mancanza di semafori per un controllo dei flussi di marcia, mancanza dei sistemi di sicurezza e di divisione stradale tra il flusso dei pedoni e quello dei mezzi a 4 ruote etc…. In tutto ciò stiamo gia vivendo l’affiancamento delle tecnologie appartenenti al WEB 3.0 che porta con se sia la necessità di una maggiore conoscenza e consapevolezza da parte dell’utente ma anche di chi sta creando le nuove applicazioni. Infatti potremmo dire che mai come oggi i TEST ed il DEBUG delle Applicazioni web sono di vitale importanza.

I test sono una parte importante di qualsiasi progetto di sviluppo software, ma si sono rivelati particolarmente cruciali per il successo dei progetti Web3. Mentre con le app Web2 si possono verificare registrazioni errate o pagamenti falliti, i bug introdotti nello sviluppo delle app Web3 possono consentire agli utenti malevoli di sgonfiare il valore di un token coniando token in eccesso, modificare le regole di funzionamento di una DAO o persino congelare in modo permanente i fondi collegati a uno smart contract.

Con i progetti Web2, i bug possono essere risolti con semplici rami di correzione che vengono distribuiti prima che altri dati vengano corrotti o che importanti vendite vadano perse. Questo non è il caso di Web3: i bug in un’applicazione Web3 sono permanenti, poiché qualsiasi smart contract distribuito sulla blockchain è immutabile. Si può trovare una soluzione, ma una volta che il contratto è attivo diventa impossibile implementarla.

Possiamo realisticamente pensare di scrivere codice invulnerabile agli attacchi? L’idea di una sicurezza perfetta, anche nel Web3, è un’aspirazione impossibile ?!. Tuttavia, con test adeguati ed una maggiore conoscenza da parte di tutti gli attori, possiamo ridurre le superfici di attacco per i malintenzionati.

SAFER SMART CONTRACTS

Proverò ora ad introdurre un nuovissimo sistema di TESTING che potrebbe essere di aiuto nella gestione e verifica della stesura degli SmartContracts per Bitcoin, questo strumento si chiama CLARITY.

Clarity porta i contratti intelligenti in Bitcoin usando un linguaggio decidibile (che può essere deciso, cioè risolto, stabilito, determinato), il che significa che si può sapere con certezza dal codice stesso cosa farà il programma. Clarity è interpretato (non compilato) ed il suo codice sorgente è pubblicato sulla blockchain. Clarity offre così agli sviluppatori un modo sicuro per costruire contratti intelligenti complessi per la blockchain più sicura del mondo.

I progetti Clarity vengono creati con Clarinet (clarinet è un runtime di Clarity confezionato come strumento a riga di comando, progettato per facilitare la comprensione, lo sviluppo, il test e la distribuzione dei contratti intelligenti) sono dotati di un framework di test TypeScript integrato. Utilizzando questo framework è possibile distribuire i nostri smart contract su catene di test per eseguire le nostre varie funzioni su di esse. Questo ci permette di simulare funzioni pubbliche e di sola lettura e di verificare come accedono e modificano lo stato della catena.

Conclusioni

Dunque se una maggiore integrazione di sistemi per i test è fondamentale per una buona progettazione Web3, allora conoscere gli strumenti di test migliori è fondamentale per scrivere test ottimi e a copertura totale. Per il momento posso solo consigliare a coloro che sono interessati all’argomento di dare un’occhiata al materiale distribuito sullo spazio Github del progetto:

https://github.com/clarity-lang