Come creare un'applicazione decentralizzata che scalabile? Usa meno blockchain

No, l'avvio di un'applicazione decentralizzata (dapp) sulla blockchain non porterà a un business di successo. In effetti, la maggior parte degli utenti non si preoccupa nemmeno se l'applicazione funzioni sulla blockchain: scelgono semplicemente un prodotto che è più economico, più veloce e più semplice.

Sfortunatamente, anche se la blockchain ha le sue caratteristiche uniche e vantaggi, la maggior parte delle applicazioni che vi operano sono molto più costose, più lente e meno comprensibili rispetto ai loro concorrenti centralizzati.

Come creare un'applicazione decentralizzata che scalabile? Usa meno blockchain

È piuttosto comune trovare in whitepaper di applicazioni basate su blockchain un paragrafo che afferma: "la blockchain è costosa e non è in grado di supportare il numero richiesto di transazioni al secondo. Fortunatamente, molte menti brillanti stanno lavorando per scalare la blockchain e, al momento del lancio della nostra applicazione, essa sarà sufficientemente scalabile".

In un semplice paragrafo, lo sviluppatore di una dapp può evitare una discussione più profonda sui problemi di scalabilità e sulle soluzioni alternative. Questo porta spesso a un'architettura inefficiente, in cui i contratti intelligenti che operano sulla blockchain costituiscono il backend e il nucleo dell'applicazione.

Tuttavia, esistono ancora approcci non testati nell'architettura delle applicazioni decentralizzate che permettono una scalabilità molto migliore, grazie alla riduzione della dipendenza dalla blockchain. Ad esempio, Blockstack sta lavorando a un'architettura in cui la maggior parte dei dati e della logica dell'applicazione è conservata al di fuori della blockchain.

Diamo prima un'occhiata a un approccio più tradizionale, in cui la blockchain è utilizzata come intermediario diretto tra gli utenti dell'applicazione e che non scala molto bene.

Approccio n. 1: Blockchain come backend

Per rendere le cose più chiare, prendiamo l'industria alberghiera come esempio. È un'enorme industria, in cui intermediari come Booking.com richiedono commissioni elevate per connettere gli ospiti agli hotel.

In qualsiasi situazione in cui vogliamo superare un tale intermediario, utilizzando questo approccio, cercheremo di riprodurre la sua logica aziendale usando contratti intelligenti su una blockchain come Ethereum.

I contratti intelligenti open-source, eseguiti su "computer mondiale", possono collegare venditori e consumatori senza una terza parte coinvolta, riducendo infine le commissioni e le spese addebitate dagli intermediari.

Come mostrato nell'immagine sottostante, gli hotel utilizzano un'app decentralizzata per pubblicare sulla blockchain informazioni sulle stanze, sulla loro disponibilità e sui prezzi nei giorni feriali o nei weekend, e forse anche una descrizione delle stanze con tutte le altre informazioni pertinenti.

Come creare un'applicazione decentralizzata che scalabile? Usa meno blockchain

Chiunque voglia prenotare una stanza utilizza questo applicativo per cercare hotel e stanze pubblicati sulla blockchain. Una volta che l'utente sceglie una stanza, la prenotazione avviene inviando l'importo necessario di token all'hotel come deposito. In cambio, il contratto smart aggiorna le informazioni sulla blockchain, rendendo la stanza non più disponibile.

In questo approccio ci sono due aspetti del problema della scalabilità. Innanzitutto, il numero massimo di transazioni al secondo. In secondo luogo, il volume di dati che può essere archiviato nella blockchain.

Facciamo alcune stime approssimative. Booking.com dichiara di avere quasi 2 milioni di hotel registrati. Supponiamo che in media ogni hotel abbia 10 stanze e ognuna venga prenotata solo 20 volte all'anno: questo ci dà in media 13 prenotazioni al secondo.

Per valutare questo numero, è opportuno notare che Ethereum può elaborare circa 15 transazioni al secondo.

Inoltre, è importante considerare che nella nostra applicazione ci saranno anche transazioni dagli hotel - per il caricamento e l'aggiornamento continuo delle informazioni sulle loro stanze. Gli hotel aggiornano spesso i prezzi delle stanze, a volte anche ogni giorno, e ogni modifica del prezzo o della descrizione richiede una transazione sulla blockchain.

Ci sono anche problemi di dimensioni: il peso della blockchain di Ethereum ha recentemente superato i 2 TB. Se applicazioni con un approccio simile diventassero veramente popolari, la rete Ethereum diverrebbe estremamente instabile.

Un sistema del genere, basato sulla blockchain, può escludere soggetti esterni grazie alla sua imparzialità e assenza di centralizzazione, che sono i principali vantaggi della tecnologia blockchain. Ma la blockchain ha anche altre caratteristiche: è distribuita e non riscrivibile, il che è ottimo, ma ha un costo in termini di velocità e commissioni di transazione.

Pertanto, gli sviluppatori di dapp devono valutare attentamente se ogni funzione che utilizza la blockchain necessiti realmente di decentralizzazione e non modificabilità.

Ad esempio: qual è il vantaggio di distribuire i dati di ciascun hotel su centinaia di server in tutto il mondo e di conservarli costantemente lì? È davvero importante che i dati storici sui prezzi e sulla disponibilità delle stanze siano sempre inclusi nella blockchain? Probabilmente no.

Se iniziamo a porre domande simili, cominceremo a vedere che non è necessario avere tutte le costose caratteristiche della blockchain per tutte le nostre funzioni. Qual è quindi l'alternativa?

Approccio #2: Architettura ispirata a Blockstack

Sebbene l'accento principale Blockstack sia su applicazioni in cui gli utenti possiedono i propri dati (ad esempio, come Airtext, BentenSound, ImageOptimizer o Graphite), Blockstack ha anche una filosofia di utilizzo limitato della blockchain: dovrebbe essere utilizzata solo quando è assolutamente necessario. Il loro argomento principale è che la blockchain è lenta e costosa e quindi dovrebbe essere utilizzata solo per operazioni singole o rare. Tutti gli altri interazioni con le applicazioni dovrebbero avvenire tramite peer-to-peer, ossia gli utenti delle applicazioni decentralizzate dovrebbero condividere i dati direttamente tra loro, anziché attraverso la blockchain. Alla fine, le applicazioni decentralizzate più vecchie e di successo, come BitTorrent, email e Tor, sono state create prima ancora che il concetto stesso di blockchain esistesse.

Come creare un'applicazione decentralizzata che scalabile? Usa meno blockchain
A sinistra: primo approccio, in cui gli utenti interagiscono tramite blockchain. A destra: gli utenti interagiscono direttamente tra loro, e la blockchain viene utilizzata solo per l'identificazione e simili..

Torniamo all'esempio della prenotazione degli hotel. Vogliamo un protocollo imparziale, indipendente e aperto per collegare gli ospiti agli hotel. In altre parole, vogliamo eliminare un intermediario centralizzato. Non abbiamo bisogno, ad esempio, di conservare costantemente i prezzi delle stanze in un registro distribuito comune.

Perché non permettere semplicemente agli ospiti e agli hotel di interagire direttamente, invece che attraverso la blockchain? Gli hotel possono memorizzare i loro prezzi, la disponibilità delle camere e qualsiasi altra informazione da qualche parte in cui sia accessibile a tutti, per esempio, IPFS, Amazon S3, o persino il loro stesso server locale. Questo è esattamente ciò che fornisce un sistema di archiviazione decentralizzato di Blockstack chiamato Gaia. Permette agli utenti di scegliere dove vogliono memorizzare i loro dati e controllare chi può avere accesso a essi tramite un approccio chiamato archiviazione multi-utente.

Per stabilire la fiducia, tutti i dati dell'hotel vengono firmati crittograficamente dallo stesso hotel. Indipendentemente da dove vengano memorizzati questi dati, la loro integrità può essere verificata utilizzando le chiavi pubbliche associate alle informazioni identificative di questo hotel, memorizzate nella blockchain.

Nel caso di Blockstack, solo le tue informazioni identificative sono memorizzate nella blockchain. Le informazioni su come ottenere i dati di ciascun utente sono memorizzate in file di zona (zone files) e distribuite attraverso una rete peer-to-peer tramite nodi. E ancora una volta, non è necessario fidarsi dei dati forniti dai nodi, perché puoi verificarne l'autenticità confrontandoli con gli hash memorizzati nella blockchain e presso altri utenti.

In una versione semplificata del sistema, gli ospiti utilizzeranno la rete peer-to-peer di Blockstack per cercare hotel e ottenere informazioni sulle loro camere. E l'autenticità e l'integrità di tutti i dati che ricevi possono essere verificate utilizzando chiavi pubbliche e hash memorizzati in una catena virtuale Blockstack.

Questa architettura è più complessa rispetto al primo approccio e richiede un'infrastruttura più complessa. In effetti, è esattamente qui che entra in gioco Blockstack, fornendo tutti i componenti necessari per creare un sistema decentralizzato di questo tipo.

Come creare un'applicazione decentralizzata che scalabile? Usa meno blockchain

Con un'architettura di questo tipo, memorizziamo nella blockchain solo i dati che devono davvero essere distribuiti e non riscrivibili. Nel caso di Blockstack, hai bisogno di transazioni nella blockchain solo per registrarti e indicare dove devono essere memorizzati i tuoi dati. Potresti aver bisogno di ulteriori transazioni se desideri modificare qualcosa di queste informazioni, ma non è un evento che si ripete.

Inoltre, la logica dell'applicazione, contrariamente al primo approccio, funziona sul lato client, e non sui contratti smart. Questo consente agli sviluppatori di modificare questa logica senza costosi aggiornamenti ai contratti smart, a volte persino impossibili. Inoltre, mantenendo i dati e la logica dell'applicazione al di fuori della blockchain, le applicazioni decentralizzate possono raggiungere livelli di prestazioni e scalabilità paragonabili ai tradizionali sistemi centralizzati.

Conclusione

Le applicazioni che operano su Blockstack possono scalare molto meglio delle normali applicazioni blockchain, ma questo è un approccio più giovane con i suoi problemi e questioni irrisolte.

Ad esempio, se un'applicazione decentralizzata non opera su contratti smart, ciò riduce la necessità di token utilitari. Questo può creare problemi per le imprese, considerando che le ICO sono state la principale fonte di finanziamento per le applicazioni decentralizzate (incluso Blockstack stesso).

Qui ci sono anche problemi tecnici. Ad esempio, è relativamente semplice implementare una funzione di prenotazione di hotel in un contratto smart, dove in un'operazione atomica la prenotazione delle stanze avviene in cambio di token. Non è molto chiaro come funzionerà la prenotazione in un'applicazione Blockstack senza contratti smart.

Le applicazioni che mirano a mercati globali con potenziale di milioni di utenti devono scalare molto bene per avere successo. È errato fare affidamento esclusivamente sulle blockchain per raggiungere tale livello di scalabilità nel prossimo futuro. Per poter competere con i grandi attori centralizzati del mercato, come Booking.com, gli sviluppatori di applicazioni decentralizzate devono considerare approcci alternativi nella progettazione delle loro applicazioni, come quello offerto da Blockstack.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster