Guazzaloca, Mattia
(2021)
Calcolo del Cost Model Esatto di un Programma in Solidity.
[Laurea], Università di Bologna, Corso di Studio in
Informatica [L-DM270]
Documenti full-text disponibili:
Abstract
Ethereum è una piattaforma basata su blockchain che permette a chiunque di realizzare applicazioni decentralizzate. Queste applicazioni, anche dette smart contracts o dApp, possono assolvere agli usi più disparati e consentono a chi le sviluppa di beneficiare della capacità computazionale della rete di Ethereum sui quali queste vengono eseguite. Purtroppo però, ciò apre le porte anche a possibili abusi. In particolare, grazie alla Turing-completezza del linguaggio in cui sono scritti le dApp, un banale programma divergente renderebbe rapidamente inutilizzabile l'intera rete. Per tutelarsi da questi attacchi, Ethereum associa a ciascuna istruzione un certo consumo di gas, con l'obiettivo di misurare lo sforzo computazionale richiesto per l'esecuzione. Ogni utente del contratto è pertanto obbligato a versare ai nodi esecutori una quantità di Ether (la criptovaluta di Ethereum) pari al gas richiesto per completare l'esecuzione. Uno dei problemi principali per gli sviluppatori di contratti è quindi quello di stimare in anticipo i consumi di gas dei loro programmi. Tuttavia, poiché i contratti sono tipicamente scritti in linguaggi di alto livello e poi tradotti nelle istruzioni di basso livello, ottenere delle stime precise è un compito tutt'altro che triviale. In questo elaborato, presenteremo quindi il cosidetto metodo del labelling, sviluppato nell'ambito del progetto europeo CerCo come soluzione a questo problema, e ne illustreremo una possibile implementazione all'interno del compilatore di Solidity, il linguaggio più usato nello sviluppo di smart contract.
Abstract
Ethereum è una piattaforma basata su blockchain che permette a chiunque di realizzare applicazioni decentralizzate. Queste applicazioni, anche dette smart contracts o dApp, possono assolvere agli usi più disparati e consentono a chi le sviluppa di beneficiare della capacità computazionale della rete di Ethereum sui quali queste vengono eseguite. Purtroppo però, ciò apre le porte anche a possibili abusi. In particolare, grazie alla Turing-completezza del linguaggio in cui sono scritti le dApp, un banale programma divergente renderebbe rapidamente inutilizzabile l'intera rete. Per tutelarsi da questi attacchi, Ethereum associa a ciascuna istruzione un certo consumo di gas, con l'obiettivo di misurare lo sforzo computazionale richiesto per l'esecuzione. Ogni utente del contratto è pertanto obbligato a versare ai nodi esecutori una quantità di Ether (la criptovaluta di Ethereum) pari al gas richiesto per completare l'esecuzione. Uno dei problemi principali per gli sviluppatori di contratti è quindi quello di stimare in anticipo i consumi di gas dei loro programmi. Tuttavia, poiché i contratti sono tipicamente scritti in linguaggi di alto livello e poi tradotti nelle istruzioni di basso livello, ottenere delle stime precise è un compito tutt'altro che triviale. In questo elaborato, presenteremo quindi il cosidetto metodo del labelling, sviluppato nell'ambito del progetto europeo CerCo come soluzione a questo problema, e ne illustreremo una possibile implementazione all'interno del compilatore di Solidity, il linguaggio più usato nello sviluppo di smart contract.
Tipologia del documento
Tesi di laurea
(Laurea)
Autore della tesi
Guazzaloca, Mattia
Relatore della tesi
Scuola
Corso di studio
Ordinamento Cds
DM270
Parole chiave
gas,smart contracts,cost,ethereum,blockchain
Data di discussione della Tesi
13 Ottobre 2021
URI
Altri metadati
Tipologia del documento
Tesi di laurea
(NON SPECIFICATO)
Autore della tesi
Guazzaloca, Mattia
Relatore della tesi
Scuola
Corso di studio
Ordinamento Cds
DM270
Parole chiave
gas,smart contracts,cost,ethereum,blockchain
Data di discussione della Tesi
13 Ottobre 2021
URI
Statistica sui download
Gestione del documento: