Che cos’è una DApp (app decentralizzata)
Una DApp è un’applicazione decentralizzata.
A differenza delle comuni app, come il messenger istantaneo WhatsApp, le DApp non sono gestite, mantenute o ulteriormente sviluppate da un singolo fornitore.
Se WhatsApp fosse una DApp, non sarebbe gestita solo da Facebook. Facebook ha sempre la possibilità di modificare il software dell’instant messenger secondo le proprie idee.
Dove sono esattamente le differenze tra app e DApp?
Per cosa sono state sviluppate le DApp? Come funzionano?
Di questo e molto altro parliamo in questa guida.
DApp: quattro criteri di definizione
Il software deve soddisfare quattro criteri per essere definito DApp.
Deve:
- essere open source,
- essere basato su una blockchain,
- offrire token crittografati
- avere un meccanismo che generi questi token.
Come si vedrà, questi quattro criteri sono strettamente correlati.
Criterio 1: open source
Un software open source ha un codice sorgente liberamente accessibile.
Il codice sorgente è un software scritto in uno specifico linguaggio di programmazione ed esiste come testo scritto; si può affermare che sta ad un’applicazione come il DNA sta ad un topolino.
Se si modifica qualcosa nel codice sorgente, le funzioni del programma informatico cambiano. Proprio come ad un topo cresce un orecchio sulla schiena quando gli scienziati cambiano qualcosa nel suo DNA.
Un software liberamente accessibile può essere visualizzato, riprogrammato e utilizzato liberamente da terzi, oltre che dagli sviluppatori.
Una DApp deve avere un codice sorgente accessibile.
Inoltre, questo software deve operare in modo autonomo. Non c’è un’autorità centrale, come ad esempio un amministratore di sistema, che decide da solo come deve essere il futuro sviluppo della DApp.
Piuttosto, il protocollo con cui viene registrato il sorgente deve adattarsi alle modifiche proposte per lo sviluppo futuro o alle reazioni del mercato.
Tutti gli sviluppi all’interno del programma devono essere decisi dal consenso degli sviluppatori.
Criterio 2: blockchain
Per soddisfare la definizione, tutte le DApp devono memorizzare dati, relazioni e codice sorgente su una blockchain decentralizzata (DApp blockchain).
Una blockchain è un registro distribuito che gira su molti computer diversi collegati in rete tra loro.
A differenza di WhatsApp, dove l’instant messenger è gestito da una centrale dati, le DApp funzionano in modo decentralizzato. Questo fa si che non possano essere violate.
Se l’intero centro dati di WhatsApp viene manomesso, WhatsApp non funziona più e i dati possono essere rubati e, nel peggiore dei casi, utilizzati in modo improprio.
Questo non è possibile con una DApp perché il suo codice sorgente è memorizzato su una blockchain e quindi su molti computer diversi e interconnessi.
Per violare una DApp, gli aggressori dovrebbero attaccare contemporaneamente ogni singolo computer della rete, decifrare la crittografia della blockchain e quindi modificare il codice sorgente della dApp.
Questo è quasi impossibile, ed è per questo che la probabilità di hackerare una DApp è prossima allo zero. La memorizzazione del codice sorgente su una blockchain decentralizzata, ma comunque visibile pubblicamente, riduce le possibilità di attacco.
Il codice sorgente di un software è reso disponibile solo a sviluppatori selezionati. Questo perché solo gli sviluppatori che possiedono i cosiddetti token sono autorizzati a modificare il codice sorgente.
3° criterio: token crittografati
I token crittografati sono, tra l’altro, parte di una blockchain crittografata. Cosa sia esattamente un token non è così facile da capire.
Un token è un uso definito di un termine in un contesto definito. I token crittografati sono unità digitali che rappresentano una copia di un record sensibile su una blockchain.
Quando i miner generano i token Bitcoin, operano con una copia di un record di dati della blockchain Bitcoin.
Lo scopo è che da un lato vengono ricompensati per il mining di Bitcoin, cioè la produzione di BTC, risolvendo funzioni hash, e dall’altro non possono hackerare la blockchain.
Ogni token rimane tale finché diversi miner, attraverso una rete peer-to-peer, non hanno confermato una transazione sulla blockchain.
Scendendo a un livello semplice, Paul può inviare a Marie un Bitcoin. Paul invia il Bitcoin direttamente all’indirizzo del portafoglio di Marie. Il Bitcoin, o token, viene ora registrato sulla blockchain insieme agli indirizzi del mittente e del destinatario.
Nella fase successiva, i miner verificano le condizioni della transazione. Se in molti giungono alla stessa conclusione, la transazione è realmente avvenuta. In questo modo non è necessaria un’autorità centrale per effettuare una transazione.
Inoltre, in questo modo Paul non può riprogrammare a piacimento il suo token, cioè l’importo che invia in Bitcoin.
I token servono proprio a questo. Non modificano direttamente le informazioni su chi ha inviato quanto a chi sulla blockchain, ma rappresentano una copia crittografata dei dati che viene controllata da diversi miners prima di essere integrata nella blockchain.
In questo modo, gli stessi miner possono essere ricompensati e le transazioni false o gli attacchi alla blockchain possono essere evitati in modo molto efficiente.
4. Generazione dei token
Le DApp devono utilizzare un meccanismo per poter generare token crittografati in modo che i miner possano ottenere una ricompensa.
Bitcoin utilizza l’algoritmo SHA-256, chiamato algoritmo proof-of-work, per estrarre i Bitcoin.
I minatori possono semplicemente scaricare il software Bitcoin e mettere a disposizione la loro potenza di calcolo per effettuare l’hash dei dati delle transazioni in modo che possano essere memorizzati in forma criptata sulla blockchain di Bitcoin.
I miner costituiscono la spina dorsale della rete Bitcoin. Senza di loro, la rete non potrebbe funzionare.
Tre classi di DApp
Questi quattro criteri devono essere soddisfatti perché un’applicazione possa essere chiamata DApp.
Inoltre, esistono tre classi di DApp. Esse sono:
- DApp che gestiscono una propria blockchain.
- DApp che utilizzano una blockchain di tipo 1.
- DApp che utilizzano il protocollo di tipo 2.
Le tre classi si basano l’una sull’altra dal punto di vista logico.
A titolo di esempio, si consideri la criptovaluta Ethereum. Ethereum soddisfa i quattro criteri di una DApp. Il protocollo di Ethereum è open source, Ethereum ha una propria blockchain, utilizza token crittografati e ha un meccanismo di generazione di token.
Ethereum offre i cosiddetti smart contract. Si tratta di contratti digitali che sono programmati con condizioni fisse e che soddisfano automaticamente le condizioni contrattuali concordate quando queste sono soddisfatte.
Ciò comporta, tra l’altro, il vantaggio di poter escludere completamente gli errori umani nella stipula di un contratto.
Tramite i contratti intelligenti, sarà possibile offrire le proprie DApp. Le DApp Ethereum sono, ad esempio, R3, un consorzio di blockchain, GNOSIS, un’applicazione per mercati di previsione decentralizzati, o Microsoft Azure, un blockchain-as-a-service (SaaS).
Questi tre esempi sono classificati come tipo 2 perché utilizzano la blockchain di Ethereum, ovvero il tipo 1. Un’applicazione che utilizza solo l’infrastruttura del Cloud Microsoft Azure può essere classificata come tipo 3.
Ne sono un esempio Heineken, Real Madrid o Absolut, che gestiscono un’applicazione basata su Microsoft Azure.
Programmare da soli le DApp
Le DApp si programmano come le altre applicazioni.
Per programmare le DApp, gli sviluppatori devono naturalmente conoscere anche la tecnologia blockchain. La DApp e il suo codice sono memorizzati nella blockchain.
Il linguaggio di programmazione Solidity è particolarmente utilizzato.
Anche Vyper può essere utilizzato per lo sviluppo, soprattutto su Ethereum.
Framework come Embark, Truffle aiutano a sviluppare contratti intelligenti e DApp.
Anche Etherlime ed ether.js sono spesso utilizzati per lo sviluppo di DApp.Entrambi i linguaggi possono essere utilizzati anche per sviluppare smart contract.
Altri strumenti e linguaggi di programmazione sono disponibili nella pagina dell’elenco degli strumenti per sviluppatori di Ethereum.
Oltre ai linguaggi di programmazione e ai framework, anche gli ambienti di sviluppo svolgono un ruolo importante.
Anche in questo caso esistono molti strumenti open-source gratuiti con i quali è possibile sviluppare DApp senza costi.
Microsoft fornisce un’estensione di Solidity per Visual Studio Code. L’estensione “ETHcode” supporta lo sviluppo di DApp in Ethereum.
Microsoft offre anche il Blockchain Development Kit per Ethereum. Anche in questo caso è possibile sviluppare DApp.
Con l’ambiente di sviluppo basato sul web Remix è possibile sviluppare smart contract e DApp senza installazioni locali.
Esempi di DApp note
Ecco alcuni esempi di delle migliori DApp:
- UbiTok.io – Piattaforma di scambio per i token di Ethereum;
- Decentraland – Piattaforma di realtà virtuale;
- Gnosis – Piattaforma per le previsioni;
- CryptoKitties – Gioco online con gatti virtuali;
- GotCHA – Gioco semplice ed equo per vincere ETH;
- SportCrypt – Piattaforma di scommesse peer-to-peer;
- Leeroy – Piattaforma di social media;
- CryptoFace – Crea il tuo avatar personale;
- xcontract – Interfaccia webapp per smart contract;
- Augur – Previsione di mercato decentralizzata;
- BlockCAT – Crea smart contract tramite un’interfaccia visiva;
- Golem – Il computer DApp (supercomputer globale)
Quando si utilizza una piattaforma DApp, gli sviluppatori possono sviluppare le proprie DApp utilizzando la blockchain della piattaforma.
Le diverse piattaforme di solito si concentrano su un elenco di strumenti e linguaggi di programmazione che vengono utilizzati principalmente per sviluppare DApp nella piattaforma.
Anche gli strumenti per lo sviluppo di DApp sono forniti da o per la piattaforma.
Esempi noti di piattaforme DApp sono Ethereum, Neo, Lisk ed Eos.
DApp vs app: vantaggi e svantaggi
In futuro è prevedibile che ci saranno sempre più DApp e sempre più DApp Store come dAppRadar.
In ogni caso le app tradizionali non perderanno la loro ragion d’essere, poiché non tutti i servizi e le funzioni possono essere implementati nella blockchain.
È perfettamente logico che gli sviluppatori considerino i vantaggi e gli svantaggi quando vogliono programmare una nuova applicazione.
Vale quindi sicuramente la pena di prendere in considerazione lo sviluppo di un’applicazione come DApp.
Sono inoltre disponibili numerose piattaforme per queste possibilità, con le quali è possibile utilizzare blockchain pubbliche e private, ad esempio anche tramite Hyperledger.
Il vantaggio principale delle DApp è che possono essere utilizzate in modo decentralizzato sui nodi della
blockchain. Questo rende le DApp difficilmente hackerabili, altamente sicure, trasparenti e protette dalla censura e dall’interferenza delle autorità o di altre entità esterne.
Anche il codice della DApp è disponibile nella blockchain ed è quindi molto robusto. Poiché la DApp è utilizzata su migliaia di nodi della blockchain, anche in questo caso i guasti sono piuttosto improbabili. Tutti i partecipanti hanno l’app e i suoi dati sul dispositivo finale.
Questo è difficilmente possibile in una struttura server-client. Grazie alla memorizzazione decentralizzata dei dati su tutti i partecipanti alla rete, non sono necessari server.
Non sono nemmeno necessari intermediari che fungano da istanza tra i partecipanti.
Ciò consente il trasferimento di beni. Prendendo come esempio il Bitcoin, non sono necessarie banche per trasferire i Bitcoin.
La blockchain stessa è l’istanza sovraordinata e la blockchain è costituita da migliaia di nodi indipendenti.
Lo svantaggio delle DApp, tuttavia, è che sono limitate dalle prestazioni della blockchain. Una componente importante delle DApp sono le transazioni che una blockchain può eseguire.
In questo caso, gli sviluppatori devono già prestare attenzione alla blockchain da utilizzare quando progettano una DApp.
In ogni caso, le DApp non possono fornire le prestazioni attualmente possibili con le app tradizionali.
Inoltre mentre le app tradizionali funzionano anche offline, le DApp richiedono una connessione a Internet e alla blockchain.
- Meno versatile
- Decentralizzate
- Non sono necessari server
- Non servono intermediari
- Prestazioni legate alla blockchain
- Funzionano solo online
- Più versatile
- Centralizzate
- Necessari server
- Necessari intermediari
- Alte prestazioni
- Funzionano anche offline
Conclusione
Da quando sono nate, è emerso un intero universo di DApp, particolarmente efficiente, economico e sicuro grazie alla tecnologia sottostante.
Tuttavia, lo sviluppo di applicazioni decentralizzate è ancora agli inizi.
FAQ
Che cosa significa dApp?
È una sigla che sta per Applicazione Decentralizzata, cioè creata, sviluppata e gestita senza un’autorità centrale.
Come funziona una dApp?
Il funzionamento di una DApp avviene su blockchain tramite dei token ed è regolato da smart contract.
Quali sono i vantaggi di una dApp?
Tra i vantaggi delle DApp ci sono la decentralizzazione e la possibilità di fare a meno di server e intermediari.
Come si crea una dApp?
Per programmare una DApp bisogna conoscere i linguaggi di programmazione e saper utilizzare appositi software.