SlideShare a Scribd company logo
1 of 14
Download to read offline
LF
Blockchain 1
Blockchain
LF
Blockchain
✦ Struttura dati distribuita ed immutabile
✦ Registro digitale suddiviso in blocchi concatenati in ordine cronologico
✦ Integrità garantita tramite crittografia
2
Blockchain
LF
Blockchain 3
Sicurezza Crittografica
LF
TPSIT - V
✦ L’aggiunta di un nuovo blocco è regolamentata da un meccanismo di consenso
basato su un protocollo condiviso detto validazione o mining
✦ I nodi possono validare più blocchi in contemporanea creando delle biforcazioni
(fork) finché una delle due è risolta: i blocchi non risolti sono abbandonati
(orfani)
✦ Il contenuto validato non è più né modificabile né eliminabile a meno di
invalidare tutti i blocchi successivi, tramite il consenso della maggioranza della
rete
✦ Una volta autorizzata l'aggiunta del nuovo blocco, ogni nodo aggiorna la
propria copia privata
4
Immutabilità
LF
Blockchain 5
Validazione
LF
Blockchain 6
Blocchi
LF
TPSIT - V 7
Validazione
✦ Raccolta di nuove transazioni, non ancora validate, con priorità in base a quanto sono
disposti a pagare i proprietari (fee o gas)
✦ Creazione di un blocco formato da:
✦ Index: numero che rappresenta la posizione del blocco nella blockchain
✦ Timestamp: orario di partenza
✦ Transazioni: elenco delle transazioni raccolte
✦ Previous Hash: riferimento al blocco precedente
✦ Merkle Root: contiene l’hash di tutte le transazioni validate nel blocco
✦ Bits o Difficulty Target: livello di difficoltà nel calcolo dell’hash
✦ Nonce: campo libero da utilizzare per individuare l’hash richiesto
LF
TPSIT - V 8
Calcolo dell’hash
✦ Validare il blocco si riduce al calcolo dell’hash tramite SHA-256 che rappresenterà in modo
univoco il blocco stesso, ma che deve soddisfare il difficulty target
✦ La difficulty è data dal numero di zeri iniziali richiesti per ottenere un hash valido ed è stabilita
in modo decentralizzato
✦ È definita da un algoritmo che verifica quanta potenza computazionale (o quanti computer) stia
provando a risolvere il puzzle crittografico in un dato momento, verificando il tempo impiegato
per risolvere i puzzle precedenti
✦ Questa tecnica di validazione si chiama Proof of Work (PoW): si richiede la dimostrazione di
aver effettuato un lavoro che ci è costato in termini di tempo e di sforzo (calcolo dell’hash
richiesto con una certa difficulty)
✦ Un’altra tecnica di validazione è la Proof of Stake (PoS): si richiede di dimostrare il possesso di
un certo ammontare di criptovaluta, mediato da varie possibili selezioni: casuale, anzianità,
velocità o voto
✦ Simulazione di ricerca dell’hash
LF
Blockchain 9
Smart Contract
✦ Codice memorizzato ed eseguito nella blockchain (Vitalik con Ethereum, 2015)
✦ Come un contratto vero e proprio con valenza giuridica vincola due o più parti tra
loro in un accordo da rispettare, uno scambio di valore, e di questo detta tempi,
regole e modalità
✦ Esegue le clausole che sono state stabilite al momento della “stipula del contratto”,
reagendo a specifiche condizioni operative che possono verificarsi “in corsa”: ogni
volta che una di queste si realizza, il codice si attiva in automatico (IFTTT)
✦ In realtà i contratti intelligenti non sono delle semplici istruzioni IFTTT ma dei veri e
propri pezzi di codice Turing completi: gli Smart Contract potrebbero essere usati
per risolvere qualsiasi problema di calcolo
✦ Essendo caricato su blockchain, il codice è verificabile da chiunque: chiunque può
leggere il codice, vedere come funziona e nessuno, nemmeno chi l’ha scritto, può
modificarne il contenuto (verificabile, immutabile ed incorruttibile)
LF
Blockchain 10
Stipula dello Smart Contract
LF
Blockchain 11
Esecuzione dello Smart Contract
LF
Blockchain 12
Etherisc & Flight Delay DApp
LF
Blockchain 13
Programmare Smart Contract
✦ Linguaggio di programmazione orientato agli oggetti per scrivere contratti
intelligenti su varie piattaforme blockchain, in particolare Ethereum
✦ Ogni programma è eseguito sull’Ethereum Virtual Machine (EVM)
LF
Blockchain
pragma solidity >= 0.7.0 <0.8.0;
contract Coin {
address public minter;
mapping (address => uint) public balances;
// Events allow clients to react to specific contract changes you declare
event Sent (address from, address to, uint amount);
// Constructor code is only run when the contract is created
constructor() public {
minter = msg.sender;
}
// Sends an amount of newly created coins to an address
// Can only be called by the contract creator
function mint(address receiver, uint amount) public {
require(msg.sender == minter);
require(amount < 1e60);
balances[receiver] += amount;
}
// Sends an amount of existing coins
// from any caller to an address
function send(address receiver, uint amount) public {
require(amount <= balances[msg.sender], "Insufficient balance.");
balances[msg.sender] -= amount;
balances[receiver] += amount;
emit Sent (msg.sender, receiver, amount);
}
}
14
Solidity

More Related Content

Similar to Blockchain Facts: What is it, How it works, How it can be used

Similar to Blockchain Facts: What is it, How it works, How it can be used (20)

Noonic Guides - Tecnologia Blockchain
Noonic Guides - Tecnologia BlockchainNoonic Guides - Tecnologia Blockchain
Noonic Guides - Tecnologia Blockchain
 
Tokenizzazione e regolamentazione dei virtual asset
Tokenizzazione e regolamentazione dei virtual asset  Tokenizzazione e regolamentazione dei virtual asset
Tokenizzazione e regolamentazione dei virtual asset
 
Blockchain: fuffa, innovazione o metà e metà?
Blockchain: fuffa, innovazione o metà e metà?Blockchain: fuffa, innovazione o metà e metà?
Blockchain: fuffa, innovazione o metà e metà?
 
Blockchain per la PA
Blockchain per la PABlockchain per la PA
Blockchain per la PA
 
Cristina Baldi - Chi ha detto Blockchain? - Rinascita Digitale | DAY #4
Cristina Baldi - Chi ha detto Blockchain? - Rinascita Digitale | DAY #4Cristina Baldi - Chi ha detto Blockchain? - Rinascita Digitale | DAY #4
Cristina Baldi - Chi ha detto Blockchain? - Rinascita Digitale | DAY #4
 
Esplorando il concetto di Blockchain Exploring Blockchain Technology (Italian)
Esplorando il concetto di Blockchain Exploring Blockchain Technology (Italian)Esplorando il concetto di Blockchain Exploring Blockchain Technology (Italian)
Esplorando il concetto di Blockchain Exploring Blockchain Technology (Italian)
 
Bitcoin and blockchain
Bitcoin and blockchainBitcoin and blockchain
Bitcoin and blockchain
 
Blockchain: Analisi Introduttiva ai meccanismi di sicurezza nelle nuove reti ...
Blockchain: Analisi Introduttiva ai meccanismi di sicurezza nelle nuove reti ...Blockchain: Analisi Introduttiva ai meccanismi di sicurezza nelle nuove reti ...
Blockchain: Analisi Introduttiva ai meccanismi di sicurezza nelle nuove reti ...
 
Marco Spada, Maria Perugini DirICTo - SMAU Milano 2017
Marco Spada, Maria Perugini DirICTo - SMAU Milano 2017Marco Spada, Maria Perugini DirICTo - SMAU Milano 2017
Marco Spada, Maria Perugini DirICTo - SMAU Milano 2017
 
Ethereum italia mining.ppt
Ethereum italia   mining.pptEthereum italia   mining.ppt
Ethereum italia mining.ppt
 
Bitcoin
BitcoinBitcoin
Bitcoin
 
Blockchain smart contracts
Blockchain  smart contracts Blockchain  smart contracts
Blockchain smart contracts
 
Smau Firenze 2016 - dirICTo
Smau Firenze 2016 - dirICToSmau Firenze 2016 - dirICTo
Smau Firenze 2016 - dirICTo
 
BlockChain e Token Digitali - Webinar gratuito
BlockChain e Token Digitali - Webinar gratuitoBlockChain e Token Digitali - Webinar gratuito
BlockChain e Token Digitali - Webinar gratuito
 
Blockchain il travolgente futuro della sicurezza distribuita
Blockchain il travolgente futuro della sicurezza distribuitaBlockchain il travolgente futuro della sicurezza distribuita
Blockchain il travolgente futuro della sicurezza distribuita
 
Blockchain Challenge - Raffaele Battaglini - Marco Roberti - 14/11/18
Blockchain Challenge - Raffaele Battaglini - Marco Roberti - 14/11/18Blockchain Challenge - Raffaele Battaglini - Marco Roberti - 14/11/18
Blockchain Challenge - Raffaele Battaglini - Marco Roberti - 14/11/18
 
Blockchain e smart contract (Lorenzo Piatti, feb.2021)
Blockchain e smart contract (Lorenzo Piatti, feb.2021)Blockchain e smart contract (Lorenzo Piatti, feb.2021)
Blockchain e smart contract (Lorenzo Piatti, feb.2021)
 
Rivoluzione blockchain: il futuro della collaborazione?
Rivoluzione blockchain: il futuro della collaborazione?Rivoluzione blockchain: il futuro della collaborazione?
Rivoluzione blockchain: il futuro della collaborazione?
 
Smau Firenze 2016 - dirICTo
Smau Firenze 2016 - dirICToSmau Firenze 2016 - dirICTo
Smau Firenze 2016 - dirICTo
 
Blockchain & IP - proprietà distribuzione controllo e il ruolo della blockchain
Blockchain & IP - proprietà distribuzione controllo e il ruolo della blockchainBlockchain & IP - proprietà distribuzione controllo e il ruolo della blockchain
Blockchain & IP - proprietà distribuzione controllo e il ruolo della blockchain
 

Blockchain Facts: What is it, How it works, How it can be used

  • 2. LF Blockchain ✦ Struttura dati distribuita ed immutabile ✦ Registro digitale suddiviso in blocchi concatenati in ordine cronologico ✦ Integrità garantita tramite crittografia 2 Blockchain
  • 4. LF TPSIT - V ✦ L’aggiunta di un nuovo blocco è regolamentata da un meccanismo di consenso basato su un protocollo condiviso detto validazione o mining ✦ I nodi possono validare più blocchi in contemporanea creando delle biforcazioni (fork) finché una delle due è risolta: i blocchi non risolti sono abbandonati (orfani) ✦ Il contenuto validato non è più né modificabile né eliminabile a meno di invalidare tutti i blocchi successivi, tramite il consenso della maggioranza della rete ✦ Una volta autorizzata l'aggiunta del nuovo blocco, ogni nodo aggiorna la propria copia privata 4 Immutabilità
  • 7. LF TPSIT - V 7 Validazione ✦ Raccolta di nuove transazioni, non ancora validate, con priorità in base a quanto sono disposti a pagare i proprietari (fee o gas) ✦ Creazione di un blocco formato da: ✦ Index: numero che rappresenta la posizione del blocco nella blockchain ✦ Timestamp: orario di partenza ✦ Transazioni: elenco delle transazioni raccolte ✦ Previous Hash: riferimento al blocco precedente ✦ Merkle Root: contiene l’hash di tutte le transazioni validate nel blocco ✦ Bits o Difficulty Target: livello di difficoltà nel calcolo dell’hash ✦ Nonce: campo libero da utilizzare per individuare l’hash richiesto
  • 8. LF TPSIT - V 8 Calcolo dell’hash ✦ Validare il blocco si riduce al calcolo dell’hash tramite SHA-256 che rappresenterà in modo univoco il blocco stesso, ma che deve soddisfare il difficulty target ✦ La difficulty è data dal numero di zeri iniziali richiesti per ottenere un hash valido ed è stabilita in modo decentralizzato ✦ È definita da un algoritmo che verifica quanta potenza computazionale (o quanti computer) stia provando a risolvere il puzzle crittografico in un dato momento, verificando il tempo impiegato per risolvere i puzzle precedenti ✦ Questa tecnica di validazione si chiama Proof of Work (PoW): si richiede la dimostrazione di aver effettuato un lavoro che ci è costato in termini di tempo e di sforzo (calcolo dell’hash richiesto con una certa difficulty) ✦ Un’altra tecnica di validazione è la Proof of Stake (PoS): si richiede di dimostrare il possesso di un certo ammontare di criptovaluta, mediato da varie possibili selezioni: casuale, anzianità, velocità o voto ✦ Simulazione di ricerca dell’hash
  • 9. LF Blockchain 9 Smart Contract ✦ Codice memorizzato ed eseguito nella blockchain (Vitalik con Ethereum, 2015) ✦ Come un contratto vero e proprio con valenza giuridica vincola due o più parti tra loro in un accordo da rispettare, uno scambio di valore, e di questo detta tempi, regole e modalità ✦ Esegue le clausole che sono state stabilite al momento della “stipula del contratto”, reagendo a specifiche condizioni operative che possono verificarsi “in corsa”: ogni volta che una di queste si realizza, il codice si attiva in automatico (IFTTT) ✦ In realtà i contratti intelligenti non sono delle semplici istruzioni IFTTT ma dei veri e propri pezzi di codice Turing completi: gli Smart Contract potrebbero essere usati per risolvere qualsiasi problema di calcolo ✦ Essendo caricato su blockchain, il codice è verificabile da chiunque: chiunque può leggere il codice, vedere come funziona e nessuno, nemmeno chi l’ha scritto, può modificarne il contenuto (verificabile, immutabile ed incorruttibile)
  • 12. LF Blockchain 12 Etherisc & Flight Delay DApp
  • 13. LF Blockchain 13 Programmare Smart Contract ✦ Linguaggio di programmazione orientato agli oggetti per scrivere contratti intelligenti su varie piattaforme blockchain, in particolare Ethereum ✦ Ogni programma è eseguito sull’Ethereum Virtual Machine (EVM)
  • 14. LF Blockchain pragma solidity >= 0.7.0 <0.8.0; contract Coin { address public minter; mapping (address => uint) public balances; // Events allow clients to react to specific contract changes you declare event Sent (address from, address to, uint amount); // Constructor code is only run when the contract is created constructor() public { minter = msg.sender; } // Sends an amount of newly created coins to an address // Can only be called by the contract creator function mint(address receiver, uint amount) public { require(msg.sender == minter); require(amount < 1e60); balances[receiver] += amount; } // Sends an amount of existing coins // from any caller to an address function send(address receiver, uint amount) public { require(amount <= balances[msg.sender], "Insufficient balance."); balances[msg.sender] -= amount; balances[receiver] += amount; emit Sent (msg.sender, receiver, amount); } } 14 Solidity