Vai al contenuto
buybitcoinsmart

Glossario / Mining e consenso

Regole di consenso

Che cosa sono le regole di consenso?
Le regole di consenso sono i controlli di validità che ogni nodo completo applica a un blocco: infrangere anche una sola di esse rende quel blocco non valido, indipendentemente dalla quantità di lavoro che contiene.

Il regolamento è dettagliato: nessun doppio pagamento, nessun output che valga più dei suoi input, script validi e una coinbase che non reclami più del sussidio più le commissioni. Bitcoin Core fissa i numeri nel codice: 4.000.000 unità di peso per blocco, 80.000 operazioni di firma e un'attesa di 100 blocchi prima che i bitcoin minati possano essere spesi. Queste regole sono il motivo per cui nessun exchange può accreditarti un bitcoin che la rete non ha mai creato.

Come funziona

Le regole di consenso si dividono in quattro gruppi, e quasi tutte sono deliberatamente noiose.

Il primo gruppo riguarda il denaro. La ricompensa di un blocco si dimezza ogni 210.000 blocchi, e l'output coinbase non può reclamare un satoshi in più di quel sussidio più le commissioni delle transazioni effettivamente incluse. I bitcoin creati da un blocco non possono essere spesi per altri 100 blocchi. Ogni altra transazione deve spendere output che esistono, che non sono già stati spesi e che soddisfano lo script che li ha bloccati, con il totale in uscita che non supera mai il totale in entrata.

Il secondo gruppo riguarda le risorse, perché la verifica deve restare abbastanza economica per una macchina comune. Un blocco non può superare 4.000.000 unità di peso né 80.000 unità di operazioni di firma. Il terzo gruppo riguarda la struttura: la transazione coinbase viene per prima e una sola volta, la radice di Merkle nell'intestazione deve corrispondere alle transazioni presenti e l'hash dell'intestazione deve essere pari o inferiore al target richiesto dalle regole di difficoltà. Il quarto gruppo riguarda il tempo. Il timestamp di un blocco deve essere successivo alla mediana degli undici precedenti e non più di due ore avanti rispetto all'orologio del nodo stesso, e dal BIP113 i locktime si misurano rispetto a quella stessa mediana.

Dove sono scritte queste regole è la parte scomoda. Non esiste una specifica indipendente: le regole sono ciò che accetta il codice distribuito, che per la stragrande maggioranza della rete significa la logica di validazione di Bitcoin Core, stranezze e incidenti inclusi. Per questo una riscrittura in un altro linguaggio è considerata un pericolo e non un miglioramento, e per questo Bitcoin Knots, la variante più nota, conserva byte per byte il comportamento di consenso di Core e differisce solo nella policy di relay e di mining.

L'elenco si cambia in una di due direzioni. Un soft fork elimina possibilità, quindi i blocchi creati con le nuove regole appaiono ancora validi al software vecchio: la codifica rigorosa DER delle firme è diventata obbligatoria al blocco 363.725 e OP_CHECKLOCKTIMEVERIFY al blocco 388.381, e nessuna delle due ha diviso la rete. Un hard fork aggiunge possibilità, il che rende i nuovi blocchi invalidi per chi non ha aggiornato, e produce due catene a meno che l'adozione non sia universale.

Perché questo conta quando compri bitcoin

Le regole di consenso sono l'unica parte del possesso di bitcoin che nessuno può rinegoziare con te in seguito.

Pongono un limite invalicabile sotto un piccolo numero di rischi. Nessuno può stampare bitcoin fuori dal calendario, spendere un output senza la sua chiave o cancellare un pagamento sepolto sotto vero lavoro. Quel limite è stretto, e vale la pena essere precisi su cosa ne sta fuori, perché è lì che le persone perdono davvero denaro: un exchange che diventa insolvente, un sito di phishing che raccoglie una frase di recupero, un operatore dell'assistenza che blocca un conto, un'imposta da pagare che arriva senza essere stata messa a budget. Nessuno di questi casi implica la violazione di una regola. Implicano tutti la fiducia in qualcosa che le regole non hanno mai coperto.

La distinzione ti dà un test per le dichiarazioni di marketing. Se un servizio può annullare un pagamento confermato, non ha annullato una transazione bitcoin; ha rettificato il proprio registro, e tu non sei mai stato on-chain. Se un prodotto pubblicizza un regolamento più rapido di quanto i blocchi consentano, ti sta concedendo credito e si assume il rischio, il che può essere un servizio del tutto valido purché tu sappia che è questo che hai comprato. Se una criptovaluta rivendica la sicurezza di bitcoin con migliaia di transazioni al secondo, i limiti di risorse descritti sopra sono il motivo per cui bitcoin non lo fa.

Ciò che le regole di consenso non sono affatto è la legge. La rete applica gli stessi controlli a ogni utente sulla terra, mentre il quadro giuridico cambia a ogni confine, ed è per questo che le guide per paese di questo sito esistono separatamente da qualsiasi cosa in questa pagina. La validità la decidono i nodi. La legalità, gli obblighi di dichiarazione e se un exchange ti accetterà mai sono decisi dalla tua giurisdizione, e i due non hanno mai accettato, nemmeno una volta, di consultarsi.

I 184 miliardi di bitcoin durati cinque ore

Il 15 agosto 2010, una transazione nel blocco 74.638 creò due output di oltre 92 miliardi di bitcoin ciascuno.

Il bug era aritmetico. Il codice verificava che ogni output fosse un importo sensato ma li sommava in un valore che andava in overflow, così un totale superiore all'intero calendario di emissione veniva letto come un piccolo numero positivo e passava. Satoshi Nakamoto pubblicò la versione 0.3.10 con una correzione nel giro di poche ore, i nodi passarono a quella e una catena corretta superò quella difettosa 53 blocchi dopo. L'incidente è catalogato come CVE-2010-5139 e resta l'unica volta in cui l'offerta di bitcoin ha superato il suo calendario.

Restano due lezioni. Il tetto di 21 milioni non è una legge della fisica, è una riga di codice, e il codice può sbagliare. E la riparazione funzionò proprio perché nessuno ne era responsabile: migliaia di operatori indipendenti scelsero ciascuno di eseguire il software corretto, che è l'unico meccanismo che una regola di consenso abbia mai avuto.

Regole di consenso vs policy del mempool

Le regole di consenso decidono cosa è valido; la policy del mempool decide cosa un nodo trasmetterà. La policy è più permissiva, locale e regolabile per nodo: una commissione minima di relay predefinita di 1 sat/vB, una soglia dust di 546 satoshi su un output legacy, limiti agli output che trasportano dati e un elenco di tipi di script considerati standard. Se violi la policy, la tua transazione potrebbe semplicemente non propagarsi. Se violi una regola di consenso, nessun blocco che la contenga può mai esistere. I miner includono regolarmente transazioni che alcuni nodi non avrebbero trasmesso, e i blocchi risultanti sono del tutto validi, ed è per questo che «il mio wallet dice non standard» è un problema di instradamento con soluzioni alternative, mentre «invalida» è definitiva.

Da non confondere con

Domande frequenti

Si può modificare il limite di 21 milioni?

Solo se praticamente tutti coloro che gestiscono un nodo scegliessero di eseguire un software che lo consentisse, il che sarebbe un hard fork che si allontanerebbe dal bitcoin così com'è. Chi detiene bitcoin, gli exchange e i miner perdono tutti dall'inflazione dell'offerta, quindi non c'è mai stato un sostegno significativo a questa idea.

Una transazione che il mio nodo rifiuta di ritrasmettere è invalida?

No. La ritrasmissione è una questione di policy e può variare da un nodo all'altro, mentre la validità è consenso ed è identica ovunque. Una transazione che non rispetta la policy del tuo nodo può comunque essere minata in un blocco perfettamente valido.

Dove sono scritte le regole di consenso di bitcoin?

Nel codice, non in una specifica. La logica di validazione di Bitcoin Core è il regolamento di fatto, con le singole modifiche descritte nei BIP, ed è per questo che le implementazioni alternative mirano a copiarne esattamente il comportamento invece di reinterpretarlo.

Leggi anche

Termini correlati

Altro in Mining e consenso

Leggi questa pagina in inglese