Prima ti ignorano, poi ridono di te, poi ti combattono, poi vinci tu. - Mahatma Gandhi.



La rete

Un'implementazione di Bitcoin è un codice che i singoli individui possono eseguire sui propri computer per trasformarli in nodi Bitcoin.
L'implementazione di riferimento è il codice open-source noto come Bitcoin Core, che può essere scaricato da https://bitcoincore.org/en/download/

I nodi Bitcoin interconnessi costituiscono la rete Bitcoin:

Rappresentazione della Rete Bitcoin

La funzione di un nodo è quella di verificare in modo indipendente la validità delle transazioni, rifiutando quelle che non seguono le regole di Bitcoin.


Le Transazioni

Una transazione Bitcoin consiste in un messaggio firmato digitalmente che istruisce il trasferimento di una certa quantità di unità monetarie.

Le firme digitali sono generate da una Chiave Privata e dalla corrispondente Chiave Pubblica.
Una Chiave Privata è un numero casuale compreso tra 0 e 2^256 (approssimativamente il numero di atomi nell'universo conosciuto), quindi la sua entropia è di 256 bit.
La Chiave Pubblica è derivata dalla Chiave Privata attraverso una funzione unidirezionale, il che significa che è impossibile ottenere una Chiave Privata da una Chiave Pubblica.

Una Chiave Privata può criptare dati che solo la corrispondente Chiave Pubblica può decriptare, e viceversa.

La firma digitale di un messaggio prevede la crittografia del messaggio con la Chiave Privata e l'aggiunta di un testo che include il messaggio originale (non criptato) e la Chiave Pubblica.

La verifica che il proprietario della Chiave Privata abbia autorizzato il messaggio si ottiene decifrando il messaggio con la Chiave Pubblica e confermando che il messaggio risultante corrisponde all'originale.


Gli Indirizzi Bitcoin sono Chiavi Pubbliche codificate, progettate per essere più leggibili e resistenti agli errori di battitura.

La generazione e l'archiviazione delle Chiavi Private, insieme alle corrispondenti Chiavi Pubbliche e Indirizzi, sono processi semplici che possono essere facilitati da programmi chiamati Portafogli.

I nodi mantengono un mempool, che è un elenco di richieste di transazioni, e memorizzano una copia di il libro mastro distribuito noto come Blockchain, contenente transazioni confermate.

Ogni nodo ottiene i salidi correnti, denominati set UTXO, dalla propria copia della Blockchain.


Prova di Lavoro

Nel caso di transazioni in conflitto, la validità dovrebbe essere determinata dall'ordine cronologico.
Ma i nodi non possono dimostrare matematicamente l'ordine di sollecitazione e, poiché le richieste di transazione si propagano come pettegolezzi tra i nodi e possono essere pubblicate da qualsiasi nodo, diversi nodi ricevono questi comandi in momenti diversi e in un ordine cronologico variabile.
Pertanto, se i nodi differiscono su quale versione della transazione debba essere riconosciuta come valida, si verifica una doppia spesa, con la conseguente coesistenza di diversi sistemi monetari.

L'innovazione chiave di Bitcoin per risolvere questo problema è il meccanismo noto come Prova di Lavoro. Questo meccanismo permette di fare a meno di un'autorità centrale ruotando in modo probabilistico il potere di eseguire le richieste di transazione. I diversi nodi minerari guadagnano tale potere in base alla loro forza computazionale relativa.

Funziona come una lotteria decentralizzata continua in cui i partecipanti acquisiscono "biglietti" utilizzando una risorsa impossibile da falsificare: l'energia.

I sistemi alternativi alla Prova di Lavoro si basano su risorse interne al proprio sistema, il che li rende insicuri. Questi sistemi vengono verificati attraverso dati che possono essere falsificati a basso costo e sono vulnerabili a attacchi in cui una singola entità controlla clandestinamente la maggior parte dei nodi.
Di conseguenza, questi sistemi richiedono un'autorità per impiegare le risorse umane, generando burocrazia e privilegi.

I meccanismi di consenso che non implicano lavoro coinvolgono invece la governance.


Blocchi

Una volta che una richiesta di transazione è inclusa in un blocco di dati che viene verificato, copiato e propagato in modo indipendente da ogni nodo, viene considerata eseguita.

Tuttavia, è possibile la coesistenza di due blocchi concorrenti per alcuni minuti. Questo problema è risolto quando viene creato un nuovo blocco, poiché ogni nuovo blocco deve essere collegato all'ultimo blocco precedente, e i nodi seguono la catena con il maggior lavoro cumulativo, tipicamente la catena più lunga.
Di conseguenza, la probabilità che un blocco venga scartato diminuisce con la sua profondità nella catena e ogni blocco successivo aumenta la probabilità di immutabilità, chiamata conferma.

Le transazioni nei blocchi scartati ritornano nell'elenco delle richieste di transazione se non sono incluse nei nuovi blocchi.

Il creatore di ogni blocco riceve una ricompensa, composta dalle commissioni di transazione e da un sussidio attraverso una transazione chiamata coinbase.
Ogni richiesta di transazione indica la tariffa da pagare per prioritizzare la sua esecuzione.
Il sussidio consiste in nuove unità di bitcoin, la cui emissione viene dimezzata ogni 210.000 blocchi (circa 4 anni). Ciò comporta un'inflazione monetaria inflazione monetaria decrescente fino a raggiungere un massimo di 21 milioni di bitcoin.

L'integrità delle informazioni contenute nel record a blocchi è facilmente verificabile grazie all'uso di funzioni hash crittografiche. Queste funzioni unidirezionali trasformano qualsiasi dato digitale in ingresso in dati di dimensioni fisse chiamati hash.
Gli hash sono completamente diversi l'uno dall'altro, anche con lievi differenze nei dati di input.
In Bitcoin, la funzione hash più utilizzata è SHA256, che produce un hash a 256 bit. Ad esempio, l'identificatore (ID) della transazione è il doppio hash SHA256 dei dati della transazione e l'identificatore del blocco è il doppio hash SHA256 dei dati contenuti nell'intestazione del blocco.


I dati contenuti nell'intestazione del blocco:

1. # L'hash dell'ID del blocco precedente.
2. # L'hash combinato di tutti gli hash delle transazioni, noto come la Radice di un Albero di Merkle.
3. Nonce e hash obiettivo.
4. T Timestamp.

Ogni blocco è composto dall'intestazione e dalle transazioni con i rispettivi hash:

Un blocco che include la sua intestazione e un insieme di transazioni

1. L'hash dell'ID del blocco precedente:

Forma una catena in cui l'hash di ogni nuovo blocco include l'intera cronologia delle transazioni.
Qualsiasi alterazione di un blocco invalida il blocco stesso e tutti i blocchi successivi.
Come una zanzara nell'ambra, più un blocco è profondo nella catena, più diventa inamovibile.


2. La radice di un albero di Merkle:

Fornisce un modo semplice per verificare l'integrità delle transazioni.


3. Nonce e obiettivo di hash:

Nonce:

Per minare un blocco, si deve trovare un nonce che, combinato con il resto dei dati dell'intestazione del blocco, dia come risultato un hash (ID del blocco) inferiore a una soglia specificata, nota come obiettivo dell'hash.

Ad esempio, se l'obiettivo è ottenere un hash che inizia con 00 da dati contenenti il testo "bitcoin", si potrebbero fare dei tentativi con "bitcoin-1", "bitcoin-2" e così via fino a quando non si troverà un nonce efficace.
Provalo qui!.
In questo esempio, il nonce sarebbe 53.

L'ID del blocco è quindi una prova di lavoro facilmente verificabile.
I minatori utilizzano l'energia spesa per proporre le transazioni, mentre l'esecuzione effettiva delle transazioni avviene in modo decentralizzato attraverso i nodi.

Obiettivo dell'hash:

La sua funzione è quella di mantenere un tasso medio di produzione di blocchi di 10 minuti. Ciò garantisce una propagazione e una convalida dei blocchi relativamente rapida, riducendo i blocchi orfani e scoraggiando gli incentivi alla centralizzazione del mining. Il progetto impedisce ai grandi minatori di ottenere vantaggi significativi costruendo sui propri blocchi.
Inoltre, un flusso di dati minimo minimizza i costi operativi dei nodi e facilita la replica delle informazioni.


4. Timestamp:

È l'ora approssimativa in cui ogni blocco è stato estratto dal rispettivo miner.
Ogni 2016 blocchi, la rete calcola la differenza di tempo tra il primo e l'ultimo timestamp per regolare l'obiettivo di hash in base alle variazioni della potenza di estrazione totale.

L'obiettivo di hash può essere moltiplicato o diviso per un massimo di 4 per limitare l'impatto di alcuni attacchi di doppia spesa.

I timestamp non sono esatti e non aumentano necessariamente di tempo da un blocco all'altro. Per essere accettato da un nodo, un timestamp deve essere successivo alla mediana degli 11 timestamp precedenti e prima di due ore nel futuro secondo l'ora corrente del nodo.


Grazie a questo meccanismo, per la prima volta nella storia, l'inflazione di un bene monetario è prevedibile.

Grafico del tasso di inflazione di Bitcoin


Il processo di mining

La tecnologia Bitcoin utilizza l'elettricità per evitare di consumare risorse umane. Libera il tempo umano.

Quando possiamo assicurare una rete finanziaria tramite l'informatica piuttosto chevtramite contabili, regolatori, investigatori, poliziotti e avvocati, passiamo da un sistema manuale, locale e di sicurezza inconsistente a uno automatizzato, globale e molto più sicuro. — Nick Szabo.

I minatori di Bitcoin utilizzano l'energia in modo simile a come i pompieri usano l'acqua per spegnere un incendio.

Il mining di Bitcoin si orienta verso fonti di energia che sbloccano energia inutilizzata, che altrimenti andrebbe sprecata. I minatori di Bitcoin forniscono un carico altamente flessibile e interrompibile, in grado di operare ovunque.
A lungo termine, con l'aumentare della concorrenza e la diminuzione della redditività mineraria, solo l'uso di energia in eccesso rimarrà economicamente conveniente.


La minimizzazione della governance finanziaria

La tecnologia Bitcoin consente di decentralizzare il controllo su un sistema monetario, riducendo al minimo la governance finanziaria. Bitcoin funziona in base a regole senza governanti.
Chiedersi "chi controlla Bitcoin?" è simile a chiedere "chi controlla una lingua?".
I cypherpunk ripudiano la governance, quindi la sua assenza è sempre stata l'obiettivo. Questa assenza aumenta l'immutabilità della sicurezza della rete e la credibilità della sua politica monetaria.

"Sì: stai un po' indietro, mi stai togliendo la luce del sole". - La risposta del filosofo Diogene all'offerta di Alessandro Magno di concedergli qualsiasi desiderio.

In Bitcoin, il consenso emerge quando diversi computer eseguono simultaneamente lo stesso protocollo. Massimizzando il ruolo del protocollo di consenso, il consenso sociale viene spietatamente minimizzato.
Il design centrale di Bitcoin è immutabile, solo quelle innovazioni tecnologiche che migliorano la sicurezza sono giustificate per essere gradualmente incluse nel suo codice. Avanzare lentamente è un dogma.

La natura di Bitcoin è tale che una volta rilasciata la versione 0.1, il design fondamentale è stato fissato per il resto della sua vita. - Satoshi Nakamoto.

Dobbiamo trattare il software di Bitcoin con lo stesso rispetto con cui trattiamo il software dei reattori nucleari. - Hugo Nguyen.

Questa roba è difficile. Questa roba è sottile. Se siete frustrati dalla lentezza di Bitcoin, lasciate che vi dica che Bitcoin si muove troppo velocemente. La crittografia è difficile e spaventosa, e dobbiamo assicurarci di muoverci lentamente. - Andrew Poelstra.


Aggiornamenti

Gli aggiornamenti di sicurezza di Bitcoin seguono un processo meticoloso:

1. Ricerca: Anche se l'implementazione di nuove funzionalità in Bitcoin è incredibilmente lenta (per buone ragioni), il ritmo della ricerca è travolgente. - Andrew Poelstra.

2. Proposta: Gli aggiornamenti vengono proposti per la revisione tra pari, il brainstorming, l'implementazione su sidechains/test-nets e lo sviluppo iterativo.

3. Consenso: Se le proposte generano interesse e c'è un consenso schiacciante tra i partecipanti alla rete, e i contributori software più attivi le accettano all'unanimità, gli aggiornamenti vengono implementati e testati.

4. Implementazione Open Source: Gli aggiornamenti vengono implementati come codice open source, consentendo agli utenti di verificarli in modo indipendente.

5. Applicazione: Gli aggiornamenti vengono applicati dai nodi. Ogni operatore di nodo deve installare manualmente gli aggiornamenti se sceglie di adottarli.


Il termine "fork" si riferisce a un cambio nelle regole di consenso:

- Soft Fork: rende più rigide le regole del consenso. I blocchi considerati validi dai nodi che eseguono la vecchia versione possono essere considerati non validi da quelli che eseguono la nuova versione. Non richiede un aggiornamento simultaneo dell'intera rete.

- Hard Fork: Rilassa le regole di consenso. I blocchi considerati non validi dai nodi che eseguono la vecchia versione possono essere considerati validi da quelli che eseguono la nuova versione. Richiede l'aggiornamento di tutti i nodi, il che lo rende una soluzione di ultima istanza contro un problema estremo di sicurezza della blockchain.

Maggiore è il rischio procedurale e il costo mentale, minori sono gli incentivi per l'aggiornamento.

Nell'eventualità di un fallimento catastrofico e generale della tecnologia di Bitcoin, sviluppatori influenti, che si spera condividano principi comuni, potrebbero contribuire a distribuire codice che migri le regole di base di Bitcoin in una nuova tecnologia. Questo scenario, spesso definito "l'opzione nucleare", suggerisce che in tali circostanze il concetto di Bitcoin probabilmente resisterebbe nonostante i cambiamenti nella tecnologia.

Se SHA-256 si rompesse completamente, penso che potremmo trovare un accordo su quale fosse la catena di blocchi onesta prima che iniziassero i problemi, bloccarla e continuare da lì con una nuova funzione hash. - Satoshi Nakamoto.


Il grande risultato della tecnologia Bitcoin è l'applicazione automatica dei diritti di proprietà in un sistema monetario.