Cos'è un blocco Bitcoin?

Disponibile come podcast
Condividi l'articolo:

Uno dei tanti meccanismi che permettono a Bitcoin di funzionare correttamente è la blockchain. Come avrai scoperto negli articoli del blog di Bitstack, la blockchain consente di evitare la doppia spesa della stessa moneta bitcoin (ciò che viene chiamato UTXO).

Come suggerisce il nome, questa blockchain è composta da blocchi. In questo articolo, esploriamo cosa sono realmente i blocchi Bitcoin e come viene costruito ogni blocco.

Che cos'è la blockchain?

La blockchain è un registro che elenca tutte le transazioni Bitcoin. Viene utilizzato nel protocollo in modo che ogni utente sia a conoscenza delle transazioni passate. Grazie a ciò, possiamo dimostrare l'inesistenza di una precedente spesa in bitcoin e quindi evitare una doppia spesa.

Questo concetto è spiegato molto semplicemente nel White Paper di Bitcoin di Satoshi Nakamoto con la famosa frase:» L'unico modo per confermare l'assenza di una transazione è conoscere tutte le transazioni. »

L'obiettivo di questo registro è quindi quello di indicare la data e l'ora delle transazioni passate. Per poter dedicare un'ora a queste informazioni, le raggruppiamo in blocchi. Ogni blocco include l'impronta digitale del blocco che lo precede in modo da renderli immutabili, creando una sorta di catena. Ecco perché si parla di blockchain, o «blockchain» in inglese.

➤ Scopri di più sul ruolo della blockchain in Bitcoin.

Qual è la struttura di un blocco su Bitcoin?

Un blocco Bitcoin è composto principalmente da due parti distinte. La prima è l'intestazione, che contiene 80 byte di metadati. Il secondo è l'elenco delle transazioni eseguite.

Dall'aggiornamento SegWit del 2017, la dimensione di un blocco è determinata da un'unità virtuale chiamata peso. Il peso di un blocco viene calcolato sommando la sua dimensione reale a tre volte la sua dimensione, ma senza testimoni (firme). Il limite massimo è di 4 milioni di unità di peso. In teoria, un blocco Bitcoin SegWit può quindi avere una dimensione reale massima di poco meno di 4 MB. Tuttavia, la dimensione media effettiva del blocco ha normalmente oscillato tra 1 e 2 MB dal 2017.

L'arrivo del protocollo Ordinals su Bitcoin all'inizio di quest'anno 2023 ha influito sull'aumento di questa media. Da febbraio, i blocchi di Bitcoin hanno una dimensione media reale di quasi 3 MB.

L'intestazione del blocco Bitcoin

La parte principale di un blocco Bitcoin è la sua intestazione. Quando parliamo dell'impronta digitale di un blocco, o del suo hash, è proprio l'intestazione che abbiamo passato due volte nella funzione di hash SHA256.

Per capire la composizione dell'intestazione di un blocco, la cosa migliore è studiarne una vera. Ecco le informazioni sul blocco n. 714 254, estratto da F2Pool il 15 dicembre 2021:

Se vuoi fare lo stesso sul tuo nodo Bitcoin, esegui il comando «getblockheader» seguito dall'impronta digitale del blocco desiderato su bitcoin-cli.

Grazie a questo comando, scopriamo diversi elementi sul blocco studiato. Non tutte queste informazioni sono incluse nell'intestazione. L'intestazione reale del blocco è composta da soli 6 elementi:

  • La versione a blocchi (»versione»). Ciò consente di tenere traccia degli aggiornamenti del protocollo Bitcoin;
  • L'impronta del blocco precedente (»Hash del blocco precedente»). È l'hash crittografico dell'intestazione del blocco precedente. In questo caso, è l'impronta del blocco 714 253. Come ti abbiamo spiegato in il nostro articolo su come funziona Bitcoin, ogni blocco include l'impronta digitale del blocco precedente;
  • La radice di Merkle (»Merkleroot»). È l'impronta digitale crittografica che si trova alla base del nostro albero Merkle. Spiegherò di cosa si tratta nella parte successiva;
  • Il timestamp del blocco (»Ora»). È una misura di quanto tempo il blocco è stato estratto (secondo il minatore). Questa misura è stabilita nelOra Unix, ovvero il numero di secondi trascorsi dal 1 gennaio 1970. C'è una certa flessibilità su questa misura poiché è sufficiente che il timestamp sia maggiore del tempo mediano degli 11 blocchi precedenti perché sia valido;
  • L'obiettivo (»Pezzi»). È una codifica del target di difficoltà del blocco utilizzato in Proof-of-Work. Ne stavamo parlando in il nostro articolo sulla prova del lavoro, l'impronta deve essere inferiore o uguale al valore target affinché il blocco sia valido;
  • Il Nunzio (»Nunzio»). Questo è il valore che può essere modificato dal miner durante la ricerca di un hash proof-of-work valido.

L'intestazione di un blocco Bitcoin contiene solo questi 6 elementi. L'ordine getblockheader Tuttavia, riceviamo altre informazioni che potrebbero essere interessanti da analizzare, ma che non fanno realmente parte dell'intestazione stessa:

  • L'impronta del blocco (»Hash»). Questo è il risultato dell'hashing crittografico dell'intestazione. Se il blocco è valido, l'impronta deve essere inferiore o uguale all'obiettivo di difficoltà per la prova del lavoro (mining);
  • Il numero di conferme di blocco (»conferme»). Indica il numero di blocchi validi estratti al di sopra di questo nel momento in cui il comando viene eseguito;
  • L'altezza del blocco (»Altezza»). Questa è la posizione del blocco nella blockchain. Qui abbiamo il 714.254° blocco di Bitcoin;
  • Il tempo mediano degli ultimi 11 blocchi (»Ora media»). Queste sono le informazioni utilizzate per verificare che il timestamp del blocco sia conforme al protocollo;
  • Lavoro accumulato (»Catenatura»). È la somma del lavoro di tutti i blocchi di questa catena. Ricorda che la catena valida su Bitcoin è quella con la maggior quantità di lavoro accumulato;
  • L'impronta del blocco successivo (»Hash del blocco successivo»). È l'hash crittografico dell'intestazione del blocco successivo. In questo caso, è l'impronta del blocco 714 255.

Ora che abbiamo studiato la prima parte del blocco, ovvero il suo header, esaminiamo insieme la seconda parte del blocco Bitcoin.

Gli alberi Merkle di un blocco Bitcoin

Le transazioni in un blocco Bitcoin non sono semplicemente elencate una dopo l'altra. Sono invece organizzate in un accumulatore crittografico chiamato «albero Merkle». Ciò consente di produrre una radice Merkle, che è un riepilogo molto piccolo di tutte le transazioni del blocco.

Il suo principio è abbastanza semplice da capire. Ogni transazione viene prima passata attraverso una funzione hash. Gli hash risultanti vengono concatenati due a due (cioè messi da capo a capo). Quindi, vengono nuovamente passati attraverso una funzione hash. Continuiamo questo processo in questo modo finché non otteniamo un singolo hash chiamato «Merkle root».

Come visto in precedenza, questa radice Merkle viene quindi inclusa nell'intestazione del blocco. Ciò consente di rappresentare tutte le transazioni in modo condensato nell'intestazione. Pertanto, la minima modifica di una transazione passata cambia l'albero Merkle, quindi cambia anche la radice di Merkle e quindi cambia l'intestazione del blocco e la sua impronta. Poiché questa impronta digitale viene utilizzata nel blocco successivo, la minima modifica di una transazione passata interrompe definitivamente la blockchain di Bitcoin.

Dal 2017 e dall'introduzione di SegWit, i blocchi Bitcoin contengono effettivamente 2 alberi Merkle. Il primo contiene le transazioni senza il loro testimone e il secondo contiene il testimone per ogni transazione. La radice del secondo albero Merkle è inclusa nella transazione Coinbase in modo da poter rilevare le modifiche.

📌 La transazione coinbase è la prima transazione nel blocco Bitcoin. Consente al minatore vincente di raccogliere i bitcoin che gli spettano come ricompensa per il suo lavoro di mining. È composto dal premio coinbase, che emette nuovi bitcoin, e dalle commissioni di transazione incluse nel blocco.

Da qui deriva il nome «SegWit», che è l'acronimo di «Segregated Witness», che in francese significa «testimone separato».

Nel diagramma sopra, possiamo vedere che i testimoni, indicati «WTX», hanno il loro albero Merkle. La radice di questo albero viene inserita nella transazione coinbase. Anche le transazioni senza testimoni hanno il loro albero Merkle. La radice del secondo albero viene inserita nell'intestazione del blocco. Quindi, tutte le parti di tutte le transazioni del blocco sono condensate nell'intestazione.

Conclusione

La blockchain viene utilizzata su Bitcoin per evitare doppie spese. Funziona come un server di timestamp. Un blocco è quindi semplicemente un raggruppamento di transazioni Bitcoin con alcuni metadati. La sua struttura è divisa principalmente in due spazi: l'header e gli alberi Merkle.

L'header di un blocco è composto da 6 elementi: la versione, l'impronta del blocco precedente, la radice Merkle, il timestamp, il target di difficoltà e il nonce.

Le transazioni, invece, sono raggruppate in un albero Merkle. Questo accumulatore crittografico produce una radice che viene incrementata nell'intestazione del blocco per collegare tutto.

Disponibile come podcast

Riepilogo

Condividi l'articolo:

Potrebbero piacerti questi articoli

Bitstack SAS, una società iscritta nel Registro del Commercio e delle Società di Aix-en-Provence con il numero 899 125 090, con il nome commerciale Bitstack, è registrata come agente di Xpollens - un istituto di moneta elettronica approvato dall'ACPR (CIB 16528 - RCS Nanterre n. 501586341, 110 Avenue de France 75013 Parigi) - presso l'Autorità di controllo e risoluzione prudenziale («ACPR»).») con il numero 747088 e approvato come Crypto-Asset Service Provider («PSCA») presso l'Autorité des Marchés Financiers («AMF») come scambio di criptovalute con fondi, lo scambio di criptoasset per altri cryptoasset, esecuzione di ordini di criptoasset per conto dei clienti, custodia e amministrazione di criptoasset per conto dei clienti e fornitura di servizi di trasferimento di criptovalute per conto dei clienti con il numero A2025-003, la cui sede principale si trova al 100 Impasse des Houillères 13590 Meyreuil.

L'investimento in asset digitali comporta il rischio di perdita parziale o totale del capitale investito.
Le performance passate non sono garanzia di performance future.
SCARICA
Bitstack