Whitepaper – Transazioni

Indice

Finalmente entriamo nel vivo del whitepaper di Satoshi.

In questo primo capitolo scopriremo cosa sono e come avvengono le transazioni su Bitcoin.

Che cos’è una moneta digitale?

La nostra mente è abituata a concepire una moneta come qualcosa di tangibile e unico.

Quando paghiamo una persona per un servizio o per un prodotto, apriamo il nostro portafogli e trasferiamo fisicamente le nostre monete al venditore.

Lo stesso vale quando paghiamo con carta di credito: al momento del pagamento l’emittente della carta addebita il nostro conto corrente con il costo del prodotto e trasferisce tale importo al conto corrente del negoziante.

Ma con una moneta digitale come avviene il trasferimento di proprietà?

Partiamo dalla definizione di moneta digitale data da Satoshi.

Una moneta digitale è una catena di transazioni, o per essere più precisi, di firme digitali.

Una concetto completamente diverso da quello visto negli esempi precedenti.

La figura riportata schematizza la catena delle transazioni ideata da Nakamoto.

Piccola pausa!

Per evitare che questo schema ci stia sullo stomaco come la peperonata, dobbiamo prima introdurre alcuni concetti, quali:

  • chiave privata
  • chiave pubblica
  • hash

Cos’è una chiave pubblica e una chiave privata?

Può il lettore dire quali sono i due numeri moltiplicati tra loro che produrranno il numero 8616460799? Penso che sia improbabile che qualcuno ci riesca, a parte me stesso.

William Stanley Jevons

Per realizzare il suo progetto Satoshi utilizza la crittografia asimmetrica o crittografia a chiave pubblica, dove ad ogni persona coinvolta nella transazione è associata una coppia di chiavi:

  • La chiave privata dimostra la proprietà dei nostri fondi ed è utilizzata per creare le firme necessarie a spendere i nostri Bitcoin. Rivelare la chiave privata significa cedere il controllo dei Bitcoin garantiti da quella chiave, per questo motivo è consigliabile tenerla protetta e sottoporla a backup.
  • La chiave pubblica viene calcolata a partire dalla chiave privata attraverso una moltiplicazione a curva ellittica. La funzione è una funzione irreversibile, il che significa che non è possibile recuperare dalla chiave pubblica la chiave privata. A differenza della chiave privata, la chiave pubblica deve essere rivelata e distribuita senza timori perchè ci permette di identificare dove ricevere i Bitcoin.

La crittografia asimmetrica permette di utilizzare le chiavi per due scopi:

  • Inviare un messaggio cifrato ad un destinatario: ad esempio, se Romeo vuole inviare un messaggio d’amore a Giulietta, senza che Tebaldo riesca a decifrarlo, utilizzerà la chiave pubblica di Giulietta per crittografare il messaggio e Giulietta utilizzerà la sua chiave privata per decifrare il messaggio ricevuto da Romeo. Tebaldo non avrà nessun modo per intercettare e leggere il messaggio.
  • Verificare l’autenticità di un messaggio: Romeo utilizza la sua chiave privata per cifrare il messaggio. Giulietta verifica l’autenticità del messaggio decifrandolo con la chiave pubblica di Romeo. A differenza di prima, Tebaldo e tutti i possessori della chiave pubblica di Romeo, sono in grado di decifrare il messaggio.

Cos’è un Hash?

L’hash è una funzione, o un algoritmo matematico, che trasforma una qualsiasi stringa d’ingresso di lunghezza arbitraria in una stringa di lunghezza predefinita, chiamata digest.

Per Bitcoin, Satoshi, ha utilizzato la funzione di hash SHA-256. La funzione è stata sviluppata nel 2001 ed è priva di royalties, ed è probabilmente per questo che Nakamoto l’ha utilizza.

Come dice l’algoritmo stesso, la funzione SHA-256 produce in uscita un digest di 256 bit.

Vediamo qualche esempio.

Esempio 1

Ingresso:

mi chiamo Davide

Uscita:

3a03493ee04ac27e08cbc3633856070a64c7bf8f5073053cf32b378fab59ef12

Esempio 2

Ingresso:

Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura ché la diritta via era smarrita. Ahi quanto a dir qual era è cosa dura esta selva selvaggia e aspra e forte che nel pensier rinova la paura!

Uscita:

c1de3028343d9fb99dcb4e5fcd5724d7d7ac56b396b8a2160f60882f03afa6f2

Come potete notare, l’uscita della funzione è sempre di lunghezza predefinita pari a 256 bit.

Vi lascio qui sotto il sito dove potete divertirvi a calcolare tutte le funzioni di hash che desiderate.

https://xorbin.com/tools/sha256-hash-calculator

Una caratteristica fondamentale della funzione di hash è che non esiste una funzione inversa che permetta dall’uscita di recuperare l’ingresso ed è per questa proprietà che la funzione è considerata sicura.

Come avviene una transazione?

Ora abbiamo gli strumenti necessari per comprendere lo schema inziale delle transazioni.

Le avventure di Bob e Alice alle prese con le transazioni di Bitcoin hanno un po’ stancato, quindi usiamo un po’ di fantasia e cambiamo personaggi.

Il buon Pippo, noto Bitcoiner, ha di voglia utilizzare i suoi Bitcoin per comprare un gelato nella gelateria di Berenice che da poco ha deciso di accettare Bitcoin come sistema di pagamento.

Pippo, una volta scelti i suoi gusti preferiti, pistacchio e limone croccante, si avvicina alla cassa della gelateria per pagare.

Berenice fornisce a Pippo la sua chiave pubblica, cioè l’indirizzo del wallet dove desidera ricevere i fondi.

Pippo inserisce la chiave pubblica ricevuta da Berenice e l’importo di pagamento dovuto nel suo wallet e conferma il pagamento. Quest’ultimo piccolo gesto innesca una magia.

La chiave pubblica di Berenice e gli importi precedenti ricevuti da Pippo, entrano come ingressi nella funzione di hash, il risultato in uscita viene poi firmato digitalmente da Pippo attraverso la sua chiave privata.

La chiave privata di Pippo fornisce così la firma che sblocca gli importi ricevuti dalle transazioni precedenti, dimostrando così alla rete Bitcoin di possedere i fondi per pagare Berenice.

Il fatto di unire tramite hash le transazioni precedenti ricevute da Pippo e la chiave pubblica fornita da Berenice, obbliga la stessa Berenice a dover produrre una firma digitale valida (attraverso la sua chiave privata) per poter spendere un giorno l’importo ricevuto da Pippo.

Pippo può ora guastarsi in santa pace il proprio gelato mentre Berenice se la ride di non dover pagare commissioni sull’importo ricevuto.

Come evitare la doppia spesa?

Allo stato attuale però non abbiamo ancora risolto il problema della doppia spesa.

Quindi Pippo, dopo aver pagato Berenice e gustato il gelato, potrebbe andare in caffetteria da Brando e pagare il caffè con gli stessi fondi utilizzati per pagare il gelato da Berenice.

Come può quindi Brando verificare che Pippo non abbia già speso quei Bitcoin?

La risposta la troviamo sull’ultimo spezzone di questo capitolo del whitepaper.

Per risolvere il problema della doppia spesa è necessario registrare tutte le transazioni in modo tale da poter verificare che il precedente proprietario non abbia spesso più volte la stessa moneta.

Ma per effettuare questo controllo bisogna introdurre un ente che faccia da garante.

Ma ne noi, e nemmeno Satoshi, vogliamo che il destino dell’intero sistema monetario dipenda ancora una volta da una banca centrale.

Quindi che fare?

Occorre rendere pubbliche tutte le transazioni in modo tale che i partecipanti alla rete siano in grado di verificarle.

Ma come mettere d’accordo tutta la rete sulla validità storica e sull’ordine temporale delle transazioni?

La soluzione adottata da Satoshi Nakamoto è l’introduzione dello Timestamp.

Le domande sembrano non aver fine e vi chiederete…che cos’è lo Timestamp?

Vi lascio con la curiosità fino al prossimo articolo 😉

Fonti e approfondimenti

Condividi questo post

Se apprezzi il lavoro che facciamo puoi aiutarci a mantenere i contenuti sempre di più aggiornati donandoci qualche Satoshi

CONTATTACI

Compila il form per qualsiasi richiesta di assitenza.