Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Cruciani, Pennacchi
April 3, 2018
Contents
1 La rete Bitcoin 2
2 Bitcoin 3
2.1 Aquisizione dei Bitcoin . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Implementazione dei bitcoins . . . . . . . . . . . . . . . . . . . 4
2.2.1 Funzioni Hash . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.2 Funzioni Hash Crittografiche . . . . . . . . . . . . . . . 5
2.3 Bitcoin Wallet . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 Blockchain 7
3.1 Struttura Blockchain . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Transazione Bitcoin . . . . . . . . . . . . . . . . . . . . . . . . 11
1
Chapter 1
La rete Bitcoin
2
Chapter 2
Bitcoin
3
Capitolo 2 4
A partire dal primo luglio 2016, nella città di Zugo, capitale di uno dei
Cantoni più ricchi della Svizzera, è possibile pagare in bitcoin alcuni servizi
pubblici, tra cui la sanità e i trasporti. Alcuni commercianti, utilizzando siti
di cambio, permettono di cambiare bitcoin in diverse valute, ivi compresi
dollari statunitensi, euro, rubli russi e yen giapponesi. Per prima cosa, è co-
munque importante sapere che per possedere i bitcoin, quindi poter effettuare
pagamenti o riceverne, è necessario avere un Bitcoin Wallet, letteralmente un
portafoglio per bitcoin. Non si tratta però di un classico portafoglio, come
siamo soliti intenderlo.
Tipi di attacchi
1. Preimage attack: given h, find m such that H(m) = h.
Blockchain
1. Centralized Ledger
2. Decentralized Ledger
7
Capitolo 3 8
3. Distributed Ledger
(a) Reale e completa logica distribuita dove non esiste più nessun
centro e dove la logica di governance è costruita attorno a un
nuovo concetto di fiducia tra tutti i soggetti. Nessuno ( ma proprio
nessuno) ha la possibilità di prevalere e il processo decisionale
passa rigorosamente attraverso un rigoroso processo di costruzione
del Consenso.
Merkle tree (hash tree). Ogni blocco include l’hash del blocco precedente
creando così il collegamento tra due blocchi. L’iterazione di questa proce-
dura forma la catena e garantisce l’integrità del blocco precedente, questo
fino al blocco di genesi. È inoltre possibile che blocchi separati possano es-
sere prodotti simultaneamente, questo provoca una biforcazione (‘fork’) nella
catena della blockchain. Ogni blockchain, oltre ad una cronologia basata su
un hash sicuro, ha uno specifico algoritmo per segnare diverse versioni della
cronologia che si va a creare con le biforcazioni in modo che una con un valore
più alto possa essere selezionata rispetto alle altre. I blocchi non selezionati
per l’inclusione nella catena sono chiamati blocchi orfani. I peer che sup-
portano il database hanno di volta in volta versioni diverse della cronologia.
Mantengono solo la versione con punteggio più alto del database a loro nota.
Ogni volta che un peer riceve una versione con punteggio più alto (solita-
mente la vecchia versione con un singolo nuovo blocco aggiunto) estende o
sovrascrive il proprio database e ritrasmette il miglioramento ai propri pari.
Non c’è mai una garanzia assoluta che qualsiasi voce particolare rimarrà nella
migliore versione della storia per sempre. l blockchain decentralizzato sfrutta
il passaggio di messaggi ad-hoc e un networking distribuito per fare in modo
di memorizzare i dati su tutta la sua rete ed evitare di avere un single point
of failure in modo che i cracker non possano sfruttare questa centralizzazione
per abbattere l’intero sistema.
Tra i metodi di sicurezza del blockchain abbiamo anche la crittografia a
chiave pubblica.
• La chiave pubblica è un indirizzo su blockchain.
• I token di valore inviati nella rete vengono registrati come appartenenti
a questo indirizzo.
• La chiave privata, invece, è come una password che permette al suo
proprietario di accedere alle proprie risorse digitali oppure di interagire
con le varie funzionalità di blockchain.
• I dati salvati sul blockchain sono considerati incorruttibili.
Ogni nodo o miner nel sistema decentralizzato ha una copia del blockchain,
difatti, la data quality è mantenuta grazie ad una massiva replicazione del
database.
Non esiste nessuna copia ufficiale centralizzata e nessun utente è più cred-
ibile di altri, tutti sono allo stesso livello di credenziali.
I nodi miners (ovvero gli utenti), dopo aver verificato l’intero blockchain,
validano le nuove transazioni, le aggiungono al blocco che stanno costruendo
e, una volta completato il blocco, lo trasmettono agli altri nodi della rete.
Capitolo 3 10
una delle due viene validato ed aggiunto un nuovo blocco, tutti i miners che
lavoravano sull’altra si spostano su quella a cui è stato aggiunto un blocco
nuovo, trasformando così il blocco abbandonato in una blocco orfano.
Questo accade perché l’obbiettivo dei miner è quello di lavorare per es-
tendere la catena in lunghezza.
• Caso tecnico
Gli step di una transazione di bitcoin da un pagante a un ricevente
sono i seguenti:
Vediamo nel dettaglio questi punti, identificando Bob come il ricevente, Alice
il pagante e una transazione con un solo input
• Bob genera in modo del tutto casuale una chiave privata, che viene
salvata sul suo computer.
• Alice trasmette via internet al software di tutti gli altri nodi tutte
le informazioni relative alla transazione. I nodi sono rappresentati da
tutti coloro che hanno il software Bitcoin Core sui propri pc/dispositivi
o numerosi altri software che permettono di "collegarsi" al network.
una transazione specificando output, signature script (per cui gli serve
il public key hash di Charlie), timestamp e versione del software.
• Bob però deve dimostrare di essere il possessore dei bitcoin che invia
a Charlie, ovvero i bitcoin presenti nell’input della transazione. Tale
input è anche l’output della transazione fra Alice e Bob. Ricordiamo
che nella sua transazione Alice ha inserito una signature script con il
Public Key Hash di Bob. Quest’ultimo per dimostrare di possedere
l’ouput di quella transazione deve porre la sua firma (signature). Bob
inserisce quindi la sua Full Public Key, verificando che corrisponde al
Public Key Hash dato in precedenza ad Alice, e la sua Private Key, che
rappresenta la conferma che Bob solo è la persona che ha originato in-
izialmente quella Public Key. Infatti seppur sia teoricamente possibile,
è per motivi statistici «infattibile» scoprire la Private Key partendo
dalla Public Key. Il procedimento di firma è del tutto automatizzato
dal software Bitcoin.