Le DApp, o applicazioni decentralizzate, sono un tipo di applicazione il cui funzionamento si basa su una rete decentralizzata di nodi che interagiscono tra loro.
DApp è l'acronimo di “Decentralized Applications” o “Decentralized Applications”. Si tratta di un tipo di applicazione il cui funzionamento non dipende da punti di controllo o server centrali, bensì, funziona sulla base di una rete decentralizzata. Una rete in cui i suoi utenti hanno il pieno controllo del suo funzionamento. Le DApp consentono alle persone d'accedere a diversi servizi in modo sicuro. Queste applicazioni possono essere utilizzate su personal computer, smartphone e sono anche accessibili via web.
Per avere un'idea più chiara di cosa sia una Dapp, dobbiamo pensare ad una tradizionale App (applicazione/servizio). In questa categoria di app tradizionali abbiamo, ad esempio, YouTube, Facebook, Twitter o Instagram. In tutti questi servizi, i dati e le decisioni vengono prese su server centrali. Ciò consente all'azienda dietro questi servizi di intraprendere azioni di censura, modificare il comportamento o persino beneficiare o danneggiare solo determinati utenti, mettendo costantemente in discussione la neutralità e le condizioni di parità. Si comportano come dittatori, puoi solo fidarti che saranno "buoni".
L'origine
Il concetto di DApp non è una novità. Le prime DApp conosciute sono state viste nei protocolli di condivisione file come BitTorrent o DC ++. Entrambe le applicazioni sono sistemi di condivisione di file peer-to-peer con elevata resistenza alla censura. Tuttavia, la prima DApp ad aver utilizzato la blockchain è stata proprio Bitcoin; questo perché la sua struttura e il suo funzionamento descrivono con successo la prima DApp blockchain nella storia.
Tuttavia, non è stato fino al 2014, con la presentazione di Ethereum, il suo linguaggio Solidity e la sua capacità di realizzare smart contract È merito di questa triade, se le DApp in esecuzione su blockchain hanno iniziato a diventare molto popolari. Una situazione che può portare all'adozione massiva della tecnologia blockchain consentendo nuove forme d'interazione tra gli utenti e tra il mondo reale e quello virtuale.
Differenze tra una DApp e un'app tradizionale
Le DApp e le app tradizionali hanno molti elementi in comune, tuttavia, la loro differenza sta nel modo in cui interagiscono con questi elementi. Entrambi i tipi di applicazioni posseggono tre strutture di base che sono: il frontend, il backend e il livello di archiviazione dei dati.
Frontend
Il primo livello, il frontend, è l'interfaccia che gli utenti utilizzano per interagire con l'applicazione. In questo caso, sia le DApp che le App tradizionali possono utilizzare le vaste risorse grafiche esistenti per questo. Dalle interfacce web scritte in HTML5 a quelle più elaborate, in framework come Qt o GTK. Lo scopo di questo livello è semplicemente quello di dare all'utente la possibilità di interagire, ricevere e inviare informazioni all'applicazione che sta utilizzando.
BACKEND
Questo secondo livello fa riferimento alla logica principale dell'applicazione. In un'applicazione tradizionale, questa logica è centralizzata, a differenza delle DApp in cui è decentralizzata. In DApp, il backend è correlato a uno smart contract che viene eseguito su una blockchain, ad esempio Ethereum. In questo modo, uno smart contract ha una programmazione che garantisce il funzionamento della DApp. Poiché i contratti intelligenti sono visibili e pubblici, viene garantito un elevato livello di trasparenza e sicurezza. Gli utenti possono essere sicuri che DApp non farà nulla che non sia specificato nello smart contract.
Oltre a ciò, il backend è supportato dalle API (Application Programming Interface) e dalle funzionalità della blockchain; ad esempio, in Ethereum ci sono varie API per controllare l'interazione dell'utente con i livelli d'archiviazione o d'autenticazione.
Archivio dati
Infine, c'è il livello d'archiviazione. In un'applicazione tradizionale anche questo livello è centralizzato. Normalmente i dati vengono conservati sul computer dell'utente o su server controllati da terze parti. Questo modo di lavorare ha molti punti deboli. Un utente, ad esempio, potrebbe perdere le informazioni sull'applicazione se il suo computer viene danneggiato. Può anche accadere che i server s'interrompano o vengano bloccati. Queste azioni impedirebbero all'utente d'utilizzare correttamente l'applicazione o addirittura di perdere informazioni.
Ma in DApp, anche l'archiviazione dei dati è completamente decentralizzata. Ogni utente DApp memorizza una cronologia completa delle azioni eseguite sulla rete DApp; inoltre, le interazioni vengono memorizzate nella blockchain all'interno dei blocchi . Tutto questo avviene in modo crittograficamente sicuro, impedendo l'accesso non autorizzato da parte di terzi. In questo modo, se il computer o lo smartphone di un utente dovessero essere danneggiati, basterebbe utilizzare la DApp su un nuovo dispositivo per recuperare tutte le sue informazioni immagazzinate fino a quel preciso momento. Aggiungiamo anche che il livello di ridondanza e sicurezza con i dati aumenta man mano che aumenta il numero degli utenti delle DApp.
Come funziona una DApp?
Una DApp funziona in modo simile ad una rete blockchain. In questo caso, ogni utente DApp è un nodo all'interno della rete. Ciascun utente vigila sul corretto funzionamento e sulle operazioni svolte su tale rete.
Il canale di comunicazione utilizzato da DApp è la blockchain. In esso, viene lasciato un record di ogni operazione che passa attraverso lo smart contract controllato dalla DApp. L'accettazione o meno delle operazioni effettuate dagli utenti della DApp, è subordinata alla programmazione di detto smart contract. In questo modo, cerca di garantire che tutti i partecipanti agiscano nel quadro da esso specificato.
Il contratto intelligente in questo caso, è un punto intermedio che è responsabile di corroborare la validità di ogni interazione. Ogni volta che c'è una nuova operazione nella DApp, le informazioni sulla piattaforma vengono aggiornate in ogni nodo. Ciò garantisce che le informazioni siano memorizzate in ciascuno di essi. In questo modo, ogni utente contribuisce al mantenimento dell'applicazione con le risorse del proprio computer. Questa struttura garantisce inoltre che la piattaforma sarà sempre in servizio. Ciò è dovuto all'impossibilità di rimuovere tutti i nodi dalla rete contemporaneamente. Una situazione che può verificarsi a causa di un attacco informatico o per altri motivi come la censura.
A questo punto, le DApp fanno un grande passo avanti, perché quando lavorano e girano su una blockchain, godono delle sue capacità di sicurezza, privacy e persino di anonimato. Inoltre, garantiscono anche che i dati utilizzati dalla DApp siano accessibili solo dalla persona che ha originato tali informazioni. Con ciò gli utenti mantengono il controllo assoluto dei propri dati in ogni momento.
Funzionalità DApps
Sicurezza
Questa è una delle caratteristiche principali di DApps, grazie al fatto che funziona su una blockchain che utilizza una crittografia avanzata per proteggere i dati che gestisce. Questo primo punto garantisce che le informazioni possano essere viste solo da chi le ha generate e gli altri possono solo verificarne la validità o meno. In nessun momento, le informazioni originate da un utente sono visibili ad altri.
Inoltre, i dati trattati dall'applicazione sono in ogni momento in possesso dell'utente. Le DApp non memorizzano le informazioni nel cloud o in server esterni, questo riduce al minimo i rischi associati al furto d'informazioni private o alla vendita delle stesse da parte dell'azienda, violando così la privacy dell'utente.
Decentramento
Un'altra delle caratteristiche principali delle DApp è la loro decentralizzazione o la capacità di funzionare senza server centrali, che sono poi la stessa cosa. Per renderlo più chiaro, consideriamo il seguente esempio:
Facebook è uno dei social network più utilizzati al mondo. Con oltre 2000 miliardi di utenti, i suoi data center gestiscono un enorme carico di dati. A questo punto, mantenere la tua infrastruttura attiva e funzionante è un compito arduo; si sono verificati degli errori, che hanno portato la rete a non essere disponibile su scala globale. Tutto questo perché Facebook è un social network centralizzato.
Una DApp, invece, non ha questo punto di debole, grazie alla decentralizzazione. Ogni utente DApp ha una cronologia completa delle azioni eseguite nella DApp. Qualcosa come una copia globale di tutto ciò che è accaduto. Per questo motivo, dato che gira su una blockchain, è sufficiente che un solo utente sia attivo affinché la rete continui a funzionare senza problemi. In questo modo, è garantito che la DApp e la sua rete funzionino sempre e che non si verifichi quello che è successo a Facebook.
Open Source
Questa è un'altra caratteristica molto comune delle DApp. Il fatto che il codice sorgente sia disponibile garantisce un alto livello di trasparenza dell'applicazione; ciò è possibile perchè la community può sapere in ogni momento cosa sta facendo DApp. Consente inoltre audit della comunità, in modo che chiunque abbia le informazioni possa controllare il codice sorgente dell'applicazione, permettendo di migliorarlo e comunque di continuare il suo sviluppo nel caso in cui il progetto venga abbandonato dai suoi autori originari (fork).
Tutte le DApp mantengono pubblicamente il codice sorgente dei loro smart contract e delle altre parti dell'applicazione. In questo modo, chiunque può ispezionare il codice, migliorarlo o generare un nuovo software partendo da esso.
Eredità blockchain
Le DApp interagiscono sulla blockchain in cui viene eseguito il loro smart contract; ciò significa che ogni interazione nella DApp genera un'immissione di dati nella blockchain. Questi dati vengono archiviati in modo crittografico per aggiungere trasparenza e sicurezza. Tutte queste azioni possono essere riviste pubblicamente nel blockchain explorer.
Ma solamente le interazioni crittografiche possono essere viste, poiché tutti i dati sono archiviati crittograficamente in modo sicuro. Oltre a ciò, il fatto che una DApp funzioni su una blockchain significa che viene utilizzato un protocollo di consenso per verificare ogni interazione. Questo potrebbe essere la Proof of Work (PoW) o la Proof of Stake (PoS) o qualunque cosa scelga lo sviluppatore DApp. In questa maniera si cerca di garantire lo stesso livello di sicurezza applicabile alla blockchain su DApp.
Classificazione di DApps
Le DApp possono essere classificate in tre categorie, che sono:
Tipo I.
Questa classificazione include tutte quelle DApp che hanno la propria blockchain. Cioè, quelli che hanno la propria infrastruttura e non dipendono da alcuna blockchain per essere eseguiti. Al riguardo, Bitcoin è la prima DApp blockchain mai esistita. Lo stesso vale per Bitcoin Cash, Litecoin, Ethereum, Dash, Monero, fra le altre.
Tipo II
In questa classificazione troviamo quelle DApp che dipendono da una blockchain e dalle sue caratteristiche per funzionare. In questo caso, le DApp possono funzionare utilizzando i propri token o la blockchain su cui girano. Un esempio di questo caso è Golem.
Golem è una DApp che funziona sulla blockchain di Ethereum. È stato creata per consentire ai propri utenti d'affittare risorse informatiche per elaborare dati per usi diversi. Devi pensare a Golem come ad un supercomputer decentralizzato da cui possiamo affittare potenza d'elaborazione. Per raggiungere questo obiettivo, Golem ha un token ERC-20, il GNT (token di rete Golem). Questo token viene utilizzato per pagare gli utenti che noleggiano la loro potenza di calcolo e per altre attività all'interno della rete.
Tipo III
DApp di questo tipo utilizzano DApp di tipo II per il loro funzionamento. Generalmente, le DApp di tipo III utilizzano i token delle DApp di tipo II per svolgere le loro operazioni. Un esempio di queste DApp è Rete sicura. Safe Network fa affidamento a Omni Layer, una DApp di tipo II, per generare Safecoin, la propria criptovaluta. Questa criptovaluta viene utilizzata in Safe Network per eseguire tutte le operazioni all'interno di detta DApp.
Limitazioni delle DApp
Alcune delle limitazioni più importanti delle DApp sono le seguenti:
- Difficoltà a sfruttare appieno le potenzialità dell'hardware dei dispositivi degli utenti. Ciò è particolarmente vero per DApp eseguite da browser Web. Qualcosa che è dovuto al numero di livelli di astrazione e all'altissimo livello di esecuzione dei linguaggi di programmazione utilizzati.
- La complessità dell'applicazione può spesso rendere difficile il debug e la revisione della sicurezza. Questa situazione è particolarmente critica nella programmazione dei contratti intelligenti. Ciò è dovuto a una vulnerabilità in essi, può interessare tutti gli utenti DApp contemporaneamente.
- La crescita e il miglioramento delle DApp sono legati all'arricchimento dei miglioramenti all'interno delle strutture blockchain. Una DApp può avere uno sviluppo molto vivace, ma questo sarà rallentato se lo sviluppo della blockchain e dei suoi strumenti è scarso o inesistente. A questo punto, la correlazione evolutiva tra DApp e blockchain è simbiotica. Entrambi devono continuare il loro sviluppo per raggiungere obiettivi a lungo termine.
- Difficoltà nell'implementazione delle funzionalità necessarie per il corretto funzionamento delle DApp. Alcune DApp sono molto semplici nei loro requisiti di programmazione, altre non così tanto. Prendiamo, ad esempio, Golem DApp e il suo sistema di elaborazione decentralizzato. La principale difficoltà del progetto è orchestrare l'archiviazione dei dati elaborati e da elaborare all'interno della rete. Inoltre, un altro problema che presenta è la sincronizzazione durante l'esecuzione di processi di calcolo per un determinato compito assegnato ai nodi. Quanto descritto fa si che lo lo sviluppo di Golem sia un cammino in salita, ma è una sfida che gli sviluppatori hanno raccolto nella sua totalità.
Esempio di alcune DApp
CryptoKitties
Questo è stato uno dei primi giochi al mondo ad essere stato creato sulla base della tecnologia blockchain. CryptoKitties, riguarda la raccolta di "gattini virtuali unici". Ognuno di questi gattini ha caratteristiche e proprietà che li rendono diversi dagli altri. È proprio la loro estrema rarità, che dà loro valore e diventerebbe la criptovaluta del gioco. I gattini possono essere comprati e venduti, ottenendo così la loro proprietà in modo virtuale.
Oltre a questo, possiamo "allevare" gattini in CryptoKitties. Cioè, possiamo unire due gattini per ottenere una progenie genetica unica. che possiamo tenere, allevare in seguito o vendere per fare affari. CryptoKitties funziona sulla blockchain di Ethereum, è una DApp di tipo II.
NASH
Questa è una DApp di tipo II che gira sulla blockchain NEO. L'obiettivo di NASH è quello di eseguire un motore di corrispondenza off-chain per consentire scambi molto più veloci e complessi rispetto agli scambi decentralizzati esistenti.
Saturn Network
Saturn Network è uno scambio decentralizzato per il token trading ERC-20 o ERC-223. Funziona sulla base di una catena incrociata disponibile in Ethereum ed Ethereum Classic. Saturn Network offre un sistema di scambio rapido e semplice, poiché non è necessario compilare un KYC o creare un account.
Cani pazzi dal vivo
Crazy Dogs Liveè un sistema di gioco d'azzardo incentrato sulla creazione di una piattaforma trasparente, sicura e divertente per i suoi utenti. È rivolto alle corse di cani con innovative funzionalità di mining di scommesse e live streaming. Consente inoltre ai giocatori di interagire e di distrarsi con il divertimento del gioco mentre realizzano un profitto. La piattaforma rilascerà anche altre funzionalità nel prossimo futuro affinché l'intero ecosistema di gioco cresca in modo esponenziale.
Crazy Dogs Live è un tipo di DApp che funziona sulla blockchain di TRON.