Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
Con il rapido sviluppo delle tecnologie informatiche, una grande quantità di set di dati è stata
raccolta, consentendo di realizzare progetti nazionali e internazionali come Human Genome Project,
il progetto HapMap e Genotype-Tissue Expression (GTEx), che hanno prodotto dati di ricerca
inestimabili ed esteso i confini della conoscenza umana. Grazie al progresso della tecnologia
informatica, il costo dei test genomici sta diminuendo esponenzialmente.
La tecnologia blockchain ha ricevuto una crescente attenzione perché fornisce un nuovo paradigma
di scambio di valore. Sebbene derivi dalla criptovaluta, molti studi hanno esaminato l'adozione della
blockchain in diversi scenari applicativi oltre il dominio finanziario che tipicamente coinvolgono
più parti con conflitti di interessi come la condivisione dei dati personali, la catena di
approvvigionamento, l'identità gestione e gestione dei dati medici. Dimostrano che l'utilizzo della
tecnologia blockchain può ridurre l'attrito e aumentare la trasparenza. Un sistema blockchain ha
diverse caratteristiche degne di nota: decentralizzazione, immutabilità e trasparenza. Questi sono
ottenuti mediante hash crittografico, algoritmo di consenso e molte altre innovazioni da campi
precedentemente non correlati come la crittografia e il calcolo distribuito. A causa della limitazione
dello spazio, non introduciamo ulteriori dettagli sulle tecnologie blockchain e indirizziamo i lettori
interessati a sondaggi sulla blockchain.
Alcuni studi recenti della comunità di database considerano un sistema blockchain come un
database distribuito e tentano di migliorare le prestazioni di tale sistema esplorando nuovi modelli
di strati inferiori (come l'archiviazione o l'elaborazione delle transazioni) del sistema. Tuttavia,
senza considerare le caratteristiche dell'applicazione, tali modifiche sul motore di back-end del
sistema potrebbero non avere il miglioramento delle prestazioni desiderato su ogni applicazione o
addirittura causare effetti collaterali imprevisti.
Blockchain e Distributed Ledger stanno suscitando sempre più attenzione mediatica e sono
annoverati tra i trend digitali più interessanti. In particolare, la tecnologia di cui si parla è la
Blockchain, relativamente recente, nata infatti poco più di 10 anni fa con Bitcoin e le criptovalute.
La ragione della grande attenzione dedicata a questa tecnologia, e la vera innovazione introdotta
dalla Blockchain, è stato riuscire ad integrare in maniera efficace soluzioni tecnologiche ben
consolidate (come crittografia, funzioni di hash, mechanism design, sistemi distribuiti) per
realizzare un sistema di trasferimento di “valore" incensurabile, autonomo da garanti centrali e
potenzialmente anonimo. La portata rivoluzionaria va ricercata nel cambio di paradigma che porterà
alla creazione dell'Internet of Value: un sistema che, permette lo scambio di beni di valore senza
intermediari e in modo programmabile, attraverso i cosiddetti smart contract.
BLOCKBENCH è un sistema open source e contiene elaborazione dati carichi di lavoro
comunemente presenti nei benchmark di database. Serve come mezzo di confronto equo per
piattaforme diverse e consente una comprensione più approfondita delle diverse scelte di
progettazione del sistema. BLOCKBENCH è il primo framework di valutazione per l'analisi di
blockchain privata. Tale framework è stato progettato per l'analisi quantitativa di blockchain come
piattaforme di elaborazione dati. Il framework si rivolge ai privati blockchain con contratti
intelligenti completi di Turing. Qualsiasi blockchain privata può essere integrata a BLOCKBENCH
tramite semplici API e confrontata con carichi di lavoro basati su contratti intelligenti reali e
sintetici. BLOCKBENCH misura le prestazioni complessive e per componenti in termini di
throughput, latenza, scalabilità e tolleranza ai guasti.
BLOCKBENCH è il primo benchmark per lo studio e il confronto delle prestazioni delle blockchain
autorizzate. Sebbene i nodi in una blockchain autorizzata non si fidino ancora l'uno dell'altro, le loro
identità vengono autenticate, il che consente al sistema di utilizzare protocolli più efficienti per
tollerare gli errori bizantini rispetto alle impostazioni pubbliche.
Lo sviluppo di BLOCKBENCH comprende molte parti e si osserva che un'ampia varietà di scelte di
design viene effettuata tra piattaforme diverse in quasi ogni singolo dettaglio. In BLOCKBENCH,
dividiamo l'architettura blockchain in tre livelli modulari: il livello di consenso, il modello di dati e
il livello di esecuzione.
Per ogni strato lì sono più carichi di lavoro BLOCKBENCH per valutarlo individualmente. Il livello
di consenso contiene protocolli tramite i quali un blocco viene considerato aggiunto alla
blockchain. Lo strato del “data model” contiene la struttura, il contenuto e operazioni sui dati
blockchain. Lo strato di esecuzione include i dettagli dell'ambiente di runtime che supporta le
operazioni di blockchain. Infine, lo strato dell'applicazione include classi di applicazioni
blockchain.
Consensus: Il ruolo del livello di consenso è far sì che tutti i nodi del sistema concordino sul
contenuto della blockchain. Cioè, se un nodo aggiunge (o esegue il commit) di un blocco, anche gli
altri nodi aggiungono lo stesso blocco alla loro copia della blockchain. I protocolli per raggiungere
il consenso nel modello di crash-failure svolgono un ruolo chiave nei database distribuiti, in cui i
nodi concordano su un ordine di transazione globale. I sistemi blockchain, d'altra parte, utilizzano
uno spettro di protocolli bizantini tolleranti ai guasti.
Data model: In Bitcoin, le transazioni sono cittadini di prima classe: sono stati di sistema che
rappresentano monete digitali nella rete. Le blockchain private partono da questo modello,
concentrandosi sugli account. Un vantaggio immediato è la semplicità, soprattutto per le
applicazioni che coinvolgono criptovalute. Ad esempio, il trasferimento di denaro da un utente a un
altro in Bitcoin comporta la ricerca di transazioni appartenenti al mittente, quindi contrassegnarne
alcune come spese, mentre è facilmente eseguibile in Ethereum aggiornando due account in
un'unica transazione.
Gli account smart contract di Ethereum combinano codice eseguibile e stati privati. Il codice può
leggere lo stato di altri conti non contrattuali e può inviare nuove transazioni. Hyperledger ha
account chiamati chaincode che sono come i contratti di Ethereum, solo il chaincode può accedere
solo al proprio archivio privato. La parità mantiene il contenuto del blocco in memoria. Ethereum e
Hyperledger utilizzano strutture dati a due livelli con archiviazione valore-chiave basata su disco.
Esistono anche variazioni negli alberi Merkle (ad es. Alberi Patricia-Merkle che supportano un
aggiornamento e una ricerca efficienti e alberi Bucket-Merkle che utilizzano l'hashing per
raggruppare gli stati in un elenco di bucket da cui viene costruito un albero Merkle).
Livello di esecuzione: Un contratto (o chaincode) viene eseguito in un ambiente di runtime. Un
requisito è che l'esecuzione deve essere veloce, perché ci sono più contratti e transazioni in un
blocco e devono essere tutti verificati dal nodo. Un altro è che l'esecuzione deve essere
deterministica, idealmente la stessa in tutti i nodi. L'esecuzione deterministica evita un'incoerenza
non necessaria nell'input e nell'output della transazione che porta all'aborto dei blocchi.
Applicazione: Molte applicazioni vengono proposte per blockchain, sfruttando le due proprietà
chiave di quest'ultima. Innanzitutto, i dati nella blockchain sono immutabili e trasparenti per i
partecipanti, il che significa che una volta che un record viene aggiunto, non può mai essere
modificato. In secondo luogo, resiste ai partecipanti disonesti e maliziosi. Anche in contesti
autorizzati, i partecipanti possono essere reciprocamente diffidenti. L'applicazione più popolare,
tuttavia, è ancora la criptovaluta.
Per quanto riguarda i carichi di lavoro, BLOCKBENCH viene fornito con carichi di lavoro di
benchmark macro per la valutazione del livello dell'applicazione e carichi di lavoro di micro
benchmark per l'analisi dei livelli inferiori.
1. Macro benchmark workloads: Portiamo due popolari carichi di lavoro di benchmark di
database in BLOCKBENCH, ovvero YCSB e Smallbank. YCSB è ampiamente utilizzato
per la valutazione dei database NoSQL, per i quali implementiamo un semplice contratto
intelligente che funziona come un archivio di valori-chiave. Il WorkloadClient si basa sul
driver YCSB che pre-carica ogni memoria con un numero di record e supporta le richieste
con diversi rapporti di operazioni di lettura e scrittura. Per Smallbank, un popolare punto di
riferimento per il carico di lavoro OLTP, implementiamo un contratto intelligente che
trasferisce denaro da un account a un altro. Oltre ai carichi di lavoro del database,
BLOCKBENCH fornisce anche altri tre carichi di lavoro basati su contratti Ethereum reali.
Il primo è EtherId, un contratto popolare che implementa un registrar di nomi di dominio. Il
secondo è Doubler, terzo è WavesPresale che implementa una campagna di crowdfunding
tramite vendite di token digitali.
2. Micro benchmark workloads: Per il livello di consenso, BLOCKBENCH fornisce il carico
di lavoro DoNothing in cui il contratto intelligente accetta una transazione come input e
semplicemente restituisce. Poiché l'esecuzione del contratto prevede un numero minimo di
operazioni a livello di esecuzione e modello di dati, le prestazioni complessive saranno
determinate dal livello di consenso. Per il livello del modello di dati, BLOCKBENCH
fornisce un carico di lavoro di Analytics simile a un carico di lavoro OLAP. In particolare,
esegue query di tipo scansione e aggregate le cui prestazioni sono determinate dal modello
di dati del sistema. In particolare, ci sono due query:
Q1: calcola i valori di transazione totali impegnati tra il blocco ie il blocco j.
Q2: Calcola il valore di transazione più grande che coinvolge un determinato stato
(account) tra il blocco ie il blocco j.
Per Ethereum e Parity, entrambe le query possono essere implementate tramite API JSON-RPC che
restituiscono i dettagli delle transazioni e i saldi dei conti in un blocco specifico. Per Hyperledger,
tuttavia, la seconda query deve essere implementata tramite uno smart contract (VersionKVStore),
perché Hyperledger non ha API per interrogare gli stati storici. Per supportare la ricerca dei dati
storici, il contratto aggiunge un contatore alla chiave di ogni account. Per recuperare una versione
specifica di un account, viene utilizzata la chiave account: versione. L'ultima versione è archiviata
nell'account chiave: latest. Il contratto mantiene anche un valore CommitBlock nel campo dati per
ogni versione in modo che punti al numero di blocco in cui viene eseguito il commit della versione
corrente. Per recuperare i saldi di un determinato account in un determinato intervallo di blocchi, il
contratto analizza tutte le versioni di questo account e restituisce il saldo corrispondente quando il
valore CommitBlock della versione è compreso nell'intervallo specificato. Un altro carico di lavoro
per il livello del modello di dati sottolinea l'archiviazione persistente. In particolare, il carico di
lavoro IOHeavy valuta le prestazioni IO della blockchain invocando un contratto che esegue un
gran numero di scritture casuali e letture casuali negli stati locali. Infine, per il livello di esecuzione
BLOCKBENCH fornisce il carico di lavoro CPUHeavy. Misura l'efficienza di livello di esecuzione
per attività pesanti richiamando un contratto che esegue l'algoritmo di ordinamento rapido su un
ampio array.
Nota: T. T. A. Dinh, R. Liu, M. Zhang, G. Chen, B. C. Ooi, and J. Wang. Technical Report
(Survey), 2017.
Fonte: https://www.comp.nus.edu.sg/~ooibc/blockbench.pdf