4 passaggi per progettare un’architettura per la tua app Ethereum
Progettare un’applicazione Ethereum rappresenta una serie di nuove sfide che dobbiamo superare. Ma, naturalmente, se siamo pazienti e applichiamo correttamente le nostre conoscenze, possiamo raggiungere la nostra missione senza alcun problema. Questa nuova era significa che dobbiamo aggiungere un nuovo fattore. Ora non si tratta solo di client e server, ma è arrivata anche la blockchain.
1.- La blockchain client è la nuova era tecnologica in Ethereum
Questo è della massima importanza perché ora il flusso di dati e le operazioni che vengono eseguite passano attraverso la blockchain. Cioè, si crea una relazione diretta tra la blockchain e il cliente.
Il primo passo qui è distribuire effettivamente il codice client ai tuoi utenti. Il modo più semplice consiste nell’impostare una pagina statica che contenga un’applicazione web abilitata per web3. Questa pagina può essere ospitata ovunque. Che si tratti di AWS S3, Google Cloud, pagine Github, altri provider cloud o il tuo server. Inoltre, se puoi contare sul fatto che i tuoi client abbiano il supporto del protocollo bzz o entrambi gli ipf, tutto sarebbe più semplice. Puoi persino distribuirlo tramite Swarm o IPFS per una decentralizzazione completa.
2.- Consenti alla blockchain di accedere alle informazioni
Ora la cosa più importante è che l’app possa essere pienamente in grado di leggere le informazioni dalla blockchain. Affinché ciò accada, avrai bisogno di una connessione a un nodo Ethereum completamente attivo. Questo passaggio verrà avviato dal tuo server web3 poiché è quello che può effettivamente creare un collegamento sostenuto con il nodo.
Alcuni utenti potrebbero avere già stabilito una connessione a un nodo. Ad esempio, tramite il client ufficiale Mist, o tramite un add-on del browser come il popolarissimo Metamask. Questo agisce come un thin client della blockchain. Le tue FAQ forniscono anche uno snippet di codice su come rilevare se un client è disponibile e utilizzarlo come provider per web3.
Cosa fare allora per quegli utenti che non hanno Mist o Metamask? Se ti servono solo per interrogare la blockchain senza inviare alcuna transazione, puoi stabilire una connessione con un nodo Ethereum pubblico. Questo dovrebbe essere un geth o un nodo di parità aperto al pubblico. Ma senza esporre l’API per gestire gli account e senza alcun account sbloccato. Tale nodo fungerà solo da gateway per interrogare funzioni contrattuali costanti.
In questo modo, gli utenti con un’infrastruttura Ethereum in esecuzione possono utilizzare le tue connessioni ai tuoi nodi fidati. I beneficiari meno esperti di tecnologia saranno in grado di utilizzare i nodi pubblici. Ciò implica che questi ultimi utenti scelgono di fidarsi delle informazioni fornite dal nodo controllato da terze parti a causa della facilità d’uso.
3.- L’obiettivo più importante, l’invio delle transazioni
Come puoi vedere, fare richieste tramite blockchain non è un compito difficile. Ma, se gli utenti vogliono effettuare transazioni, tutto sarà molto più complicato. Questo perché le transazioni causano la completa modifica dei contratti intelligenti.
Se gli utenti hanno Mist o Metamask non ci saranno problemi perché forniscono un modo per gestire gli account utente e chiedere all’individuo di approvare una transazione su richiesta dell’applicazione. Mist fornirà un gateway al nodo locale dell’utente e ai suoi account per firmare le transazioni. Metamask firmerà le transazioni lato client e le trasmetterà ai nodi Metamask pubblici.
Per quanto riguarda il resto dei suoi utenti, se non richiede loro di installare Metamask o utilizzare Mist per utilizzare la tua applicazione. Dovrai istruirli a inviare manualmente le transazioni per interagire con la tua app dal portafoglio con cui lavorano.
La maggior parte delle applicazioni lo implementa chiedendo all’utente di inviare una certa quantità di ETH a un indirizzo. Facoltativamente, includendo un pulsante QR o una copia negli appunti.
L’applicazione lato client può quindi monitorare gli eventi del contratto per aggiornare l’interfaccia utente. Questo grazie al fatto che la transazione inviata viene eseguita fuori banda. Poiché la visualizzazione degli eventi è semplicemente un modo per interrogare la blockchain, può essere facilmente eseguita tramite un nodo pubblico.
Ora per svolgere le funzioni contrattuali. Potrebbe essere necessario chiedere all’utente di inviare ETH insieme a dati aggiuntivi per eseguire una funzione specifica. Puoi utilizzare la richiesta di una funzione di contratto per ottenere facilmente i dati necessari per eseguire un metodo e presentarlo all’utente insieme all’indirizzo di destinazione.
4.- Implementazione del modello
Personalmente, non sono un grande fan di questo modello. Questo perché richiede un’interazione piuttosto complessa da parte dell’utente. Non tutti i beneficiari sono a conoscenza di come funzionano i dati aggiuntivi su Ethereum. E molto meno su come inviarli in una transazione.
Se hai bisogno di implementarlo, assicurati che la funzione di supporto del tuo contratto rifiuti tutti i pagamenti o abbia un comportamento predefinito ragionevole. Quindi, se l’utente dimentica di includere i dati extra quando invia manualmente la transazione, non perdere i fondi inviati.
Tieni presente che, in molti scenari. Una funzione di prenotazione progettata in modo intelligente può effettivamente sempre eseguire il comportamento previsto per l’utente che invia una transazione. In questo modo, i tuoi contratti intelligenti reagiscono solo agli utenti che inviano fondi e svolgono funzioni diverse a seconda dello stato attuale.
Un altro trucco consiste nell’aggiungere contratti proxy, in cui ciascuno di essi svolge una funzione particolare nel contratto principale quando riceve ETH. Come semplice esempio, supponiamo che tu stia implementando un’applicazione di voto binario. Ha il suo contratto principale con una funzione voto-sì e un voto-no. Invece di chiedere all’utente di includere l’indicatore sì o no nella sua transazione. Puoi implementare due contratti aggiuntivi. Tranne per chiamare il voto-sì o il voto-no nel contratto principale per conto del mittente del messaggio quando si riceve qualsiasi transazione. Spesso puoi aiutare a ridurre la complessità per gli utenti che non dispongono di software compatibile con Ethereum nei loro browser. Questo sarà di grande aiuto per te e le persone saranno in grado di interagire meglio con l’app.