Genesi Svelata: Esplorando il Primo Blocco di Ethereum

Daniele De Faveri
5 min readJan 13, 2024

--

Il Blocco di Genesi di Ethereum: l’inizio di un’innovazione decentralizzata che ha cambiato il panorama delle criptovalute e della blockchain.

English Version Available HERE; Versione inglese dell’articolo disponibile qui.

Il blocco di genesi di Ethereum — Il primo passo verso una rivoluzione tecnologica decentralizzata

TL;DR; come è stato avviato Ethereum? Cosa è stato configurato nel suo blocco di genesi?

La mainnet di Ethereum è stata avviata nel 2015, diversi anni dopo Bitcoin, ed il suo blocco di genesi integra tutta l’esperienza pregressa fata sulla rete bitcoin; Questo articolo esplora l’entusiasmante inizio della mainnet Ethereum e getta luce sui dettagli fondamentali del suo primo blocco.

Introduzione

L’avvio della mainnet Ethereum è avvenuto il Jul 30, 2015, 3:26:13 AM+UTC, a circa due anni dalla pubblicazione del white paper da parte di Vitalik Buterin (27 Novembre 2013); la rete Ethereum, sfruttando anche l’esperienza maturata da Bitcoin negli anni precedenti ha avuto una genesi più lineare (o più pubblicamente visibile) di quanto seguito da Bitcoin, e questo ha anche influenzato alcune caratteristiche del blocco 0 di Ethereum che andremo ad analizzare.

Il tempo intercorso tra il rilascio del white paper e l’avvio della mainnet Ethereum ha visto l’avvio di una testnet “Olympic” nel maggio 2015 per poi avviare una mainnet nuda (“barebone implementation of the Ethereum project”); la mainnet Frontier è stata, infatti, avviata per utenti tecnici early adopter, ma, così come si legge nel blog di avvio di Frontier, con un set completo di funzionalità ed una codebase congelata per due settimane per consentire al team di finalizzare gli ultimi step e agli utenti di scaricare ed eseguire specifiche versioni del software.

Il messaggio di avvio della mainnet ethereum sul Blog

Da sottolineare come viene ribadito che non vi è un lancio centrale della mainnet, ma che la mainnet stessa emerge dal consenso (se vediamo come vengono avviate molte nuove blockchain al momento della scrittura di questo articolo, queste prendono la forma di un lancio molto più centralizzato).

Il Blocco di Genesi di Ethereum

Il processo di avvio non ha comunque modificato la necessità di configurare un blocco di Genesi, un blocco 0 da cui far partire la chain; il blocco 0 della rete Frontier è quello che ancora oggi troviamo nella rete Ethereum, nonostante i fork ed il passaggio alla proof of stake.

Il Blocco 0 Di Ethereum

Come vediamo dalla sintesi visualizzabile tramite il block explorer Etherscan.io, il blocco di genesi di Ethereum è prodotto da un miner GENESIS che ha un indirizzo non valido, ma la cosa più evidente è che sono presenti 8893 transazioni.

La configurazione della ICO di Ethereum sul Blocco di genesi

le transazioni presenti nel blocco di genesi

Tutte queste transazioni sono generate da un indirizzo di genesi verso indirizzi ETH (0x…) trasferendo una determinata quantità di ETH.

Queste transazioni sono i valori risultanti dalla ICO effettuata da ethereum.org a partire dal 22 Luglio 2014 per finanziare l’avvio della chain; l’offerta pubblica è durata 42 giorni ed ha totalizzato la raccolta di 31591 Bitcoin, pari (al tasso di cambio del 2 settembre 2014) a circa 18,4 milioni di dollari statunitensi, o 60102216 ETH.

La pagina della ICO di Ethereum

Il file genesis.json per la configurazione del blocco di genesi

In Ethereum la configurazione del blocco 0 avviene tramite la l’utilizzo del file genesis.json; nell’immagine possiamo dunque vedere il file di genesis utilizzato per la via della rete Frontier di ethereum; tale file viene usato come parametro per le funzioni di costruzione della chain e del blocco 0 all’avvio.

Il file genesis.json dove sono stati configurati i balance derivanti dall’ICO

Come si può vedere, il file json ha diversi valori che devono o possono essere settati, alcuni sono opzionali (nonce, mixHash, timestamp etc.) essendo il file json il riferimento della chian prima del blocco 0, altri saranno configurati vuoti perché non validi per il primo blocco (parentHash); per i dettagli dei singoli parametri si rimanda alla documentazione di riferimento: quello che ci interessa in questa sede è come viene allocato il bilancio iniziale per gli indirizzi che hanno partecipato alla ICO, in questo caso si va ad utilizzare la struttura alloc:

  • “alloc”: è la parte di struttura che consente di configurare i valori iniziali per gli indirizzi (quelli che in questo caso han partecipato alla ICO); per ogni indirizzo viene alimentato con il valore iniziale (voce “balance”), espresso in WEI (10¹⁸ WEI = 1 ETH)

Similmente ad ethereum possiamo utilizzare quindi il file json per inizializzare una chain privata di test utilizzando il client Ethereum GETH :

geth init genesis.json
Dettagli per il genesis Block di una private network
Esempio di parametri di configurazione di genesi per un private Network

La configurazione di una private network ethereum va oltre gli scopi di questo articolo e verrà approfondita in un post dedicato.

Riferimenti:

--

--

Daniele De Faveri

Explorer of Web3's Transformative Realm, Data Strategist and Chartered Blockchain Analyst