Sei sulla pagina 1di 16

Relazione SCRS

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

La rete Bitcoin consente il possesso e il trasferimento anonimo delle monete;


i dati necessari a utilizzare i propri bitcoin possono essere salvati su uno o
più personal computer o dispositivi elettronici quali smartphone, sotto forma
di "portafoglio" digitale, o mantenuti presso terze parti che svolgono funzioni
simili a una banca. In ogni caso, i bitcoin possono essere trasferiti attraverso
Internet verso chiunque disponga di un "indirizzo bitcoin".
La struttura peer-to-peer della rete Bitcoin e la mancanza di un ente
centrale rende impossibile a qualunque autorità, governativa o meno, il blocco
dei trasferimenti, il sequestro di bitcoin senza il possesso delle relative chiavi
o la svalutazione dovuta all’immissione di nuova moneta. Ciascun nodo della
rete implementa il protocollo Bitcoin.

2
Chapter 2

Bitcoin

Il Bitcoin è una criptovaluta e un sistema di pagamento creato nel 2009 da


Satoshi Nakamoto (persona la cui identità è sconosciuta) che sviluppò un’idea
da lui stesso presentata su Internet a fine 2008. In Bitcoin la quantità di
valuta in circolazione è limitata a priori, inoltre è perfettamente prevedibile
e quindi conosciuta da tutti i suoi utilizzatori in anticipo. L’inflazione da
valuta in circolazione non può quindi essere utilizzata da un ente centrale
per ridistribuire la ricchezza tra gli utenti.
Infatti attualmente ci sono 17 milioni di bitcoins nel mondo e il numero
totale di bitcoin tende asintoticamente al limite di 21 milioni. La disponi-
bilità di nuove monete cresce come una serie geometrica ogni 4 anni; nel
2013 è stata generata metà delle possibili monete e per il 2017 saranno i tre
quarti, in questo modo in meno di 32 anni verranno generate tutte le mon-
ete. All’avvicinarsi di quella data e ipotizzando che la richiesta di bitcoin
crescerà più che proporzionalmente rispetto alla disponibilità degli stessi, i
bitcoin probabilmente subiranno una deflazione nel valore (cioè un aumento
del valore reale) dovuta alla scarsità di nuova moneta.
In ogni modo i bitcoin sono divisibili fino all’ottava cifra decimale (con un
totale quindi di 2,1·1015 unità, chiamate Satoshi), permettendo un completo
aggiustamento del valore in un ambiente deflazionistico. Secondo gli svilup-
patori, in un ambiente con scarsità di bitcoin i nodi anziché finanziarsi con la
creazione di nuovi bitcoin trarranno profitto dalla loro capacità di effettuare
le transazioni, competendo quindi sui prezzi e mantenendoli bassi. Una volta
definito cosa sono, vediamo come si acquisiscono.

2.1 Aquisizione dei Bitcoin


• Ricevere un pagamento per un bene/servizio

3
Capitolo 2 4

• Scambio con altre valute


• Mining

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.

2.2 Implementazione dei bitcoins


2.2.1 Funzioni Hash
Una funzione hash crittografica è una funzione h : 0, 1∗ → 0, 1l che ad una
stringa m di lunghezza qualsiasi, data in input, associa in output un digest
di messaggio h(m) di lunghezza fissata.
Per le funzioni Hash crittografiche valgono le seguenti proprietà:
1. Dato un qualunque m, h(m) deve essere calcolabile in maniera efficace
e veloce.
2. Unidirezionalità o resistenza alle controimmagini (preimage resistant):
dato un qualunque y deve essere computazionalmente impossibile trovare
un n tale che: h(m) = y.
3. Resistenza forte alle collisioni: è impossibile trovare m1, m2 tale che
h(m1) = h(m2) con m1 6= m2.
Quando viene trasmessa una informazione attraverso una rete non sicura, è
importante che l’informazione non venga corrotta durante la trasmissione.
Le funzioni hash crittografiche aiutano a risolvere questo problema, esse
infatti tra le varie proprietà hanno quella di non essere iniettive ma, a livello
computazionale, non permettere di trovare due controimmagini diverse per
una stessa immagine.
Uno degli usi principali delle funzioni hash è dunque quello di oscurare
alcuni dati in modo da limitare l’uso che se ne può fare.
Molti siti web, ad esempio, non memorizzano le password degli utenti nel
proprio database, ma un hash della password. In questo modo il server può
Capitolo 2 5

verificare che un utente inserisca la password corretta controllando l’hash


della password in maniera veloce, ma chiunque tenti di accedere al database
delle password visualizza solamente gli hash, inutili allo scopo di carpire le
credenziali.
Le funzioni hash crittografiche vengono inoltre utilizzate dal sistema Bit-
coin per controllare che le transazioni siano eseguite correttamente, poich´e
esse sono progettate in modo che una minima differenza nell’input cambi in
maniera radicale il risultato.
Come sarà approfondito nel prossimo capitolo, durante ogni transazione
viene firmato digitalmente l’hash della transazione precedente, quindi chi
riceve il pagamento può controllare i vari passaggi di proprietà della moneta
trasferita verificando le firme presenti in ogni transazione.
La modifica di una transazione così non è possibile, poichè gli hash non
corrisponderebbero più. Un altro uso fondamentale delle funzioni hash crit-
tografiche nel sistema Bitcoin è quello fatto nella generazione di nuove mon-
ete. Infatti i bitcoin vengono generati continuamente e vengono dati in pro-
prietà a chi riesce a risolvere il problema matematico del calcolo di una
controimmagine, descritto poco sopra.

Tipi di attacchi
1. Preimage attack: given h, find m such that H(m) = h.

2. Second preimage attack: given m1 , find m2 6 = m1 such that H(m1 )


= H(m2 ).

3. Birthday attack: find m1 and m2 6 = m1 such that H(m1 ) = H(m2 ).

2.2.2 Funzioni Hash Crittografiche


Si tratta di un algoritmo matematico che mappa dei dati di lunghezza arbi-
traria (messaggio) in una stringa binaria di dimensione fissa chiamata valore
di hash, ma spesso viene indicata anche con il termine inglese message di-
gest (o semplicemente digest). Tale funzione di hash è progettata per essere
unidirezionale (one-way), ovvero una funzione difficile da invertire: l’unico
modo per ricreare i dati di input dall’output di una funzione di hash ideale
è quello di tentare una ricerca di forza-bruta di possibili input per vedere se
vi è corrispondenza (match).
In alternativa, si potrebbe utilizzare una tabella arcobaleno di hash cor-
rispondenti.
La funzione crittografica di hash ideale deve avere alcune proprietà fon-
damentali:
Capitolo 2 6

• deve identificare univocamente il messaggio, non è possibile che due


messaggi differenti, pur essendo simili, abbiano lo stesso valore di hash;

• deve essere deterministico, in modo che lo stesso messaggio si traduca


sempre nello stesso hash;

• deve essere semplice e veloce calcolare un valore hash da un qualunque


tipo di dato;

• deve essere molto difficile o quasi impossibile generare un messaggio


dal suo valore hash se non provando tutti i messaggi possibili.

2.3 Bitcoin Wallet


Come abbiamo detto, per detenere i tuoi bitcoin è necessario affidarti ad un
wallet. Concretamente, si tratta di un software sviluppato appositamente
per custodire una specifica moneta virtuale, come ad esempio il Bitcoin. Il
funzionamento, nella pratica, si basa su degli indirizzi.
Gli indirizzi di ricezione permettono, come puoi capire dal nome, di rice-
vere i pagamenti e, quindi, anche di effettuare un deposito nel portafoglio. Al
contrario, per effettuare un pagamento, sarà necessario conoscere l’indirizzo
del destinatario verso il quale poter inviare i fondi.
Chapter 3

Blockchain

Il problema “The Distributed Ledger” prevede di trovare una soluzione


per mantenere un libro contabile contenente una sequenza di transazioni
economiche in maniera distribuita. Le transazioni economiche avvengono
fra agenti (nodi) e ogni agente può aggiungere transazioni al libro contabile,
tutti gli agenti sono d’accordo sul contenuto del libro contabile e non esiste
un’autorità centrale.
La Blockchain è la realizzazione del Distributed Ledger, come evoluzione
dal Centralized Ledger, Decentralized Ledger sino al Distributed
Ledger.

1. Centralized Ledger

(a) La logica centralizzata è rappresentata dal tradizionale Central-


ized Ledger con un rapporto rigorosamente centralizzato Uno-A-
Tanti, dove tutto deve essere gestito facendo riferimento a una
struttura o autorità o sistema centralizzato. Nel Centralized Ledger
la fiducia è nell’autorità, nell’autorevolezza del soggetto o sistema
che rappresenta il “Centro” dell’organizzazione.

2. Decentralized Ledger

(a) Ripropone la logica della centralizzazione a livello “locale” con


“satelliti” organizzati a loro volta nella forma di Uno-A-Tanti che
si relazionano a loro volta in una forma che ripete il modello Uno-
A-Tanti.
Non c’è più un “grande” soggetto Centrale ma ci sono tanti “soggetti
centrali”. La fiducia anche in questo caso è delegata a un soggetto
centrale, logicamente più vicino, ma comunque centralizzato. Le

7
Capitolo 3 8

organizzazioni basate su Decentralized Ledger definiscono una Gov-


ernance che stabilisce delle forme di coordinamento di tipo cen-
tralizzato.

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.

3.1 Struttura Blockchain


La blockchain una lista in continua crescita di record, chiamati blocks, che
sono collegati tra loro e resi sicuri mediante l’uso della crittografia. Ogni
blocco della catena contiene un puntatore hash come collegamento al blocco
precedente, un timestamp e i dati della transazione. Blockchain, è fondamen-
talmente un registro aperto e distribuito che può registrare le transazioni tra
due parti in modo efficiente, verificabile e permanente. Per questo utilizzo,
questo database sfrutta una rete peer-to-peer che si collega ad un protocollo
per la convalida dei nuovi blocks. Una volta registrati, i dati in un blocco
non possono essere retroattivamente alterati senza che vengano modificati
tutti i blocchi successivi ad esso, il che necessiterebbe il consenso della mag-
gioranza della rete. La blockchain è una base di dati usata come un libro
contabile decentralizzato e distribuito usato per registrare le transazioni su
diversi computer, facendo in modo che i record non possano essere modificati
senza alterare tutti i blocchi successivi ad esso e senza la collusione della mag-
gioranza della rete. Questo permette agli utenti che utilizzano il blockchain di
poter controllare le operazioni in modo economico. L’autenticazione avviene
tramite la collaborazione di massa e alimentata da interessi collettivi; il risul-
tato di tutto ciò è un flusso di lavoro robusto dove la competenza dei parte-
cipanti in materia di sicurezza dei dati non è necessaria. L’utilizzo di questa
tecnologia consente anche di superare il problema dell’infinita riproducibilità
di un bene digitale e della duplice spesa. Il blockchain è descritto come un
protocollo di scambio valuta e su di esso sono registrate tutte le transizioni
fatte in bitcoin dal 2009 ad oggi, rese possibili dall’approvazione del 50%+1
dei nodi che compongono il blockchain stesso. Un blockchain database con-
siste in due tipi di record: le transazioni e i blocchi. Quest’ultimi contengono
lotti di transazioni valide che sono hashate e codificate all’interno di un
Capitolo 3 9

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

Il blockchain usa differenti schemi di timestamp per serializzare le modi-


fiche.
La crescita del blockchain decentralizzato però, va a pari passo con il
rischio di una centralizzazione dei nodi, questo perché le risorse informatiche
richieste per operare e gestire dati sempre più grandi, diventano sempre più
costose infatti, molti nodi miner si aggregano in pool per riuscire a completare
i blocchi ed ottenere cryptovalute.
Le transazioni sono raggruppate nei blocchi del blockchain e il numero di
transazioni all’interno di ognuno di questi blocchi varia in base alla dimen-
sione della transazione stessa.
La dimensione della transazione, invece, varia in base al numero di input
e di output della stessa.
Un blocco è composto da due parti principali: l’header e il body.
Mentre le transazioni sono racchiuse nel body del blocco, nell’header sono
presenti sette campi di gestione del blocco stesso.
Un nodo, dopo aver verificato l’intero blockchain, raccoglie/colleziona
le nuove transazioni generate ancora non validate e indica/suggerisce alla
rete quale dovrebbe essere il nuovo blocco. I computer usano la funzione
crittografica di hash per stimare l’output fino a che non risulta inferiore al
valore di target (valore dato dal campo ‘bits’ nell’header del blocco).
Il primo nodo che risolve il blocco, lo trasmette nella rete dove viene
accettato come blocco successivo nella catena.
Sia X la funzione di hash fissata della rete e si consideri x come le
transazioni pendenti e n rappresenta il valore di nonce.
L’hash di output inizierà con degli zero e dovrà essere inferiore al valore
di target, il problema ora è determinare il valore del nonce per far si che
questo avvenga.
Il numero degli zeri all’inizio dell’output sta ad indicare la difficoltà per
risolvere il blocco. La difficoltà è dovuta al fatto che la funzione crittografica
di hash genera numeri randomici, difatti, la variazione anche di un solo
bit nell’input della funzione porta ad un output completamente differente
rispetto a quello calcolato senza la variazione; in questo modo diventa prati-
camente impossibile da predire. Una volta che il blocco è stato risolto, il suo
hash, come un’impronta digitale, lo rappresenta univocamente ed è usato an-
che come riferimento al blocco precedente. Successivamente alla risoluzione
del blocco, la rete automaticamente aggiusta il valore di target.
L’intero processo di validazione dei blocchi è chiamato Mining.
È possibile, per diversi nodi, validare più blocchi contemporaneamente,
por- tando così ad una biforcazione della catena.
In questo caso, i Miner (coloro che fanno mining) lavorano per la vali-
dazione dei blocchi su entrambe le biforcazione della catena ma, appena in
Capitolo 3 11

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.

3.2 Transazione Bitcoin


• Caso pratico

– Bob comanda alla sua applicazione su PC o smartphone di creare


un indirizzo. Il software restituisce una sequenza alfanumerica
da 26 a 35 caratteri. Questo è un esempio: 12gXGyXWkvyDA-
jVKZHyGGstVYyXJ6ZjgqV
– Bob copia l’indirizzo e lo mostra al mittente tramite qualunque
mezzo di comunicazione
– Alice inserisce nel suo software l’indirizzo di Bob e la quantità
di Bitcoin da inviare, inoltre specifica l’ammontare della commis-
sione da pagare al minatore (detto "miner") per convalidare la
transazione. Ad oggi i più comuni software stabiliscono automati-
camente una commisione fissa a 0,00001 bitcoin fino a 1 kilobyte
(in genere nessuna transazione pesa più di un kilobyte).
– Bob vede immediatamente sul suo software la transazione avvenuta,
ma prima di considerare il pagamento effettuato attende che la
transazione sia inserita nella blockchain.
– In un massimo di 10 minuti circa la transazione viene inserita in
un blocco della blockchain da parte del miner, che ha convenienza
a inserirla perché in questo modo ottiene la commissione pagata
da Alice.
– Bob può sentirsi sicuro che la transazione è confermata con l’aumentare
di blocchi che vengono aggiunti alla blockchain conseguentemente
a quello che contiene la transazione. Tutti coloro che possiedono
un PC e una connessione internet possono scaricare l’intera blockchain
sul proprio dispositivo o visualizzarla online (per esempio su block-
explorer) e verificare le transazioni che sono state inserite nei bloc-
chi. I più comuni software comunicano automaticamente al pro-
prietario quando la transazione è confermata, in base ai loro stan-
dard. Per esempio la piattaforma Coinbase attende che ci siano
almeno 6 nuovi blocchi (1 ora circa).
Capitolo 3 12

• Caso tecnico
Gli step di una transazione di bitcoin da un pagante a un ricevente
sono i seguenti:

– Creazione di una chiave privata (una sequenza casuale di cifre) da


parte del ricevente
– La chiave privata è convertita in chiave pubblica attraverso l’algoritmo
della curva ellittica
– La chiave pubblica viene convertita in un hash
– L’hash della chiave pubblica viene ridotto a indirizzo - primi 4
passaggi avvengono istantaneamente -
– L’indirizzo viene mostrato al pagante
– Il pagante decodifica l’indirizzo in hash della chiave pubblica
– Il pagante crea la transazione, specificando l’output e il “signature
script” che include l’hash della chiave pubblica del ricevente
– Il pagante conferma la transazione inviando tutti i bitcoin presenti
nell’input in uno o più output
– La transazione viene trasmessa online dal pagante a tutta la rete
– I minatori inseriscono nella blockchain la transazione, che viene
riconosciuta così dalla comunità
– Il ricevente firma il signature script con la propria chiave privata e
pubblica, dimostrando così di essere proprietario dell’output della
transazione. Ora può spendere quell’output come input per una
successiva transazione

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.

• La chiave privata viene convertita in una chiave pubblica tramite un


procedimento matematico. Comunemente è il software di Bob a gener-
are automaticamente la chiavi quando Bob chiede all’applicazione di
creare un indirizzo da comunicare al mittente. In realtà Bob potrebbe
utilizzare una chiave privata facilmente ricordabile, come “sum qui
sum”, e ricavare Public key e indirizzo da questa. È teoricamente
possibile ma statisticamente impraticabile scoprire la chiave privata
Capitolo 3 13

partendo da quella pubblica: poiché il procedimento matematico ap-


plicato è unidirezionale, il processo inverso per indovinare la chiave
privata richiederebbe una quantità di tentativi e una potenza di cal-
colo talmente enorme da essere al di là di ogni possibilità. Se ci fosse un
super- computer in grado di indovinare la chiave privata, allora proba-
bilmente qualsiasi password nel mondo sarebbe vulnerabile e i bitcoin
potrebbero non essere la prima fonte di preoccupazione.

• La chiave pubblica viene a sua volta crittografata e accorciata tramite


un hash. Possiamo chiamare la nuova chiave pubblica Public Key Hash.
La chiave pubblica originaria invece è detta Full Public Key.

• L’hash della chiave pubblica viene convertito in una riga di massimo 35


caratteri (per comodità pratica), che costituisce l’indirizzo del portafoglio
di Bob. Per esempio: 12gXGyXWkvyDAjVKZHyGGstVYyXJ6ZjgqV.

• Bob spedisce l’indirizzo ad Alice.

• Il software di Alice decodifica immediatamente l’indirizzo in una nor-


male Public Key Hash

• Alice crea la transazione. Si può pensare la transazione come un codice


che contiene diverse informazioni, ciascuna rappresentabile come una
stringa composta da molti caratteri:

– (a) l’input: uno o più output di una transazione precedente fatta


nei confronti di Alice, da cui ella attinge i bitcoin che «spedisce»
nel nuovo output
– (b) l’output: la quantità di bitcoin spediti. Possono esserci più
output per ogni transazione, ciascuno identificato con un ID speci-
fico (il «vout»)
– (c) l’istruzione per la firma (la "signature script"), ovvero le le
istruzioni che Bob dovrà fornire per convalidare la transazione,
dimostrando di essere il possessore del nuovo output. È proprio
per la creazione dello script che il software di Alice ha bisogno
del Public Key Hash fornito da Bob. Le informazioni necessarie
per validare la firma sono due, entrambe già in possesso di Bob:
la full Public Key e la Private Key, che dovranno combaciare col
Public Key Hash specificato da Alice nello script. In certi casi
le parti della transazione si possono accordare per modificare le
richieste dello script: questi metodi sono utilizzati specialmente
come garanzia negli acquisti online
Capitolo 3 14

– Tutti i bitcoin che Alice ha a disposizione su un particolare input


vengono "spediti" nella transazione. Infatti nella transazione è
coinvolta sempre l’intera quantità di bitcoin presenti nell’input
anche se Bob ne ha richiesti molti meno. Se Alice dispone di un
input di 100 bitcoin e ne trasferisce 20 a Bob, l’input è sempre
trasferito nella sua interezza di 100 bitcoin. In questo caso avrà
due output diversi, uno di 80 bitcoin (al lordo della commissione
per il miner) che tornano al portafoglio di Alice (il change output),
l’altro di 20 bitcoin che vanno all’indirizzo di Bob. L’unico caso
di transazione che abbia un solo input e un solo output è quello in
cui l’input corrisponde esattamente all’ammontare richiesto da chi
riceve i bitcoin. Spesso le transazioni hanno più output, e quindi
i bitcoin trasferiti vanno ad indirizzi con diverse chiavi pubbliche
e private. Il software che utilizziamo per conservare, ricevere o
spedire bitcoin presenta sempre un “conto” con un certo numero
di bitcoin. In realtà tale conto esiste solo implicitamente, non
c’è uno spazio in cui quei bitcoin sono depositati. Il portafoglio
ci comunica un certo valore semplicemente ricercando all’interno
della blockchain il numero di ouput non spesi (i bitcoin che sono
stati ceduti in una passata transazione) che siamo in grado di
spendere tramite le nostre chiavi private, quindi utilizzandoli come
input per nuove transazioni.

• 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.

• I minatori inseriscono le transazioni ancora non confermate nella blockchain


Per inserire le transazioni all’interno della blockchain il miner deve
creare un nuovo blocco, processo che richiede una quantità di cal-
colo molto elevata e dunque una spesa in energia elettrica e stru-
menti. Un miner ha interesse a inserire quante più transazioni nel
blocco che vuole creare poiché guadagnerà tutte le commissioni pa-
gate su ciascuna transazione. Se una transazione non include alcuna
commissione, il miner non ha alcun interesse economico nell’inserirla
nel blocco. Per inserire le transazioni nel blocco, i minatori partono
dagli id delle transazioni (txid), ciascuno dei quali rappresenta l’hash
di tutte le informazioni inerenti una singola transazione. Bob ora vuole
spendere i suoi nuovi bitcoin in una nuova transazione, il destinatario
è Charlie. Bob segue la stessa procedura che ha seguito Alice, creando
Capitolo 3 15

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.

Potrebbero piacerti anche