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

No, lanciare un’applicazione decentralizzata (dapp) sulla blockchain non porterà ad un business di successo. In effetti, la maggior parte degli utenti non pensa nemmeno se l’applicazione funziona sulla blockchain: sceglie semplicemente un prodotto più economico, più veloce e più semplice.

Sfortunatamente, anche se la blockchain ha caratteristiche e vantaggi unici, la maggior parte delle applicazioni che vengono eseguite su di essa sono molto più costose, più lente e meno intuitive rispetto ai loro concorrenti centralizzati.

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

Molto spesso nei white paper delle applicazioni basate sulla blockchain è possibile trovare un paragrafo che dice: "La blockchain è costosa e non può supportare il numero richiesto di transazioni al secondo. Fortunatamente, molte persone intelligenti stanno lavorando per ridimensionare la blockchain e quando la nostra applicazione verrà lanciata diventerà abbastanza scalabile.

In un semplice paragrafo, uno sviluppatore dapp può rinunciare a una discussione più approfondita sui problemi di scalabilità e sulle soluzioni alternative ai problemi. Ciò porta spesso a un’architettura inefficiente in cui i contratti intelligenti in esecuzione sulla blockchain fungono da backend e nucleo dell’applicazione.

Tuttavia, esistono ancora approcci non testati all’architettura applicativa decentralizzata che consentono una scalabilità molto migliore riducendo la dipendenza dalla blockchain. Ad esempio, Blockstack sta lavorando su un'architettura in cui la maggior parte dei dati e della logica dell'applicazione sono archiviati off-chain.

Diamo prima un'occhiata a un approccio più tradizionale, che utilizza la blockchain come intermediario diretto tra gli utenti dell'applicazione e che non è particolarmente scalabile.

Approccio n. 1: Blockchain come backend

Per rendere le cose più chiare, prendiamo come esempio il settore alberghiero. Si tratta di un settore enorme in cui intermediari come Booking.com, fanno pagare una tariffa enorme per collegare ospiti e hotel.

In ogni situazione in cui vogliamo sconfiggere un intermediario di questo tipo utilizzando questo approccio, proveremo a replicare la sua logica di business utilizzando contratti intelligenti su una blockchain come Ethereum.

I contratti intelligenti open source in esecuzione sul "computer mondiale" possono connettere i commercianti ai consumatori senza che vi sia una terza parte in mezzo, riducendo in definitiva le tariffe e le commissioni addebitate dall'intermediario.

Come mostrato nell’immagine qui sotto, gli hotel utilizzano un’applicazione decentralizzata per pubblicare sulla blockchain informazioni sulle camere, la loro disponibilità e i prezzi nei giorni feriali o nei fine settimana, e magari anche una descrizione delle camere con tutte le altre informazioni rilevanti.

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

Chiunque voglia prenotare una camera utilizza questa applicazione per cercare hotel e camere ospitati sulla blockchain. Una volta selezionata la camera, la prenotazione viene effettuata inviando all'hotel la quantità di gettoni richiesta a titolo di caparra. E in risposta, il contratto intelligente aggiorna l’informazione nella blockchain che il numero non è più disponibile.

Ci sono due aspetti del problema della scalabilità con questo approccio. Innanzitutto, il numero massimo di transazioni al secondo. In secondo luogo, la quantità di dati che possono essere archiviati sulla blockchain.

Facciamo qualche calcolo approssimativo. Booking.com afferma di avere quasi 2 milioni di hotel registrati. Diciamo che un hotel medio ha 10 camere e ognuna viene prenotata solo 20 volte l'anno, il che ci dà una media di 13 prenotazioni al secondo.

Per mettere questo numero in prospettiva, vale la pena notare che Ethereum può elaborare circa 15 transazioni al secondo.

Allo stesso tempo, vale la pena considerare che la nostra applicazione conterrà anche transazioni da hotel - per scaricare e aggiornare costantemente le informazioni sulle loro camere. Gli hotel aggiornano i prezzi delle camere molto frequentemente, a volte anche quotidianamente, e ogni modifica del prezzo o della descrizione richiede una transazione sulla blockchain.

Ci sono anche problemi di dimensione: il peso della blockchain di Ethereum ha recentemente superato la soglia dei 2 TB. Se le applicazioni con questo approccio diventassero davvero popolari, la rete Ethereum diventerebbe estremamente instabile.

Un tale sistema basato su blockchain può escludere gli estranei a causa della sua imparzialità e mancanza di centralizzazione, i principali vantaggi della tecnologia blockchain. Ma la blockchain ha anche altre caratteristiche: è distribuita e non riscritta, queste sono caratteristiche eccellenti, ma per queste devi pagare nella velocità e nella commissione delle transazioni.

Pertanto, gli sviluppatori di dapp devono valutare attentamente se ciascuna funzionalità che utilizza la blockchain necessita davvero di distribuzione e non scrivibilità.

Ad esempio: qual è il vantaggio di distribuire i dati di ciascun hotel su centinaia di macchine in tutto il mondo e archiviarli lì in modo permanente? È davvero importante che i dati storici sulle tariffe e sulla disponibilità delle camere siano sempre inclusi nella blockchain? Probabilmente no.

Se iniziamo a porci domande come queste, inizieremo a vedere che non abbiamo necessariamente bisogno di tutte le costose funzionalità della blockchain per tutte le nostre funzioni. Allora, qual è l'alternativa?

Approccio n. 2: architettura ispirata al Blockstack

Sebbene l'enfasi principale Blockstack su applicazioni in cui gli utenti sono proprietari dei propri dati (ad esempio, come testo aereo, BentenSound, Ottimizzatore di immagini o Grafite), BlockStack ha anche la filosofia di utilizzare la blockchain con leggerezza, solo quando assolutamente necessario. La loro argomentazione principale è che la blockchain è lenta e costosa e quindi dovrebbe essere utilizzata solo per transazioni singole o poco frequenti. Il resto dell'interazione con le applicazioni dovrebbe avvenire tramite peer-to-peer, ovvero. gli utenti di applicazioni decentralizzate devono condividere i dati direttamente tra loro, anziché attraverso la blockchain. Dopotutto, le applicazioni decentralizzate più antiche e di maggior successo come BitTorrent, email e Tor sono state create prima del concetto stesso di blockchain.

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

Torniamo all'esempio della prenotazione dell'hotel. Vogliamo un protocollo imparziale, indipendente e aperto per mettere in contatto gli ospiti con gli hotel. In altre parole, vogliamo eliminare l’intermediario centralizzato. Non abbiamo bisogno, ad esempio, di archiviare costantemente i prezzi delle camere in un registro distribuito comune.

Perché non consentiamo semplicemente agli ospiti e agli hotel di interagire direttamente anziché tramite blockchain. Gli hotel possono memorizzare i prezzi, la disponibilità delle camere e qualsiasi altra informazione da qualche parte dove sarà accessibile a tutti, ad esempio IPFS, Amazon S3 o persino il proprio server locale. Questo è esattamente ciò che chiamava il sistema di archiviazione decentralizzato di Blockstack Gaia. Consente agli utenti di scegliere dove desiderano archiviare i propri dati e di controllare chi può accedervi attraverso un approccio chiamato archiviazione multiutente.

Per stabilire la fiducia, tutti i dati dell'hotel vengono firmati crittograficamente dall'hotel stesso. Indipendentemente da dove vengono archiviati questi dati, la loro integrità può essere verificata utilizzando le chiavi pubbliche associate all'identità di quell'hotel archiviate sulla blockchain.

Nel caso di Blockstack, solo le informazioni sulla tua identità sono archiviate sulla blockchain. Le informazioni su come ottenere i dati di ciascun utente vengono archiviate in file di zona e distribuite attraverso una rete peer-to-peer utilizzando i nodi. E ancora una volta, non è necessario fidarsi dei dati forniti dai nodi, perché è possibile verificarne l’autenticità confrontandoli con gli hash archiviati nella blockchain e in altri utenti.

In una versione semplificata del sistema, gli ospiti utilizzeranno la rete peer-to-peer Blockstack per cercare hotel e ottenere informazioni sulle loro camere. Inoltre, l'autenticità e l'integrità di tutti i dati ricevuti possono essere verificate utilizzando le chiavi pubbliche e gli hash archiviati circuito virtuale Blockstack.

Questa architettura è più complessa del primo approccio e richiede un'infrastruttura più completa. In effetti, è proprio qui che entra in gioco Blockstack, fornendo tutti i componenti necessari per creare un sistema così decentralizzato.

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

Con questa architettura, memorizziamo sulla blockchain solo i dati che realmente necessitano di essere distribuiti e non sovrascritti. Nel caso di Blockstack, hai solo bisogno delle transazioni sulla blockchain per registrarti e indicare dove devono essere archiviati i tuoi dati. Potrebbe essere necessario effettuare più transazioni se desideri modificare queste informazioni, ma questo non è un evento ricorrente.

Inoltre la logica applicativa, a differenza del primo approccio, gira lato client e non su smart contract. Ciò consente allo sviluppatore di modificare questa logica senza aggiornamenti del contratto intelligente costosi o talvolta addirittura impossibili. Inoltre, mantenendo i dati e la logica delle applicazioni fuori catena, le applicazioni decentralizzate possono raggiungere i livelli di prestazioni e scalabilità dei sistemi centralizzati tradizionali.

conclusione

Le applicazioni in esecuzione su Blockstack possono scalare molto meglio delle applicazioni blockchain convenzionali, ma si tratta di un approccio più giovane con i suoi problemi e domande senza risposta.

Ad esempio, se un’applicazione decentralizzata non funziona con contratti intelligenti, ciò riduce la necessità di token di utilità. Ciò potrebbe causare problemi alle aziende considerando che le ICO sono state la principale fonte di finanziamento per le applicazioni decentralizzate (incluso lo stesso Blockstack)

Anche qui ci sono problemi tecnici. Ad esempio, è relativamente semplice implementare una funzione di prenotazione alberghiera in un contratto intelligente, dove in un’operazione atomica la prenotazione delle camere viene effettuata in cambio di token. E non è molto ovvio come funzionerà la prenotazione in un’applicazione Blockstack senza contratti intelligenti.

Le app destinate ai mercati globali con un potenziale per milioni di utenti devono adattarsi molto bene per avere successo. È un errore affidarsi esclusivamente alle blockchain per raggiungere questo livello di scalabilità nel prossimo futuro. Per poter competere con i grandi operatori del mercato centralizzato come Booking.com, gli sviluppatori di applicazioni decentralizzate dovrebbero considerare approcci alternativi alla progettazione delle loro applicazioni, come quello offerto da Blockstack.

Fonte: habr.com

Aggiungi un commento