Glossario / Mining e consenso
Consenso
- Che cos'è consenso?
- In bitcoin il consenso è lo stato in cui nodi gestiti in modo indipendente, che seguono regole identiche, concordano su un'unica catena: la catena valida che porta la maggior quantità di proof of work accumulata.
Nessuno vota e nessuno comanda. Ogni nodo controlla ogni blocco con lo stesso insieme di regole, poi segue la catena valida che porta con sé il maggior lavoro accumulato: è così che un portatile che si sincronizza da zero ricostruisce la stessa identica storia fino al 3 gennaio 2009. Quando compri bitcoin, è questo il meccanismo che stabilisce che i bitcoin che ti sono stati inviati sono davvero tuoi.
Come funziona
L'accordo si raggiunge ponendo due domande in un ordine fisso, mai facendo un sondaggio.
La prima domanda è la validità. Un nodo riceve un blocco e lo controlla da solo: firme, importi, la radice di Merkle, il sussidio richiesto dal miner, il peso, la marca temporale. Tutto ciò che non supera il controllo viene scartato sul posto, e la quantità di elettricità bruciata per produrlo è irrilevante. La seconda domanda è la scelta tra opzioni valide. Quando due storie in competizione superano entrambe il controllo, un nodo tiene quella con il maggior lavoro totale sommato sulle sue intestazioni, che non è la stessa cosa di quella con più blocchi: un ramo più corto di blocchi più difficili batte un ramo più lungo di blocchi più facili.
Nota cosa manca. I nodi non si scambiano mai opinioni, non annunciano mai una preferenza e non si contano mai tra loro. Trasmettono blocchi e transazioni, applicano lo stesso controllo a ciò che arriva e finiscono nello stesso punto perché il controllo è deterministico. L'accordo è un effetto collaterale del fatto che ognuno fa i conti per conto proprio: per questo la rete non ha nessun quorum da corrompere e nessun comitato da citare in giudizio.
Un disaccordo breve è routine. A volte due miner trovano una soluzione a meno di un secondo di distanza e metà del mondo vede prima uno dei due blocchi, così per qualche minuto ci sono due punte candidate. Il blocco successivo rompe il pareggio, un ramo viene abbandonato come blocco obsoleto e le sue transazioni tornano nella mempool. Il disaccordo profondo è il caso interessante, e si verifica solo quando i nodi eseguono regole diverse. Se stringi le regole, il software vecchio accetta ancora tutto ciò che produce il software nuovo, ed è un soft fork: Taproot è arrivato così a novembre 2021 e non ha diviso nulla. Se le allenti, i due gruppi seguono per sempre catene diverse, ed è un hard fork: è esattamente quello che è successo il 1º agosto 2017, quando Bitcoin Cash si è separato.
Perché questo conta quando compri bitcoin
Il consenso è ciò che rende un saldo in bitcoin tuo e non una promessa di chi lo detiene.
La catena si mette d'accordo sugli output e sulle chiavi che possono spenderli. Non ha alcun concetto di titolare di conto. Finché i tuoi bitcoin stanno su un exchange, il consenso vede gli indirizzi dell'exchange e nient'altro, e il tuo diritto su di essi è una riga nel database di quella società, fatto valere dal diritto contrattuale e non dai nodi. Se li sposti su un wallet di cui tieni le chiavi, la situazione si inverte: l'insieme di regole globale ora riconosce direttamente la tua autorità di spesa, e nessuna richiesta al supporto, nessun blocco e nessuna insolvenza cambia questo. È tutto qui l'argomento a favore dell'autocustodia, ed è un'affermazione sul consenso, non sulla fiducia.
I fork rendono visibile la distinzione. Chi teneva le proprie chiavi il 1º agosto 2017 si è ritrovato ad avere il controllo di bitcoin su entrambe le catene, perché entrambe le catene hanno ereditato la stessa storia di output. Chi li teneva tramite una piattaforma ha ottenuto quello che quella piattaforma ha deciso di fare, e diverse hanno impiegato settimane ad accreditare il nuovo asset o si sono rifiutate di gestirla del tutto. La stessa logica vale per qualsiasi divisione futura.
Il consenso è anche globale in un modo in cui la regolamentazione non lo è. Le 231 guide per paese di questo sito differiscono enormemente su cosa è legale, cosa va dichiarato e quali piattaforme ti accetteranno, ma nulla di tutto ciò arriva al registro. Un bitcoin comprato in Germania e un bitcoin comprato in Nigeria sono validati dalle stesse regole, vivono nello stesso insieme di UTXO e sono indistinguibili per un nodo. Quello che cambia a una frontiera è chi ti venderà e quanto devi alla tua autorità fiscale, mai ciò che la rete considera valido.
Le sei ore di marzo 2013 in cui bitcoin girò su due catene
Il blocco 225.430, minato l'11 marzo 2013, fu accettato da una versione del software e respinto dalla versione precedente.
Bitcoin 0.8 aveva cambiato il suo database da Berkeley DB a LevelDB e, così facendo, aveva eliminato silenziosamente un limite non documentato sul numero di lock che il vecchio database poteva acquisire durante l'elaborazione di un blocco grande. Il blocco superò quel limite. I nodi che eseguivano la 0.7 lo rifiutarono, i nodi che eseguivano la 0.8 costruirono su di esso, e la rete tenne due catene per circa sei ore. Una doppia spesa di circa 10.000 dollari andò a segno ai danni del processore di pagamenti OKPay.
La risoluzione dice qualcosa che nessun documento del protocollo dice. Gli sviluppatori chiesero ai pool di mining di tornare alla 0.7 perché vincesse la catena più restrittiva, e i pool lo fecero, scartando blocchi per cui erano già stati pagati. La versione 0.8.1 uscì poco dopo con un tetto temporaneo di 500.000 byte sui blocchi che avrebbe prodotto, e il BIP50 fu scritto come analisi post mortem. L'episodio è la prova standard che le regole di bitcoin sono ciò che il software distribuito applica davvero, bug compresi, e che quando il software è in disaccordo con sé stesso sono le persone a dover scegliere.
Consenso vs regole di consenso
Il consenso è il risultato; le regole di consenso sono i criteri usati per raggiungerlo. Le regole sono un elenco fisso di controlli di validità scritti nel codice e identici per chiunque esegua software compatibile. Il consenso è il risultato mutevole dell'applicare quell'elenco ai blocchi che sono arrivati: per questo due nodi onesti possono essere momentaneamente fuori consenso, con punte della catena diverse dopo un blocco quasi simultaneo, pur concordando perfettamente sulle regole. Cambia le regole e cambi il consenso che è possibile; non cambiare nulla e il consenso si sposta comunque ogni dieci minuti, man mano che arriva nuovo lavoro.