Whitepaper – Timestamp

Indice

Come abbiamo visto nel precedente articolo, Satoshi ha dovuto affrontare il problema della doppia spesa senza dover introdurre un’autorità centrale.

La sua proposta è stata di rendere pubblica la registrazione di tutte le transazioni distribuendole alla rete peer-to-peer.

Così facendo, inevitabilmente, si pone un altro problema: come mettere d’accordo tutta la rete sull’ordine temporale delle transazioni? Nel caso di una doppia spesa, quale delle due transizioni considerare valida perchè arrivata prima dell’altra?

Questo paragrafo del whitepaper risponderà ai nostri quesiti.

Cerchiamo prima di capire cos’è lo Timestamp.

Un po’ di storia…

Negli anni ‘90, presso i laboratori di ricerca BellCore Labs, i ricercatori Stuart Haber e W. Scott Stornetta, misero gli occhi su un progetto di ricerca che si poneva l’obiettivo di risolvere il problema dell’autenticazione dei documenti digitali. La domanda, per nulla banale, che il progetto poneva era: come si poteva essere sicuri che la versione di un documento che si stava leggendo non fosse stata alterata rispetto all’originale?

Da questa domanda ebbero inizio le notti insonni dei due ricercatori.

L’idea di base è quella di utilizzare qualcosa concordato da tutti.

Indovinello: qual’è l’unica cosa su cui tutta la popolazione del mondo può concordare?

………

Il tempo.

Usare il tempo significa concordare sul fatto che un documento sia esistito in una particolare forma in un determinato momento.

Cos’è il Timestamp?

A livello pratico, i due cercarono di creare un’impronta digitale unica e universale per ogni contenuto.

Per creare queste impronte furono sfruttate delle funzioni di hash (se vi serve un ripasso, rivedetevi il precedente articolo Whitepaper – Transazioni) aventi come input il titolo, il contenuto stesso e la data.

Il risultato di questa funzione è un’impronta digitale unica, chiamata appunto hash o timestamp.

Prendiamo come esempio questo stesso articolo: ha delle proprietà come il titolo, il testo, le immagini, la data… Tutti questi elementi sono gli ingressi della nostra funzione di hash. L’hash generato è unico e ci consente di dimostrare a persone, social media e motori di ricerca che i nostri contenuti non sono stati manomessi.

Se andassi a cambiare anche solo una virgola di questo articolo anche l’hash sarebbe diverso.

Ancora oggi, dal 1995, i nostri due ricercatori pubblicano sull’edizione domenicale del New York Times un trafiletto dal nome “Notices & Lost and Found” l’hash di tutti i documenti elaborati dalla loro società Surety.

Rendendo pubblico l’hash attraverso un giornale, si rende impossibile a tutti, azienda compresa, modificare qualsiasi hash dei documenti creati fino a quel momento.

Per farlo, si dovrebbe sostituire l’hash, presente sul trafiletto, in tutte le copie del giornale fino ad allora pubblicate…ma vista la vasta pubblicazione del New York Times la cosa è praticamente impossibile.

Possiamo quindi affermare di aver avuto sotto il naso, dal 1995, una vera e propria blockchain.

Server USENET

Se Haber e Stornetta utilizzarono il New York Times come prova del loro archivio di documenti, Nakamoto, utilizza (come esempio) il server USENET per la marcatura temporale delle transazioni.

L’introduzione di USENET è precedente ad internet, e risale agli inizi degli anni 80’. USENET è formato da una catena di server situati in ogni angolo della terra tra loro interconnessi. Ognuno di loro raccoglie in una data gerarchica articoli, messaggi o news, che gli utenti aventi accesso alla rete inviano, creando degli archivi ad accesso pubblico organizzato in aree tematiche.

Schema di pubblicazione delle transazioni

Abbiamo ora gli elementi per analizzare lo schema proposto da Satoshi nel suo whitepaper.

  1. tutte le transazioni, che avvengono più o meno contemporaneamente, vengono raggruppate in blocchi. Questo migliora notevolmente l’efficienza del protocollo perchè permette di applicare l’hash solo ad un blocco di transazioni e non alla singola transazione.
  2. il blocco delle transazioni correnti e l’hash in uscita dal blocco precedente vengono dati in pasto alla funzione di hash. Il risultato della funzione di hash viene pubblicato in un post del server USENET che gli applica la marcatura temporale dimostrando l’esistenza delle transazioni riassunte in quel blocco.
  3. Come vediamo dallo schema, ogni funzione di hash viene elaborata prendendo come ingresso l’uscita della funzione di hash del blocco precedente. Questo meccanismo crea una catena dove ogni blocco viene rafforzato ad ogni nuova aggiunta di uno timestamp. Vale a dire che la genuinità e l’ordine di un determinato blocco si consolidano ad ogni aggiunta del blocco successivo.

Essendo i risultati degli hash resi pubblici, tutti noi possiamo verificare che ognuno di loro formi effettivamente una catena lineare e che, rifacendo il calcolo, l’hash del nuovo blocco sia effettivamente il risultato ottenuto dall’hash del blocco precedente.

In caso di doppia spesa, siamo in grado di dimostrare che in passato è già esistito un blocco che ha utilizzato quegli input. Un input diverso, darebbe, come abbiamo visto, un risultato dell’hash diverso e la catena dei blocchi non resterebbe più in piedi.

Timechain

L’introduzione dello Timestamp ha permesso a Satoshi di registrare nel tempo le transazioni e, di conseguenza, di verificare quale transazione considerare valida perchè arrivata temporalmente prima delle altre, scartando così i possibili tentativi di doppia spesa.

Infatti, essendo l’hash del blocco B calcolato dall’hash del blocco A, viene automaticamente dimostrato che il blocco A è antecedente al blocco B.

Marchiando ogni transazione con il timestamp si ha la capacità di seguire la provenienza e la direzione dell’importo, creando così quella che viene definita una catena di blocchi: la Timechain.

Spesso si sente parlare di blockchain, ma lo stesso Nakamoto nel suo codice utilizza il termine Timechain, ci sarà occasione di trattare questo argomento.

Conclusioni

Ricordiamoci ora cosa ha detto Satoshi nelle prime righe del Withepaper: un sistema monetario digitale completamente decentralizzato che non si affida a un’autorità centrale per l’emissione di valuta o per il regolamento e la convalida delle transazioni.

Abbiamo letto bene no? non si affida ad un’autorità centrale…e USENET, pur essendo una catena di server non è puramente decentralizzato.

Questo è solo un passaggio intermedio che Satoshi utilizza per spiegarci il timestamp prima di passare al meccanismo vero e proprio di pubblicazione dei blocchi: la Proof-Of-Work.

Il passo successivo lo vedremo nel 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.