Mokabyte

Dal 1996, architetture, metodologie, sviluppo software

  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti
  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti

Nel numero:

293 aprile
, anno 2023

Bitcoin, blockchain e criptovaluta

VI parte: Come funziona Bitcoin. La blockchain

Marco Migliorni
Marco Migliorini

Marco Migliorini è un ingegnere informatico con un'esperienza più che decennale nella progettazione e nello sviluppo di sistemi software basati su architettura Java EE.

Negli ultimi anni si è avvicinato al mondo delle blockchains permissionless e dell'economia di scuola austriaca, trasformando l'iniziale curiosità in una veemente passione per questi argomenti.

Dopo un periodo di intensa formazione, ha intrapreso l'attività di libero professionista nel settore blockchain/web3.

Attualmente fornisce servizi di consulenza e sviluppo di applicazioni decentralizzate basate su blockchains Ethereum e Polygon, ed eroga formazione su Bitcoin e Lightning Network.

La sua mission è contribuire alla divulgazione e all'adozione di queste tecnologie, nonché alla conoscenza delle tematiche socioeconomiche che ne rappresentano la base.

Per maggiori informazioni visitare il sito www.marcomigliorini.com

Bitcoin

Bitcoin, blockchain e criptovaluta

VI parte: Come funziona Bitcoin. La blockchain

Picture of Marco Migliorini

Marco Migliorini

  • Questo articolo parla di: Internet & Digital, Sicurezza informatica

Blocchi e blockchain

Per capire il modo in cui una transazione viene elaborata, ossia aggiunta adun blocco, e successivamente in che modo tale blocco entri a far parte della blockchain di Bitcoin, è necessario capire cosa sono e come sono fatti i blocchi.

La struttura del blocco è descritta in figura 1.

Figura 1 – La struttura dei blocchi.
Figura 1 – La struttura dei blocchi.

Il blocco: un raccoglitore di transazioni

Analizzando l’immagine, si nota che ogni blocco possiede i seguenti campi:

  • la dimensione in bytes del blocco;
  • l’header del blocco, ossia un insieme di parametri che caratterizzano il blocco;
  • il numero di transazioni presenti nel blocco;
  • le transazioni.

Di conseguenza, possiamo definire un blocco come un raccoglitore di transazioni alle quali vengono associate alcune informazioni aggiuntive (i metadati). Il numero di transazioni all’interno di un blocco dipende dalla dimensione delle transazioni stesse, infatti l’unica regola da rispettare è che il blocco non superi il megabyte di dati. Questa costante è predefinita a livello di codice, e deriva dal compromesso fra il tempo necessario a confermare una transazione e la larghezza di banda necessaria per mantenere un nodo attivo.

Fra tutti i metadati, il campo header è sicuramente quello più importante ed è l’unico che necessita di ulteriori spiegazioni. Analizzandolo in maniera approfondita, si riesce a capire come nasce e si sviluppa lo strato economico alla base di Bitcoin, ossia la blockchain. La figura 2 mostra nel dettaglio l’header di un blocco.

Figura 2 – Lo header di un blocco della blockchain.
Figura 2 – Lo header di un blocco della blockchain.

 

Lo header risulta composto dai seguenti campi:

  • la versione del blocco, ossia un numero che rappresenta quale versione del software di Bitcoin è necessario utilizzare per validare questo blocco; spiegheremo meglio la validazione dei blocchi nell’articolo dedicato al mining e al consenso distribuito.
  • lo hash dell’header del blocco precedente ottenuto attraverso l’utilizzo dell’algoritmo SHA-256 [1], che consiste semplicemente nel calcolo dello hash dell’informazione contenuta negli 80 bytes del precedente header;
  • il merkle root [2] delle transazioni, ossia una particolare struttura ad albero basata sull’utilizzo degli hash, che consente di indicizzare e ricercare in tempo lineare transazioni all’interno di un blocco (al massimo 2 * log2 (N) operazioni); N.B.: va osservato come il merkle root sia una rappresentazione minimale di tutte le transazioni contenute all’interno del blocco, e come ogni minima varizione/alterazione di queste comporti una modifica drastica del merkle root e di conseguenza dello hash del blocco!
  • il timestamp di generazione del blocco, cioè l’istante di tempo nel formato unix di quando viene costruito il blocco;
  • il target di difficoltà, ovvero il livello di difficoltà a cui è impostato l’algortimo di consenso di Bitcoin in quel momento; spiegheremo meglio questo campo nell’articolo dedicato al mining e al consenso distribuito;
  • il nonce, vale a dire un numero intero positivo casuale che consente di risolvere la prova di lavoro per il relativo blocco; spiegheremo meglio questo campo nell’articolo dedicato al mining e al consenso distribuito.

Dai blocchi alla blockchain

Come si nota, ogni blocco ha all’interno del suo header lo hash dell’header del blocco precedente, e a sua volta verrà utilizzato in forma di hash nella generazione dello header del blocco successivo. Mettendo questa relazione sotto forma di immagini, ottieniamo la rappresentazione di figura 3.

Figura 3 – Nel suo header, ogni blocco ha lo hash dello header del blocco precedente e, a sua volta concorrerà alla generazione dello header del blocco successivo. È così che, dai blocchi, nasce la catena di blocchi, la blockchain.
Figura 3 – Nel suo header, ogni blocco ha lo hash dello header del blocco precedente e, a sua volta concorrerà alla generazione dello header del blocco successivo. È così che, dai blocchi, nasce la catena di blocchi, la blockchain.

 

Questa relazione tra header si potrae a ritroso fino ad arrivare al primo blocco mai “minato” — il blocco genesi — ed ecco quindi che si materializza la famosa blockchain o catena dei blocchi. Ogni blocco risulta quindi collegato al precedente in maniera indissolubile, e anche la più minima variazione di un dato in un qualsiasi blocco implica il ricalcolo di tutti i suoi successori nella catena.

Nel prossimo articolo sul mining spiegheremo esattamente cosa implichi questa relazione fra i blocchi e come sia sfruttata per rendere la blockchain di Bitcoin immutabile, ossia per rendere non modificabile lo storico del suo strato economico.

 

Alcune considerazioni sulla blockchain

Prima di procedere oltre, per il momento è però importante aggiungere alcune considerazioni sulla blockchain:

  • parlando di Bitcoin, sarebbe più corretto definire la sua catena di blocchi una timechain [3] o catena del tempo, in quanto lo scopo principale di questa struttura dati è marcare temporalmente ogni transazione avvenuta nel sistema, attraverso il timestamp del blocco che la conterrà, così da sapere quando sono stati spesi determinati UTXO ed evitare la doppia spesa dei bitcoin;
  • la blockchain rappresenta lo stato economico di Bitcoin, in quanto contiene al suo interno, organizzate in maniera temporale e raggruppate per blocchi, tutte le transazioni economiche che siano mai avvenute, validate e confermate sul sistema stesso;
  • la blockchain non è Bitcoin, ma è solo una sua sottoparte necessaria al funzionamento del sistema; quando si sente dire che Bitcoin non ha valore ma la struttura che sta sotto — la blockchain — ha potenzialità infinite, il discorso non ha molto senso: la blockchain è quello che è solo quando viene utilizzata all’interno del sistema più complesso per la quale è stata progettata, vale a dire il sistema Bitcoin.

Identificare i blocchi: hash dello header o altezza nella blockchain

Ogni blocco del sistema può essere identificato univocamente in due modi: con lo hash del suo header, univoco per definizione matematica, o con l’altezza che il blocco occupa nella blockchain, dove per “altezza” di un blocco s’intende la sua posizione all’interno della catena. Per determinarla, basta considerare il blocco genesi avente altezza 0, e tutti i successivi blocchi che via via vengono aggiunti aventi altezza incrementata di 1. A inizio marzo del 2023 eravamo arrivati a “minare” il blocco con altezza 778825.

L’introduzione del concetto di altezza del blocco, ci consente di chiarire un fatto che avevamo accennato nell’articolo precedente, riguardante il locktime delle transazioni posticipate. Queste possono essere di due tipologie: o con uno specificato istante di tempo da raggiungere, concetto che risultava chiaro fin da subito, o con una specificata altezza di blocco da raggiungere, e adesso sappiamo cosa vuol dire anche questa casistica.

 

Conclusioni

Abbiamo quindi visto anche i blocchi e la blockchain, comprendendone la relazione e l’importanza dell’identificazione univoca. Nel prossimo pezzo ci concentreremo sul mining, sul consenso e sulla sicurezza.

 

Riferimenti

[1] La voce “Secure Hash Algorithm“ su Wikipedia
https://it.wikipedia.org/wiki/Secure_Hash_Algorithm

 

[2] Approfondimento di “Merkle tree” su bitcoinwiki
https://en.bitcoinwiki.org/wiki/Merkle_tree

 

[3] Approfondimento di “Timechain” su Bitcoin Magazine
https://bitcoinmagazine.com/culture/bitcoins-blockchain-is-the-timechain

 

 

Marco Migliorni
Marco Migliorini

Marco Migliorini è un ingegnere informatico con un'esperienza più che decennale nella progettazione e nello sviluppo di sistemi software basati su architettura Java EE.

Negli ultimi anni si è avvicinato al mondo delle blockchains permissionless e dell'economia di scuola austriaca, trasformando l'iniziale curiosità in una veemente passione per questi argomenti.

Dopo un periodo di intensa formazione, ha intrapreso l'attività di libero professionista nel settore blockchain/web3.

Attualmente fornisce servizi di consulenza e sviluppo di applicazioni decentralizzate basate su blockchains Ethereum e Polygon, ed eroga formazione su Bitcoin e Lightning Network.

La sua mission è contribuire alla divulgazione e all'adozione di queste tecnologie, nonché alla conoscenza delle tematiche socioeconomiche che ne rappresentano la base.

Per maggiori informazioni visitare il sito www.marcomigliorini.com

Facebook
Twitter
LinkedIn
Marco Migliorni
Marco Migliorini

Marco Migliorini è un ingegnere informatico con un'esperienza più che decennale nella progettazione e nello sviluppo di sistemi software basati su architettura Java EE.

Negli ultimi anni si è avvicinato al mondo delle blockchains permissionless e dell'economia di scuola austriaca, trasformando l'iniziale curiosità in una veemente passione per questi argomenti.

Dopo un periodo di intensa formazione, ha intrapreso l'attività di libero professionista nel settore blockchain/web3.

Attualmente fornisce servizi di consulenza e sviluppo di applicazioni decentralizzate basate su blockchains Ethereum e Polygon, ed eroga formazione su Bitcoin e Lightning Network.

La sua mission è contribuire alla divulgazione e all'adozione di queste tecnologie, nonché alla conoscenza delle tematiche socioeconomiche che ne rappresentano la base.

Per maggiori informazioni visitare il sito www.marcomigliorini.com

Picture of Marco Migliorini

Marco Migliorini

Marco Migliorini è un ingegnere informatico con un'esperienza più che decennale nella progettazione e nello sviluppo di sistemi software basati su architettura Java EE.

Negli ultimi anni si è avvicinato al mondo delle blockchains permissionless e dell'economia di scuola austriaca, trasformando l'iniziale curiosità in una veemente passione per questi argomenti.

Dopo un periodo di intensa formazione, ha intrapreso l'attività di libero professionista nel settore blockchain/web3.

Attualmente fornisce servizi di consulenza e sviluppo di applicazioni decentralizzate basate su blockchains Ethereum e Polygon, ed eroga formazione su Bitcoin e Lightning Network.

La sua mission è contribuire alla divulgazione e all'adozione di queste tecnologie, nonché alla conoscenza delle tematiche socioeconomiche che ne rappresentano la base.

Per maggiori informazioni visitare il sito www.marcomigliorini.com

Tutti gli articoli
Nello stesso numero
Loading...

Digital revolution: trasformare le aziende in ecosistemi digitali

VI parte: Ecosistemi e piattaforme digitali

Digital revolution: La teoria

VII parte: Piattaforme digitali e servizi combinati

Dati, valore, scalabilità: l’approccio Data Mesh

I parte: Introduzione e panoramica

Nella stessa serie
Loading...

Bitcoin, blockchain e criptovaluta

XIII parte: L’impatto energetico e ambientale di Bitcoin

Bitcoin, blockchain e criptovaluta

XII parte: L’impatto energetico e ambientale di Bitcoin

Bitcoin, blockchain e criptovaluta

XI parte: Il futuro di Bitcoin

Bitcoin, blockchain e criptovaluta

X parte: Il processo di evoluzione di Bitcoin

Bitcoin, blockchain e criptovaluta

IX parte: Fork

Bitcoin, blockchain e criptovaluta

VIII parte: Difficulty target, halving, consenso distribuito

Bitcoin, blockchain e criptovaluta

VII parte: Validazione e mining in Bitcoin

Bitcoin, blockchain e criptovaluta

V parte: Come funziona Bitcoin. Transazioni e UTXO

Bitcoin, blockchain e criptovaluta

IV parte: Come funziona Bitcoin. Chiavi, indirizzi e wallet

Bitcoin, blockchain e criptovaluta

III parte: Come funziona Bitcoin. Rete e crittografia

Bitcoin, blockchain e criptovaluta

II parte: Perché è nato Bitcoin

Bitcoin, blockchain e criptovaluta

I parte: Breve storia del denaro

Mokabyte

MokaByte è una rivista online nata nel 1996, dedicata alla comunità degli sviluppatori java.
La rivista tratta di vari argomenti, tra cui architetture enterprise e integrazione, metodologie di sviluppo lean/agile e aspetti sociali e culturali del web.

Imola Informatica

MokaByte è un marchio registrato da:
Imola Informatica S.P.A.
Via Selice 66/a 40026 Imola (BO)
C.F. e Iscriz. Registro imprese BO 03351570373
P.I. 00614381200
Cap. Soc. euro 100.000,00 i.v.

Privacy | Cookie Policy

Contatti

Contattaci tramite la nostra pagina contatti, oppure scrivendo a redazione@mokabyte.it

Seguici sui social

Facebook Linkedin Rss
Imola Informatica
Mokabyte