Il Blocco Genesi di Bitcoin
Scopriamo com’è stato creato il primo blocco per avviare la blockchain della Rivoluzione Criptovalutaria
English Version Available HERE; Versione inglese dell’articolo disponibile qui.
TL;DR; com’è fatto e come è stato creato il primo blocco per l’avvio della blockchain di bitcoin?
Nel primo blocco della blockchain di Bitcoin, noto come Blocco di Genesi, Satoshi Nakamoto ha impresso un messaggio che rivela la sua visione: ‘The Times 03/Jan/2009 Chancellor on brink of second bailout for banks’. Questo articolo approfondisce il processo di creazione di questo blocco fondamentale, mostrando come sia stato configurato offline e svelando le peculiarità uniche presenti solo in questo avvio rivoluzionario della blockchain di Bitcoin.
Introduzione
In questi giorni stavo ripercorrendo la storia delle blockchain e delle cryptocurrency e la mia curiosità è stata attratta dal momento dall’avvio di una nuova blockchain e dai cosiddetti blocchi di genesi. Sappiamo bene che una blockchain, nelle varie declinazioni e specializzazioni che si possono trovare ora attive nel mondo, sono costituite da una catena di blocchi di informazione all’interno dei quali sono registrate le informazioni relative alle transazioni, per creare il ledger completo e che ogni blocco è concatenato a quello successivo tramite l’utilizzo di hash delle informazioni stesse e che tale hash è inserito nel blocco successivo così da creare la catena stessa e garantirne una delle proprietà
fondamentali ossia l’immutabilità, nonchè quindi la non ripudiabilità e irreversibilità delle transazioni in esso contenuti (non consideriamo in questa fase i meccanismi di consenso che vengono utilizzati nei ledger distribuiti per identificare il fork valido di una blockchain).
C’è, però, un blocco che differisce da tutti gli altri: il primo blocco della catena.
Cos’ha di particolare questo blocco? Come viene avviata la catena? Quanti nodi servono per avviare un ledger distribuito? Cosa c’è dentro i primi blocchi delle Blockchain crypto più diffuse come Bitcoin, Ethereum, Cardano, Polkadot etc?
Il primo blocco della catena Bitcoin
Partiamo dalla chain che ha dato il là a tutto il mondo blockchain che conosciamo ora ossia Bitcoin: il whitepaper di Satoshi Nakamoto è di Ottobre 2008 “Bitcoin: A Peer-to-Peer Electronic Cash System” mentre il primo blocco è stato coniato nel gennaio 2009, per la precisione il 3 gennaio 2009, alle 19:15.
Al momento della generazione del primo blocco non erano ancora pubblicamente disponibili client (applicativi che oggi chiamiamo wallet) e la generazione del blocco avvenne da parte del miner “satoshi” come si legge nel blocco.
Al momento dell’avvio, infatti, esisteva un solo nodo, quello appunto di Satoshi, solo successivamente andranno ad aggiungersi altri miner.
Le Particolarità del primo blocco Bitcoin
Il processo di mining del Blocco Genesi è stato diverso rispetto al mining dei blocchi successivi, poiché non c’erano transazioni precedenti da includere nel blocco. Pertanto, Satoshi ha creato il Blocco Genesi “manualmente” senza includere transazioni.
Il blocco è quindi stato minato dal validatore per dare avvio alla chain, ma preparato tramite le funzioni di calcolo di hash e valori che saranno poi il cuore del mining in bitcoin richiamandole offline.
Questo Blocco include altre particolarità:
- Blocco Precedente (previous_block): nel Blocco Genesi, questo campo è composto da zeri poiché non ci sono blocchi precedenti.
- Difficulty: il primo blocco aveva una difficulty di 1 che rendeva il mining del blocco eseguibile su hardware molto semplice (Il primo aggiustamento della difficoltà è avvenuto dopo i primi 2016 blocchi, ovvero all’incirca nel marzo 2009, fino ad arrivare all’ordine delle decine di trillioni attuali)
- Rewards non riscattabili: i 50 Bitcoin di rewards per il mining del blocco non sono riscattabili e sono omessi dal database delle transazioni, quindi ogni tentativo di utilizzo di tali BTC verrà rifiutato dal network; non è noto se questo sia stato intenzionale o meno.
- Messaggio Coinbase: il campo “scriptSig” contiene il messaggio citato nel Blocco Genesi: “The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”
Il messaggio nascosto nel primo blocco Bitcoin
Si è speculato molto sul motivo dell’inserimento di questa frase all’interno del primo blocco, cosa che non è mai stata spiegata direttamente; sul web si possono trovare le opinioni di vari analisti sul tema; quelle che sembrano più accreditate vedono da una parte un messaggio indirizzato principalmente alle banche ed ai governi ribadendo lo scopo di Satoshi di creare un sistema che consentisse alle persone di evitare di avere i propri soldi nelle mani delle banche; dall’altra parte c’è chi ci legge una motivazione più tecnica, ossia di dimostrare che il codice non sia stato generato precedentemente a quel momento.
Un’altra cosa particolare dell’avvio di bitcoin è che il secondo blocco è stato minato 6 giorni dopo (il 9 gennaio 2009); questo è tecnicamente dovuto alla combinazione di fattori relativi all’aggiustamento della difficulty, alla presenza di un solo miner (l’algoritmo si modifica per cercare di minare un blocco ogni 10 minuti circa).
La teoria divertente intorno a questo secondo blocco che si può leggere sul web è che Satoshi volesse riferirsi ai 6 giorni che Dio impiega a creare il mondo nel libro della Genesi.
La prima transazione Bitcoin
Per arrivare alla prima vera transazione tra due indirizzi si dovette aspettare ancora alcuni giorni, quando venne pubblicato il primo client bitcoin (9 Gennaio 2009) ed al blocco 170 il 12 gennaio 2009 avvenne la prima transazione di 10 bitcoin fra due indirizzi.
Altra cosa che siamo ormai abituati a vedere nell’avvio delle blockchain più recenti è la presenza di più fasi e di una o più catene di test che anticipano la mainnet; questo non è successo su bitcoin, la catena che leggiamo oggi è quella avviata da Satoshi senza reti di test pubblicamente note (i test venivano eseguiti in locale su piccole reti); la testnet, come la conosciamo oggi, è stata introdotta per la prima volta nel settembre 2010 (blocco 79,764). Questo ha permesso agli sviluppatori di eseguire test più robusti e condividere esperienze senza dover utilizzare la rete principale di Bitcoin.
Riferimenti: