Anteprima
Vedrai una selezione di 10 pagine su 88
Blockchain - Realizzazione di una biblioteca digitale distribuita su piattaforma Ethereum Pag. 1 Blockchain - Realizzazione di una biblioteca digitale distribuita su piattaforma Ethereum Pag. 2
Anteprima di 10 pagg. su 88.
Scarica il documento per vederlo tutto.
Blockchain - Realizzazione di una biblioteca digitale distribuita su piattaforma Ethereum Pag. 6
Anteprima di 10 pagg. su 88.
Scarica il documento per vederlo tutto.
Blockchain - Realizzazione di una biblioteca digitale distribuita su piattaforma Ethereum Pag. 11
Anteprima di 10 pagg. su 88.
Scarica il documento per vederlo tutto.
Blockchain - Realizzazione di una biblioteca digitale distribuita su piattaforma Ethereum Pag. 16
Anteprima di 10 pagg. su 88.
Scarica il documento per vederlo tutto.
Blockchain - Realizzazione di una biblioteca digitale distribuita su piattaforma Ethereum Pag. 21
Anteprima di 10 pagg. su 88.
Scarica il documento per vederlo tutto.
Blockchain - Realizzazione di una biblioteca digitale distribuita su piattaforma Ethereum Pag. 26
Anteprima di 10 pagg. su 88.
Scarica il documento per vederlo tutto.
Blockchain - Realizzazione di una biblioteca digitale distribuita su piattaforma Ethereum Pag. 31
Anteprima di 10 pagg. su 88.
Scarica il documento per vederlo tutto.
Blockchain - Realizzazione di una biblioteca digitale distribuita su piattaforma Ethereum Pag. 36
Anteprima di 10 pagg. su 88.
Scarica il documento per vederlo tutto.
Blockchain - Realizzazione di una biblioteca digitale distribuita su piattaforma Ethereum Pag. 41
1 su 88
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

“MOFICARE”.

Una guida completa per la realizzazione di Pete’s Pet Shop è presente su:

http://truffleframework.com/tutorials/pet-shop. [20]

2.4.3.1.1 Adoption.sol

Il file Adoption.sol è uno smart contract scritto in Solidity ed è responsabile di

tracciare le adozioni, corrisponde alla logica di back-end e di archiviazione

sulla blockchain. Di seguito è riportata la sua implementazione:

pragma solidity ^0.4.17;

contract Adoption {

address[16] public adopters;

// Adotta un animale

function adopt(uint petId) public returns (uint) {

require(petId >= 0 && petId <= 15);

31

adopters[petId] = msg.sender;

return petId;

}

// Recupera adottatori

function getAdopters() public view returns (address[16]) {

return adopters;

}

}

Nella prima riga, mediante il comando pragma, è indicata la versione minima di

Solidity da utilizzare, un’informazione che interesserà esclusivamente il

compilatore.

In seguito alla definizione del nome del contratto viene dichiarata una variabile

address[16] public adopters. Essa è pubblica e corrisponde ad un array

contenente una serie di indirizzi Ethereum, quelli degli adottatori.

La funzione adopt è publica e parametrizzata, consente passandogli

l’identificativo dell’animale (petId) da adottare di associarlo all’indirizzo del

suo nuovo padrone. Il comando require è utilizzato per stabilire delle

condizioni necessarie per proseguire nell’esecuzione, in questo caso che l’id

ricevuto sia un numero tra zero e quindici (questo perché gli animali all’interno

del negozio sono sedici). La msg.sender consente di recuperare l’indirizzo

Ethereum dell’utente che ha richiamato la funzione, questa è poi inserita nella

posizione petId dell’array adopters. La funzione ritorna l’id ricevuto come

parametro in modo da segnalare la sua corretta terminazione.

La getAdopters() è una funzione pubblica e consente di restituire nella sua

interezza l’array adopters. Il comando views specifica che tale funzione non

andrà a scrivere sulla blockchain ma esclusivamente a leggere.

2.4.3.1.2 Esecuzione

Una volta aperta la DApp all’interno di un browser correttamente configurato

verranno visualizzati i sedici animali, ad una prima esecuzione saranno tutti

sprovvisti di un proprietario, dunque adottabili.

Ciascun animale possiede un id che permette di identificarlo univocamente, per

ognuno di essi è possibile visualizzare informazioni quali:

32

- nome;

- razza;

- anni;

- posizione.

Ad ogni animale del Pete’s Pet Shop sarà inoltre associato un pulsante “Adopt”

che ne consonetirà l’adozione.

Parte della schermata principale di Pete’s Pet Shop

Figura 2.9:

Una prima visibile interazione con lo smart contract Adoption.sol avviene nel

momento in cui si preme il pulsante di adozione, in quell’istante infatti viene

richiamata la funzione adopt(uint petId) dove il parametro equivale all’id

dell’animale in questione.

Se si utilizza un browser come Chrome, Mozilla o Opera con l’estensione

MetaMask (plugin mostrato presentato nel quarto capitolo) verrà

automaticamente richiesto di approvare la transazione prima di iniziare la

scrittura su blockchain, questo perché l’operazione di scrittura ha un costo in

ether per chi manda il messaggio (figura 2.10). Nel caso in cui non si possegga

una quantità di ether sufficiente la transazione verrà rifiutata.

Una volta fatto click su invia sarà possibile vedere, accanto all’animale

adottato, il pulsante di adozione disabilitato e la scritta “Success”, questo grazie

alla funzione getAdopters(). Questa permette infatti di disattivare i pulsanti

laddove all’interno dell’array restituito è presente un indirizzo diverso da quello

nullo. 33

Schermata di adozione avvenuta con successo

Figura 2.11:

La transazione è dunque completata, questo consentirà a Pete di archiviare in

maniera efficace le adozioni del suo negozio sulla blockchain con tutti i

vantaggi del caso. 34

Capitolo 3 - Metodologia

35

3.1 ICO

La sigla ICO è l’acronimo di Initial Coin Offering, che tradotto letteralmente in

italiano significa offerta di moneta iniziale. Anche nota come IPCO (Initial

Public Coin Offering) è un mezzo con cui vengono raccolti fondi per una nuova

impresa: crowdfunding. In estrema sintesi altro non è che una nuova forma di

finanziamento utilizzata da startup o da soggetti che intendono realizzare un

progetto su blockchain. Una ICO è utilizzata dalle startup per aggirare il

rigoroso e regolamentato processo di raccolta di capitali. In una campagna di

questo tipo, una percentuale di monete associate al progetto viene venduta ai

suoi sostenitori in cambio di Ether o Bitcoin. Queste monete virtuali, dette

token, sono simili a delle azioni societarie.[12]

Il primo passo necessario per una startup che vuole raccogliere fondi tramite

una Initial Coin Offering è di solito quello di creare un piano su un white paper.

Tale documento serve a presentare e descrivere il progetto: di cosa si tratta,

quali necessità soddisferà al completamento, il capitale necessario per

intraprendere l'impresa, quanti token gli investitori del progetto manterranno

per sé, i metodi di investimento e la durata della campagna. Se i requisiti di

fondi sono soddisfatti entro le tempistiche previste, verrà avviato il nuovo

schema, al contrario se il capitale raccolto non soddisfa i fondi minimi richiesti,

verrà restituito ai sostenitori e la ICO sarà considerata non riuscita.

Come strumento di finanziamento, le ICO stanno realizzando numeri notevoli:

tra il 2016 e il 2017 sono stati raccolti oltre 300 milioni di dollari in

finanziamenti. Tuttavia i rischi di investimento sono evidenti a causa di una

mancanza di trasparenza: le attuali ICO non vengono infatti valutate prendendo

in considerazione parametri finanziari tradizionali, ma sulla base di una

promessa futura. Il fenomeno dunque necessita ancora di maggiore

regolamentazione, di modo da tutelare eventuali investitori.

3.1.1 Token

Le criptovalute sono un esempio calzante di come una valuta virtuale basata su

blockchain possa essere distribuita sul mercato, sebbene soggetta a molte

limitazioni dovute alla mancanza di una chiara regolamentazione.

Le criptovalute delineano solo l'inizio di una rivoluzione, il cui secondo step è

rappresentato dai token. Nonostante i token abbiano molte analogie con le

36

criptovalute, il loro scopo è ben più ampio. Essi sono più di una valuta perché

possono essere utilizzati in una gamma più vasta di applicazioni e la maggior

parte di essi fa affidamento sul protocollo blockchain di Ethereum che, secondo

il parere degli esperti, è più completo di altri.

William Mougayar definisce un token [8]

“un'unità di misura di valore creata da un'organizzazione per auto-governare

il proprio modello di business e consentire agli utenti di interagire con i

prodotti, facilitando al tempo stesso la distribuzione e la condivisione di premi

e benefici a tutti i suoi stakeholder”.

Dunque un token non è altro che un nuovo termine per fare riferimento a

un'unità di valore emessa da un'entità privata su un protocollo esistente, ciò li

rende più facili da implementare. I token rappresentano un asset o un’ utility e

possono essere classificati nelle seguenti categorie [8]:

- security token: considerati dei veri e propri asset sono soggetti a severe

regolamentazioni e normative. Rappresentano partecipazioni in termini di

dividendi, diritti di voto, tassi di interessi e/o percentuale sugli utili.

Il loro utilizzo più comune è quello di rappresentare beni e proprietà, proprio

come delle azioni;

- utility token: a differenza dei security token non nascono come una forma di

investimento, pertanto sono esclusi dalle normative. Sono utilizzati per

effettuare transazioni, scambi e accedere a prodotti o servizi. Forniscono

essenzialmente una “utilità” di qualche tipo.

3.1.2 ERC20

L’ERC20 è uno standard che definisce quali funzioni ed eventi devono essere

implementati all’interno di un token Ethereum.

I principali token rilasciati sulla blockchain di Ethereum sono infatti conformi a

tale modello, ciò li consente di essere compatibili con il portafoglio Ethereum o

qualsiasi altro client e smart contract utilizzi tale campione.[19]

Una possibile interfaccia scritta in Solidity di un contratto che realizza l’ERC20

è:

contract ERC20Interface {

function totalSupply() public constant returns (uint);

37

function balanceOf(address tokenOwner) public constant returns (uint balance);

function allowance(address tokenOwner, address spender) public constant returns (uint remaining);

function transfer(address to, uint tokens) public returns (bool success);

function transferFrom(address from, address to, uint tokens) public returns (bool success);

function approve(address spender, uint tokens) public returns (bool success);

event Transfer(address indexed from, address indexed to, uint tokens);

event Approval(address indexed tokenOwner, address indexed spender, uint tokens);

}

Di seguito sono riportate delle sintetiche illustrazioni sugli scopi delle funzioni:

• La funzione totalSupply() viene eseguita una sola volta, al momento della

distribuzione del contratto sulla rete Ethereum. Questa funzione serve

essenzialmente a stabilire qual è la fornitura totale di token. Restituisce

dunque un numero intero corrispondente al tetto massimo di token in

circolazione.

• BalanceOf restituisce il saldo, ovvero la quantità di token detenuti, dall’indirizzo

passato come parametro di input: address tokenOwner.

• La funzione allowance è alla base di ogni transazione. Consente a due indirizzi di

effettuare trasferimenti unidirezionali. Ha come parametri di input l’indirizzo del

portafoglio tokenOwner e un secondo indirizzo spender.

Nello specifico spender ritirerà un determinato importo da tokenOwner.

• Transfer, insieme alla funzione transferFrom definita successivamente,

rappresentano il cuore di qualsiasi token ERC20, esse sono di fatto responsabili di

ogni transazione. La funzione consente di inviare, in maniera esplicita, gettoni in

quantità pari a tokens dal portafoglio di proprietà dell'utente all’indirizzo to. Il

valore di ritorno è un booleano che conferma il corretto conseguimento della

transazione.

• La transferFrom funziona esattamente come la transfer, ha però tre parametri di

input. Alla quantità di toke

Dettagli
Publisher
A.A. 2017-2018
88 pagine
1 download
SSD Scienze antichità, filologico-letterarie e storico-artistiche L-LIN/12 Lingua e traduzione - lingua inglese

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher walterhz17 di informazioni apprese con la frequenza delle lezioni di Metodi per il ritrovamento dell’informazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bari o del prof Basile Pierpaolo.