L'Anatomia di una Proposta di Protocollo Bitcoin: Dal BIP all'Implementazione

Bitcoin è spesso descritto come oro digitale, implicando una natura statica e immutabile. Tuttavia, il software che alimenta la rete Bitcoin è un protocollo vivente che subisce manutenzione, correzioni di bug e aggiornamenti. A differenza dello sviluppo software centralizzato in cui un CEO aziendale o un product manager detta le funzionalità, Bitcoin si basa su una rete decentralizzata di partecipanti per concordare i cambiamenti. Questo processo è deliberato, lento e fortemente orientato allo status quo per garantire la sicurezza di miliardi di dollari in valore.

L'evoluzione del protocollo non è governata da un sistema di voto formale o da un'autorità singola. Al contrario, opera attraverso una combinazione unica di documentazione tecnica, revisione tra pari e consenso della comunità. Comprendere come un'idea passi da una semplice discussione su una mailing list a un cambiamento di codice attivato globalmente rivela la resilienza della rete Bitcoin. Evidenzia un sistema progettato per resistere alla cattura da parte di qualsiasi singolo gruppo, sia essi sviluppatori, miner o interessi aziendali.

Al cuore di questo processo evolutivo c'è la Bitcoin Improvement Proposal, o BIP. Questo è il meccanismo principale per proporre nuove funzionalità, raccogliere input della comunità su un problema e documentare le decisioni di design. Una BIP non è un voto vincolante, ma piuttosto un documento di design tecnico. Fornisce informazioni alla comunità Bitcoin o descrive una nuova funzionalità per Bitcoin o i suoi processi.

Il Framework della Bitcoin Improvement Proposal

Per comprendere come Bitcoin cambia, è necessario prima capire il processo di standardizzazione. Il sistema BIP è fortemente influenzato dal processo Python Enhancement Proposal (PEP). Serve come modo formale per introdurre cambiamenti nel codebase o nell'ecosistema circostante. Chiunque può scrivere una BIP, ma farla accettare e implementare è un rigido calvario che poche proposte sopravvivono.

Definire una BIP

Una BIP è essenzialmente un documento tecnico. Offre una specifica tecnica concisa della funzionalità e una razionale per la funzionalità. L'autore è responsabile di costruire il consenso all'interno della comunità e di documentare le opinioni dissenzienti. Esistono tre tipi principali di BIP. Le BIP Standards Track descrivono qualsiasi cambiamento che influisce sulla maggior parte o tutte le implementazioni Bitcoin, come un cambiamento al protocollo di rete o un cambiamento nelle regole di validità di blocchi o transazioni.

Le BIP Informazionali descrivono un problema di design Bitcoin, o forniscono linee guida generali o informazioni alla comunità Bitcoin, ma non propongono una nuova funzionalità. Le BIP Process descrivono un processo relativo a Bitcoin, o propongono un cambiamento a (o un evento in) un processo. La stragrande maggioranza dell'attenzione pubblica va alle BIP Standards Track, poiché queste sono le proposte che alterano le regole di consenso della rete.

Il Ciclo di vita di una Proposta

La vita di una BIP inizia molto prima che le venga assegnato un numero. Di solito inizia con discussioni sulla mailing list di sviluppo Bitcoin. È qui che l'idea iniziale viene vagliata, criticata e spesso smontata dagli altri sviluppatori. Se l'idea sopravvive a questa prova iniziale del fuoco, l'autore redige il testo della BIP.

Una volta che la bozza è inviata al repository BIP, un editor le assegna un numero. Questo status è noto come "Draft". Da lì, la proposta passa attraverso varie fasi. Se la comunità concorda che il lavoro è prezioso, può passare a "Proposed". Se i cambiamenti sono implementati e la rete li attiva, la BIP diventa "Final" o "Active". Al contrario, le proposte possono essere "Rejected", "Withdrawn" dall'autore, o contrassegnate come "Obsolete" se sostituite da soluzioni più nuove.

Il Meccanismo di Consenso

L'aspetto più confondente dello sviluppo Bitcoin per gli esterni è la mancanza di una struttura di governance formale. Non c'è una fondazione o un leader che appone "approvato" su una BIP. Al contrario, la rete si basa su un concetto noto come "rough consensus". Questo è un termine preso in prestito dall'Internet Engineering Task Force (IETF). Non significa unanimità.

Comprendere il Rough Consensus

Il rough consensus si raggiunge quando la comunità tecnica concorda generalmente che una proposta è solida e che tutte le obiezioni significative sono state affrontate. È una misurazione qualitativa piuttosto che un voto quantitativo. Se una proposta ha un forte merito tecnico ma affronta preoccupazioni di sicurezza valide da una porzione significativa degli sviluppatori, non procederà.

Questa dinamica costringe gli autori a impegnarsi con i critici. Devono migliorare le loro proposte finché le obiezioni non sono risolte o dimostrate infondate. Questo processo può richiedere anni. Ad esempio, l'aggiornamento Taproot è stato discusso e raffinato per un periodo considerevole prima di essere considerato pronto per l'attivazione. La lentezza è una caratteristica, non un bug, che previene decisioni avventate che potrebbero destabilizzare la rete finanziaria.

Accesso Commit degli Sviluppatori

Un malinteso comune è che gli sviluppatori con "commit access" al repository GitHub di Bitcoin Core controllino Bitcoin. Sebbene questi maintainer abbiano la capacità di mergiare codice nel branch master del software, funzionano più come custodi che come governanti. Il loro ruolo è garantire che il codice mergiato rifletta il rough consensus della comunità.

Se un maintainer mergiasse codice che cambia fondamentalmente Bitcoin contro la volontà degli utenti, gli operatori di nodi semplicemente rifiuterebbero di aggiornare a quella versione. La rete continuerebbe con la versione precedente e la versione del maintainer verrebbe ignorata. Questo crea un potente controllo sull'influenza degli sviluppatori, assicurando che rimangano vincolati ai desideri della rete di nodi.

Percorsi di Attivazione e Implementazione

Una volta che un aggiornamento del protocollo è codificato e mergiato nel software Bitcoin Core, rimane dormiente. Deve essere "attivato" dalla rete. Questa è la fase in cui il consenso teorico interagisce con la realtà fisica della blockchain. L'attivazione richiede coordinazione tra gli attori economici del sistema, principalmente i miner e gli operatori di nodi completi.

Segnalazione Miner e Soglie

Storicamente, l'attivazione ha spesso utilizzato un processo definito in BIP 9. Questo prevede che i miner segnalino la loro prontezza per un aggiornamento all'interno degli header dei blocchi che minano. Per un periodo specifico, solitamente due settimane (2016 blocchi), la rete monitora quanti blocchi contengono un segnale di supporto per l'aggiornamento.

Se la percentuale di blocchi segnalanti raggiunge una soglia definita—spesso il 90% o il 95%—l'aggiornamento si blocca. Dopo un successivo periodo di grazia, le nuove regole diventano attive. Questo meccanismo è progettato per garantire che la rete si aggiorni senza problemi senza lasciare i miner indietro. Tuttavia, ha anche portato a standoff politici in cui i miner bloccano efficacemente gli aggiornamenti rifiutandosi di segnalare, anche se la base utenti più ampia desidera il cambiamento.

User Activated Soft Forks

I limiti della segnalazione miner sono diventati evidenti durante la "Block Size War" che ha portato al 2017. Quando i miner hanno bloccato l'attivazione di Segregated Witness (SegWit), è emerso un movimento grassroots che proponeva un User Activated Soft Fork (UASF), noto come BIP 148.

In un UASF, gli operatori di nodi eseguono software che rifiuta i blocchi dai miner che non segnalano per l'aggiornamento dopo una certa data. Questo sposta il potere dai miner alla maggioranza economica dei nodi. Se l'attività economica (exchange, wallet, utenti) si sposta sulla chain UASF, i miner sono incentivati economicamente a seguire o rischiano di minare su una chain priva di valore. La minaccia di BIP 148 è stata strumentale nel forzare l'attivazione di SegWit.

Dynamiche dei Fork e Compatibilità

I cambiamenti al protocollo Bitcoin rientrano generalmente in due categorie: soft fork e hard fork. La distinzione risiede nella compatibilità all'indietro. Comprendere la differenza è cruciale per afferrare perché Bitcoin è rimasto una singola rete continua nonostante numerosi aggiornamenti.

Il Meccanismo Soft Fork

Un soft fork è un cambiamento al protocollo che restringe l'insieme di blocchi validi. Irrigidisce le regole. Poiché le nuove regole sono un sottoinsieme delle vecchie regole, i nodi vecchi che non si sono aggiornati vedranno ancora i nuovi blocchi come validi. Potrebbero non comprendere le nuove funzionalità, ma accetteranno la chain.

Questa compatibilità all'indietro è vitale. Permette alla rete di aggiornarsi gradualmente. Gli utenti non sono costretti ad aggiornare immediatamente il loro software per rimanere parte del consenso. La maggior parte degli aggiornamenti principali, inclusi SegWit e Taproot, sono stati implementati come soft fork. Questo garantisce che la rete non si divida in due chain incompatibili semplicemente perché alcuni utenti sono lenti ad aggiornarsi.

La Divergenza Hard Fork

Un hard fork allenta le regole o introduce regole incompatibili con il vecchio software. I nodi vecchi vedranno i blocchi creati sotto le nuove regole come invalidi e li rifiuteranno. Perché un hard fork abbia successo senza dividere la rete, il 100% degli utenti deve aggiornarsi simultaneamente, cosa impossibile in un sistema decentralizzato.

Di conseguenza, gli hard fork controversi portano quasi sempre a una divisione permanente della chain. L'esempio più famoso è la creazione di Bitcoin Cash (BCH) nel 2017. I proponenti volevano aumentare il limite di dimensione del blocco, un cambiamento di regola incompatibile con il consenso esistente di Bitcoin. Questo ha risultato in due reti e valute distinte. Gli hard fork sono generalmente evitati nello sviluppo Bitcoin a causa di questo rischio di fratturare la rete e la comunità.

Attributo di Confronto Soft Fork Hard Fork
Compatibilità Compatibile all'indietro Non compatibile all'indietro
Cambiamento Regola Irrigidisce/Restringe regole Allenta/Amplia regole
Rischio Rete Basso rischio di split chain Alto rischio di split permanente

Aggiornamenti Principali del Protocollo: Segregated Witness

Uno degli esempi più significativi di una proposta che passa all'implementazione è Segregated Witness (SegWit). Attivato nell'agosto 2017, ha affrontato problemi di lunga data e ha preparato il terreno per il scaling futuro. La proposta ha cambiato fondamentalmente come i dati delle transazioni erano strutturati.

Risolvere la Malleabilità

Prima di SegWit, era possibile modificare l'ID univoco di una transazione prima che fosse confermata sulla blockchain senza invalidare la firma. Questo problema, noto come transaction malleability, rendeva difficile costruire soluzioni di secondo livello come la Lightning Network. Se l'ID della transazione poteva cambiare, i contratti intelligenti che si basavano su quell'ID si sarebbero rotti.

SegWit ha risolto questo spostando i dati della firma (witness) fuori dalla parte della transazione usata per calcolare l'ID. segregando il witness, l'ID della transazione è diventato immutabile. Questa correzione è stata il perno che ha permesso ai canali di pagamento di funzionare in modo sicuro, abilitando lo sviluppo della Lightning Network.

Il Concetto di Unità di Peso

SegWit ha anche servito come un astuto aumento della dimensione del blocco. Invece di semplicemente alzare il limite di 1MB—che avrebbe richiesto un hard fork—SegWit ha cambiato come i blocchi vengono misurati. Ha introdotto il "block weight".

I dati nella sezione witness contano per meno peso rispetto ai dati nel blocco transazione principale. Questo permette ai blocchi di superare la dimensione tradizionale di 1MB in termini di dati grezzi (fino a 4MB teoricamente) pur rimanendo compatibili con i nodi legacy che controllano solo i dati non-witness. Questo ha aumentato efficacemente la capacità della rete e abbassato le fee per le transazioni che usano il formato SegWit.

L'Aggiornamento Taproot

A seguito di SegWit, il prossimo cambiamento principale è stato Taproot, attivato nel novembre 2021. Taproot ha combinato tre BIP (340, 341 e 342) per migliorare privacy, efficienza e capacità di scripting. Ha dimostrato un processo di attivazione più raffinato noto come "Speedy Trial".

Signature Schnorr

Al cuore di Taproot c'è l'implementazione delle signature Schnorr (BIP 340). Questo schema di firma digitale offre vantaggi significativi rispetto all'originale Elliptic Curve Digital Signature Algorithm (ECDSA). Il beneficio principale è la linearità.

La linearità permette l'aggregazione delle signature. In una transazione multi-signature, più chiavi pubbliche e signature possono essere combinate in una singola chiave e una singola signature. Per la blockchain, una transazione complessa che coinvolge più parti appare identica a una transazione standard single-user. Questo migliora la privacy mascherando la complessità degli accordi wallet e risparmia spazio sulla blockchain, riducendo le fee.

Merkelized Abstract Syntax Trees

Taproot ha anche introdotto Merkelized Abstract Syntax Trees (MAST). In precedenza, se un utente creava un contratto intelligente complesso con multiple condizioni di spesa, tutte quelle condizioni dovevano essere rivelate sulla blockchain quando i fondi erano spesi. Questo era inefficiente e negativo per la privacy.

Con MAST, gli utenti possono strutturare le condizioni di spesa in formato albero. Quando spendono, devono rivelare solo il branch specifico dell'albero che viene usato. I branch non eseguiti rimangono nascosti. Questo permette contratti intelligenti intricati che sono privati ed efficienti nei dati, espandendo ulteriormente il potenziale di Bitcoin oltre il semplice trasferimento di valore.

Dibattiti Attuali: Il Caso di OP_CAT

L'evoluzione di Bitcoin è in corso, con discussioni attuali che si concentrano sul ripristino di funzionalità perse. Uno degli argomenti più prominenti è OP_CAT. Si tratta di un opcode specifico (operation code) che faceva parte del software Bitcoin originale ma è stato disabilitato da Satoshi Nakamoto nel 2010 a causa di preoccupazioni sull'uso della memoria e vulnerabilità di sicurezza.

Comprendere gli Opcodes

Gli opcodes sono i comandi che il linguaggio di scripting Bitcoin comprende. Dicono alla rete come processare una transazione. Alcuni opcodes abilitano l'addizione, altri controllano le signature e alcuni verificano i time lock. Quando gli opcodes sono disabilitati, la capacità di eseguire quelle azioni specifiche viene rimossa dalla cassetta degli attrezzi della rete.

La rimozione di OP_CAT e altri ha severamente limitato il linguaggio di scripting Bitcoin. Questa limitazione era intenzionale all'epoca, priorizzando sicurezza e stabilità rispetto alla funzionalità. Tuttavia, con la maturazione della comprensione del protocollo, gli sviluppatori stanno ora esplorando la reintroduzione sicura di questi codici per abilitare nuove funzionalità.

La Proposta di Concatenazione

OP_CAT permette specificamente la concatenazione (unione) di due stringhe di dati. Sebbene sembri semplice, abilita una potente funzionalità nota come "covenants". I covenants permettono agli utenti di imporre restrizioni su come i bitcoin futuri possono essere spesi, non solo su chi può spenderli.

Ad esempio, un covenant potrebbe imporre che un UTXO specifico possa essere inviato solo a una whitelist di indirizzi specifici. Questo ha implicazioni massive per i meccanismi vault, dove gli utenti potrebbero creare pulsanti "undo" per fondi rubati, e per il bridging Layer 2. Il dibattito intorno a OP_CAT illustra la natura conservativa dello sviluppo Bitcoin; anche un comando semplice richiede anni di analisi di sicurezza prima della reintroduzione.

Impatto sulle Soluzioni Layer 2

Le proposte di protocollo mirano spesso al layer base, ma la loro utilità primaria si realizza sulle reti Layer 2 (L2). La relazione tra la blockchain principale e questi layer secondari è simbiotica. I miglioramenti al protocollo base rendono le L2 più economiche, sicure ed efficienti.

Dipendenze della Lightning Network

La Lightning Network è un esempio principale di questa dipendenza. Si basa sulla sicurezza del layer base per liquidare le transazioni. Come menzionato, l'aggiornamento SegWit era un prerequisito per il funzionamento affidabile di Lightning. Gli aggiornamenti futuri continuano a mirare all'efficienza di Lightning.

Ad esempio, proposte come "Eltoo" (SIGHASH_ANYPREVOUT) mirano a semplificare la gestione dei canali. Modificando come le transazioni sono firmate sul layer base, i nodi Lightning possono immagazzinare meno dati e recuperare dai fallimenti più facilmente. Questo mostra come le proposte L1 sono spesso guidate dalle necessità di scalabilità L2.

Integrazione Sidechain

Le sidechain, come Liquid o Rootstock, beneficiano anch'esse degli aggiornamenti del protocollo. Le sidechain sono blockchain indipendenti che girano in parallelo a Bitcoin. Usano un peg bidirezionale per trasferire valore avanti e indietro. Attualmente, questi peg spesso si basano su federazioni—gruppi di funzionari fidati.

Aggiornamenti come OP_CAT o nuovi schemi di firma potrebbero permettere meccanismi di bridging più trustless. Se lo script Bitcoin può verificare prove da una sidechain (come Zero-Knowledge proofs), permetterebbe agli utenti di spostare fondi tra chain senza fidarsi di una federazione. Questo rimane un'area principale di ricerca e motivazione per nuove BIP.

Innovazione Non Intenzionale: Il Fenomeno Ordinals

A volte, gli aggiornamenti del protocollo portano a risultati completamente inaspettati. L'ascesa degli Ordinals è una testimonianza alla legge delle conseguenze non intenzionali nel software open-source. Gli Ordinals utilizzano i meccanismi sia di SegWit che di Taproot per iscrivere dati direttamente su singoli satoshi.

SegWit ha reso più economico immagazzinare dati witness, e Taproot ha rimosso il limite di dimensione sui push di dati all'interno degli script di transazione. Combinati, questi cambiamenti hanno permesso agli utenti di incorporare immagini, testo e persino videogiochi nella blockchain Bitcoin. Questo non era l'intento specifico degli sviluppatori che hanno scritto quelle BIP.

Questo sviluppo ha scatenato un feroce dibattito all'interno della comunità. Alcuni vedono le iscrizioni come spam che congestiona la rete, mentre altri le vedono come un uso legittimo dello spazio blocco pagato con fee. Indipendentemente dal punto di vista, gli Ordinals dimostrano che una volta implementata una proposta, gli utenti della rete utilizzeranno le nuove regole in modi che gli autori potrebbero non aver mai anticipato.

Conclusione

L'anatomia di una proposta di protocollo Bitcoin rivela un sistema che prioritizza la sopravvivenza sopra ogni altra cosa. Dalla redazione iniziale di una BIP al processo estenuante di costruzione del rough consensus, ogni passo è progettato per filtrare i rischi. La distinzione tra soft fork e hard fork illustra un impegno per la compatibilità all'indietro, assicurando che la rete rimanga inclusiva anche mentre avanza.

Aggiornamenti come SegWit e Taproot mostrano che Bitcoin può innovare senza sacrificare i suoi principi fondamentali. Nel frattempo, i dibattiti in corso intorno a OP_CAT e l'emergere degli Ordinals dimostrano che l'ecosistema rimane vibrante e imprevedibile. L'interplay tra miner, sviluppatori e operatori di nodi crea un sistema di pesi e contrappesi che nessuna entità centralizzata può sovvertire.

Bitcoin cambia lentamente non perché non possa muoversi velocemente, ma perché il costo di romperlo è troppo alto per rischiare.