Vai al contenuto principale
Change page

Introduzione alle dapp

Ultima modifica: @ilrado(opens in a new tab), 9 aprile 2024

Un'applicazione decentralizzata (dapp) è un'applicazione costruita su una rete decentralizzata che combina un contratto intelligente e l'interfaccia utente di un frontend. Su Ethereum, i contratti intelligenti sono accessibili e trasparenti (come le API aperte), quindi la tua dapp può persino includere un contratto intelligente, già scritto da qualcun altro.

Prerequisiti

Prima di approfondire le dapp, è consigliabile conoscere le basi della blockchain e informarsi sulla rete Ethereum e sul perché è decentralizzata.

Definizione di dapp

Il codice backend di una dapp viene eseguito su una rete decentralizzata peer-to-peer. L'opposto di quello che succede con una app il cui codice backend gira su server centralizzati.

Una dapp può avere codice frontend e interfacce utente scritti in qualsiasi linguaggio (come qualsiasi app) che possono fare chiamate al backend. Inoltre, il frontend può essere ospitato su uno storage decentralizzato come IPFS(opens in a new tab).

  • Decentralizzate - Le dApp operano su Ethereum, una piattaforma pubblica decentralizzata dove nessun individuo o gruppo detiene il controllo
  • Deterministiche: eseguono la stessa funzione a prescindere dall'ambiente dove vengono eseguite.
  • Turing complete - Le dApp possono eseguire qualsiasi azione una volta fornite le risorse necessarie
  • Isolate - Le dApp sono eseguite in un ambiente virtuale, noto come la Macchina Virtuale di Ethereum, così che se il contratto intelligente contiene un bug, non ostacolerà il normale funzionamento della rete della blockchain

Sui contratti intelligenti

Per introdurre le dapp, dobbiamo introdurre i contratti intelligenti: la backend di una dapp, in mancanza di un termine migliore. Per una panoramica dettagliata, consulta la nostra sezione sui contratti intelligenti.

Un contratto intelligente è codice che risiede sulla blockchain di Ethereum e opera esattamente come programmato. Una volta distribuiti i contratti intelligenti sulla rete, non puoi modificarli. Le dapp possono essere decentralizzate perché sono controllate della logica scritta nel contratto, non da un individuo o da un'azienda. Questo significa anche che devi progettare i tuoi contratti molto attenteamente e testarli accuratamente.

Vantaggi dello sviluppo delle dapp

  • Nessun tempo di inattività – Una volta distribuito il contratto intelligente sulla blockchain, l'intera rete potrà sempre servire i clienti che cercano di interagire con il contratto. Gli attori malevoli quindi non possono lanciare attacchi denial-of-service verso dapp singole.
  • Privacy: non è necessario fornire un'identità reale per distribuire una dapp o interagirvi.
  • Resistenza alla censura: nessuna entità sulla rete può impedire agli utenti di inviare transazioni, distribuire dapp o leggere dati dalla blockchain.
  • Completa integrità dei dati: i dati conservati sulla blockchain sono immutabili e indiscutibili, grazie alle primitive crittografiche. Attori malevoli non possono falsificare transazioni o altri dati che sono già stati resi pubblici.
  • Calcolo senza fiducia/comportamento verificabile – I contratti intelligenti sono analizzabili e, l'esecuzione in modi prevedibili è garantita, senza il bisogno di affidarsi a un'autorità centrale. Questo non accade nei modelli tradizionali. Per esempio, quando usiamo l'online banking dobbiamo fidarci del fatto che gli istituti finanziari non abusino dei nostri dati finanziari, non manomettano record e non vengano attaccati da hacker.

Svantaggi dello sviluppo di dApp

  • Manutenzione: le dapp possono essere impegnative da mantenere perché il codice e i dati pubblicati sulla blockchain sono più difficili da modificare. Per gli sviluppatori, è difficile apportare degli aggiornamenti alle loro dApp (o ai dati sottostanti, memorizzati da una dApp) una volta distribuite, anche se vengono individuati dei bug o rischi di sicurezza in una versione precedente.
  • Overhead delle prestazioni: l'overhead delle prestazioni è enorme e scalare è davvero difficile. Per raggiungere il livello di sicurezza, integrità, trasparenza e affidabilità al quale aspira Ethereum, ogni nodo esegue e memorizza ogni transazione. Oltre a ciò, anche il consenso di proof-of-stake richiede tempo.
  • Congestione della rete: quando una dApp utilizza troppe risorse di calcolo, l'intera rete viene sostenuta. Attualmente, la rete è in grado di elaborare circa 10 transazioni al secondo; se le transazioni vengono inviate a un ritmo più alto, l'insieme di transazioni non confermate può "gonfiarsi" e accumularsi.
  • Esperienza utente: potrebbe essere difficile creare esperienze intuitive. L'utente medio potrebbe trovare troppo difficile configurare la serie di strumenti necessaria a interagire con la blockchain in modo veramente sicuro.
  • Centralizzazione: soluzioni facili da utilizzare e compatibili con gli sviluppatori costruite sullo strato base di Ethereum potrebbero finire per assomigliare comunque a servizi centralizzati. Ad esempio, tali servizi potrebbero memorizzare le chiavi o altre informazioni sensibili sul lato del server, servire un frontend utilizzando un server centralizzato oppure utilizzare un'importante logica commerciale su un server centralizzato prima di scrivere sulla blockchain. La centralizzazione annulla molti (se non tutti) i vantaggi della blockchain rispetto al modello tradizionale.

Preferisci un approccio visivo all'apprendimento?

Strumenti per creare le dApp

Scaffold-ETH Sperimenta rapidamente con Solidity utilizzando un frontend che si adatta al tuo contratto intelligente.

Crea Eth App- Crea app basate su Ethereum con un comando.

One Click Dapp - Strumento di FOSS per generare frontend di dapp da un'

.

Etherflow - Strumento di FOSS per sviluppatori di Ethereum per testarne il nodo e comporre ed eseguire chiamate RPC di debug dal browser.

thirdweb - SDK in ogni linguaggio, contratti intelligenti, strumenti e infrastruttura per lo sviluppo web3.

Letture consigliate

Conosci una risorsa della comunità che ti è stata utile? Modifica questa pagina e aggiungila!

Questo articolo è stato utile?