È pericoloso avere più implementazioni di Bitcoin? Intelligenza dei dati PlatoBlockchain. Ricerca verticale. Ai.

È pericoloso avere più implementazioni di Bitcoin?

Questo è un editoriale di opinione di Bill Scoresby, un piccolo imprenditore basato su bitcoin e scrittore di diverse guide per l'autocustodia di bitcoin.

I bug che recentemente hanno causato la mancata sincronizzazione di molti nodi LND con la blockchain di Bitcoin sono stati probabilmente causato da un'implementazione alternativa.

Forse ti starai chiedendo: “Chi al mondo usa qualcosa di diverso da Bitcoin Core?” Potresti non sapere che esistevano altre implementazioni di Bitcoin. Forse non sei sicuro di cosa significhi un'implementazione diversa.

Bitcoin Core è iniziato come il software che Satoshi Nakamoto scritto in C++ e rilasciato al mondo. È stato aggiornato con nuove versioni che portano ai giorni nostri. Un'implementazione alternativa è un software che fa la stessa cosa di Bitcoin Core – applica le stesse regole di consenso – ma è scritto in modo diverso, molto spesso in un linguaggio di codifica diverso.

In che modo un'implementazione alternativa ha interrotto i nodi sulla rete Lightning?

Una delle principali versioni del nodo Lightning Network (LND) si basa su un'implementazione alternativa di Bitcoin chiamata btcd. Quando uno sviluppatore creava una transazione multisig molto grande, btcd non la considerava valida perché conteneva troppi dati di controllo. Altre implementazioni di Bitcoin, soprattutto Bitcoin Core, non avevano tale limite sui dati dei testimoni delle transazioni Taproot e quindi accettavano come validi la transazione e il blocco che la conteneva.

Il risultato è stato che i minatori continuavano ad aggiungere nuovi blocchi sulla catena perché non utilizzavano btcd e secondo le loro regole non c'era nulla di sbagliato, ma i nodi Lightning LND non potevano riconoscere nessuno di questi nuovi blocchi perché erano costruiti sopra il blocco contenente quell'unica transazione che consideravano non valida.

Quando il bug si è ripresentato il 1° novembre, non sono stati colpiti solo i nodi LND. Anche alcune istanze di Electrum (un'implementazione del server backend per Electrum Wallet) non sono riuscite a raggiungere il consenso con il resto della catena. Mentre i nodi LND sono stati messi fuori consenso a causa di un problema simile in btcd, è stata l'implementazione di Bitcoin scritta in Rust a farlo ha causato il ritardo dei nodi elettrici, inclusi alcuni server molto visibili gestito da mempool.space.

Esiste un limite alla dimensione dei dati testimone per prevenire attacchi DoS, e fa anche parte di Bitcoin Core (sebbene Core abbia un limite maggiore per le transazioni Taproot). Sembra che le altre due implementazioni non sincronizzate avessero questo codice mantenuto il limite più piccolo.

Differenze molto piccole nelle implementazioni possono portare a una mancanza di consenso.

Avere più implementazioni di Bitcoin è pericoloso

Satoshi non mi piaceva l'idea di molteplici implementazioni di Bitcoin. "Non credo che una seconda implementazione compatibile di Bitcoin sarà mai una buona idea." Il motivo che ha fornito è stato: "Gran parte del progetto dipende dal fatto che tutti i nodi ottengano risultati esattamente identici in sequenza che una seconda implementazione rappresenterebbe una minaccia per la rete".

Minaccia? Qual è il problema?

Probabilmente hai sentito dire che la catena con il maggior numero di prove di lavoro è la vera catena. Quando due minatori diversi trovano un blocco contemporaneamente, la catena si divide e gli altri minatori iniziano a costruire sul blocco di cui sentono parlare per primo.

Non appena un nuovo blocco viene aggiunto a un lato della divisione, la maggior parte dei nodi e dei minatori lo accettano come la nuova vera catena e abbandonano l’altro lato della divisione. Questi blocchi vengono definiti blocchi obsoleti, anche se alcuni li chiamano blocchi orfani.

Poiché il tempo medio tra i blocchi in Bitcoin è di 10 minuti, è probabile che l'intera rete venga a conoscenza di questo nuovo blocco prima che ne venga aggiunto uno al lato perdente della divisione, e la catena con più lavoro vince.

“I nodi seguiranno la catena valida con la maggior parte del lavoro… La parola chiave qui è valida. Se il nodo riceve un blocco che ritiene non valido, non importa quanto lavoro viene svolto su quel blocco, il nodo non accetterà quella catena. — Andrea Chow

La parola chiave è “valido”. La minaccia si presenta quando un minatore trova un blocco che alcuni altri minatori e nodi ritengono non valido. I minatori che lo ritengono valido proveranno a costruire nuovi blocchi su quella catena. I minatori che pensano che non sia valido proveranno a costruire sull'ultimo blocco valido di cui sono a conoscenza. Il risultato: due catene e nessun modo di sapere quale sia la verità.

Come diavolo potrebbe accadere una cosa del genere?

Ebbene, come abbiamo visto nel caso del recente bug con i nodi LND, se c’è un bug in un’implementazione di Bitcoin che non è presente in altre implementazioni, ciò può portare a una mancanza di consenso sulla validità o meno di un blocco.

Bitcoin non ha un meccanismo per risolvere questo problema. La comunità al di fuori del protocollo deve decidere cosa succederà dopo. Sembra molto spiacevole.

Tanto che lo sviluppatore di Bitcoin Peter Todd lo ha detto altre implementazioni devono corrispondere bug per bug a Bitcoin Core.

Ecco qua: implementazioni multiple sono pericolose!

Quali sono le altre implementazioni di Bitcoin e perché esistono?

Prima di tutto, quasi tutti utilizzano Bitcoin Core.

Luke Dashjr vede circa 43,000 nodi, Il 98% dei quali esegue Bitcoin Core e qualcosa chiamato Coin Dance vede quasi 15,000 nodi, Il 96% dei quali esegue Bitcoin Core. Quindi, al momento, sembra che pochissime persone utilizzino implementazioni alternative.

Tuttavia, ci sono progetti attivi che stanno cercando di costruire e mantenere altre basi di codice che implementano il protocollo Bitcoin. Loro includono:

Jameson Lopp ha un ottima pagina con un elenco più esaustivo e collegamenti a tutte le altre implementazioni.

Tutti questi progetti hanno sviluppatori estremamente talentuosi che ci lavorano e ognuno esiste da più di qualche anno. Perché impegnarsi così tanto in qualcosa che sembra un problema del genere?

Bitcoin è senza autorizzazione. Chiunque può scaricare la catena; chiunque può interagire con la rete; e nessuno può impedirti di scrivere codice o eseguire un'implementazione alternativa.

Eppure, chiaramente alcune persone sono responsabili di apportare modifiche al repository Bitcoin e il processo per sceglierle sembra informale. Mentre c'è il Processo di proposta di miglioramento Bitcoin (BIP). per aver suggerito modifiche a Bitcoin Core, è anche piuttosto informale.

Niente di tutto questo è un problema diretto. Come sottolinea Marty Bent, il consenso approssimativo può essere un punto di forza. Se il processo di modifica di Bitcoin è difficile e poco chiaro, significa che i cambiamenti verranno controllati in modo più approfondito.

Il prossimo passo verso un consenso approssimativo è avere più di una implementazione popolare.

Non avere più implementazioni potrebbe essere più pericoloso

Non c’è dubbio che sia già un lavoro molto difficile essere una delle persone che hanno accesso a Bitcoin Core. In un mondo in cui Bitcoin svolge un ruolo centrale come strumento monetario, questo compito diventerà molto più difficile. Un piccolo gruppo di sviluppatori potrebbe diventare un obiettivo molto utile. Per lo meno, si cercherà la loro attenzione per fare pressione per varie inclusioni o esclusioni nella prossima versione del software.

Pensa all’industria del lobbying attualmente esistente in politica. Perché una cosa del genere non dovrebbe svilupparsi attorno alle persone che hanno accesso all'unica implementazione del protocollo Bitcoin?

Come i politici attuali, saranno percepiti come coloro che hanno accesso al potere. In quanto tali, le persone li prenderanno di mira, tranne che questi sviluppatori non avranno la forza di uno stato per difenderli. Che tipo di vita sarà? Chi lo sceglierebbe volontariamente?

Alla fine, il sistema finanziario globale è un peso piuttosto pesante da poggiare sulle spalle del piccolo gruppo di persone che hanno accesso a un repository GitHub. Forse non così diverso dal sistema finanziario globale dal quale stiamo cercando di allontanarci, in cui il futuro monetario delle persone dipende dalle decisioni di pochi banchieri centrali.

Molteplici implementazioni in soccorso!

La presenza e l’uso diffuso di molteplici implementazioni sulla rete Bitcoin possono mitigare queste pressioni rendendo molto più difficile per un malintenzionato modificare il protocollo Bitcoin.

Se i partecipanti alla rete Bitcoin fossero distribuiti più equamente tra le diverse implementazioni, ci sarebbe più spazio per far emergere buone idee. Proporre modifiche a Bitcoin o rifiutarle è molto più decentralizzato se non viene fatto tutto in un unico campo.

Chiaramente, l’utilizzo di diverse implementazioni di Bitcoin aumenta il rischio di una divisione della catena. Una catastrofica divisione della catena, in cui una parte significativa di nodi e minatori si biforcasse accidentalmente, non sarebbe positiva per Bitcoin, e certamente non sarebbe positiva per il suo prezzo. Ma ciò non minaccerebbe la natura senza autorizzazione di Bitcoin.

Un ambiente di sviluppo centralizzato in cui tutti si basano solo su Bitcoin Core potrebbe minacciare l’assenza di autorizzazione. La conversazione sull'argomento deve affrontare i rischi di fare così tanto affidamento su Bitcoin Core piuttosto che concentrarsi esclusivamente sui problemi che potrebbero essere causati da un'implementazione alternativa.

C'è un grande, più vecchio articolo su questo dibattito di Aaron van Wirdum. Puoi anche leggere un articolo più recente filo informativo su di esso.

Questo è un guest post di Bill Scoresby. Le opinioni espresse sono interamente personali e non riflettono necessariamente quelle di BTC Inc o Bitcoin Magazine.

Timestamp:

Di più da Bitcoin Magazine