L’implementazione di riferimento di Bitcoin. Il suo sito pubblica gli annunci delle nuove versioni, gli avvisi di sicurezza e le dichiarazioni del progetto.
Transazioni non standard costruite ad arte potevano impegnare un nodo Bitcoin Core per qualche secondo ciascuna senza far disconnettere il mittente, offrendo a un attaccante un modo per ritardare la propagazione dei blocchi. La CVE-2025-46598, classificata Bassa, è stata segnalata da Antoine Poinsot e mitigata nella v30.0 riducendo il tempo di validazione nel caso peggiore.
Blocchi oltre 1GB potevano mandare in overflow un controllo sulla dimensione nei nodi Bitcoin Core a 32 bit e provocarne il crash durante la scrittura su disco, ma solo se inviati come compact block e solo contro una vittima con -maxmempool sopra i 3GB e 1GB di transazioni dentro. La CVE-2025-46597, di gravità Bassa, l'ha trovata Pieter Wuille; a chiuderla nella 29.1 e nella 30.0 è stato il tetto a -maxmempool sui sistemi a 32 bit.
Scendono le feerate minime predefinite in Bitcoin Core 28.3: -blockmintxfee a 1 satoshi per kvB, -minrelaytxfee e -incrementalrelayfee a 100 satoshi per kvB. Quelle del wallet non cambiano, e le transazioni più economiche potrebbero non propagarsi finché i nuovi valori non si diffondono sulla rete. I permessi di whitelist smettono inoltre di valere per le connessioni onion in entrata (#33395).
Due correzioni P2P per FillBlock in Bitcoin Core 29.2: un controllo sulle mutazioni del witness (#32646) e uno sugli header vuoti prima della chiamata (#33296). I controlli TRUC non vengono più applicati in caso di reorg (#33504), e getblock e getblockheader smettono di restituire il target della punta (#33446).
I limiti su OP_RETURN spariscono di fatto in Bitcoin Core 30.0: -datacarriersize ha come default 100.000 e una transazione può avere più output di dati, anche se -datacarriersize=83 ripristina il vecchio tetto. Le feerate di relay predefinite scendono a 0,1 satoshi per vB, le operazioni di firma legacy si fermano a 2500 per transazione standard e un nuovo comando bitcoin fa da involucro agli eseguibili esistenti.
Il logging incondizionato su disco di Bitcoin Core 29.1 è limitato a 1MiB l'ora per ogni punto del sorgente (#32604), e le transazioni standard non possono superare 2500 operazioni di firma legacy potenzialmente eseguite. Le feerate di relay predefinite calano a 100 satoshi per kvB, mentre le build a 32 bit fissano un tetto di 500MB a -maxmempool e di 1GiB a -dbcache.
Poco più della metà delle modifiche di Bitcoin Core 28.2 riguarda la build. Ora Guix notarizza il bundle dell'app macOS e firma tutti i binari macOS e Windows (#31407), mentre depends riceve correzioni di compilazione per libevent su NetBSD (#31500) e per freetype con cmake (#32693).
In una lettera, trentuno contributori di Bitcoin Core sostengono che il software dei nodi non dovrebbe rifiutare il relay di transazioni con una domanda economica costante, che finiscono regolarmente nei blocchi, dato che utenti e miner possono aggirare questi filtri. Precisano che non si tratta di un sostegno all'uso per dati non finanziari e che la scelta di software e policy spetta solo agli utenti.
Anni di spam ininterrotto di addr potevano mandare in overflow l'identificatore a 32 bit dell'address manager di Bitcoin Core e provocare il crash del nodo: è il residuo di un attacco già attenuato dal rate limiting nella v22.0. La versione 29.0 passa a un identificatore a 64 bit e chiude la CVE-2024-52919, di gravità Bassa. L'ha trovata Eugene Siegel, la modifica è di Martin Zumsande.
Bitcoin Core 29.0 abbandona il supporto UPnP; -natpmp gira ora su un'implementazione integrata di PCP e NAT-PMP al posto di libnatpmp. Debutta la policy sull'ephemeral dust, una correzione per il peso di blocco riservato due volte introduce -blockreservedweight, e i nodi chiedono i genitori mancanti a tutti i peer che hanno annunciato un orfano. Le versioni 26.x e precedenti arrivano a Maintenance End.
Con -port impostato, Bitcoin Core 28.1 ricava la porta onion predefinita sommando uno a quella porta invece di fissarla a 8334 su mainnet, così più nodi locali tornano a girare fianco a fianco senza conflitti all'avvio. Chi ha righe HiddenServicePort manuali in torrc potrebbe doverle cambiare. In DecodeExtKey vengono inoltre cancellati i dati segreti (#31166).
Un peer che annuncia un blocco e poi si ferma poteva tenere un nodo Bitcoin Core in attesa fino a 10 minuti prima che cercasse altrove, e gli attaccanti potevano ripetere il trucco. La CVE-2024-52922, di gravità Media, segnalata e corretta da Greg Sanders, è mitigata nella v25.1 e nella v26.0, che possono chiedere subito un blocco a un massimo di 3 peer compact block ad alta banda.
Una race condition nel rilevamento delle auto-connessioni si chiude con la versione 27.2 di Bitcoin Core (#30394), che corregge anche le chiamate a FillPSBT che restituivano per errore complete=true (#30357). Cambia l'ordine di spegnimento del thread di caricamento blocchi e dello scheduler (#30435), e il codice compila con miniupnpc 2.2.8 e GCC 15.
Nelle versioni di Bitcoin Core precedenti alla v25.0, blocchi mutati inviati da un peer potevano azzerare lo stato di download degli altri peer che annunciavano lo stesso blocco, facendo dimenticare al nodo un compact block che stava ancora ricostruendo. Se n'è accorto Suhas Daftuar, e la #27608 limita ogni peer al proprio stato. La CVE-2024-52921 è classificata Media.
I nodi con Bitcoin Core precedente alla v25.0 potevano andare in crash da remoto con un messaggio blocktxn ripetuto per lo stesso blocco, che faceva scattare un'asserzione secondo cui FillBlock gira una volta sola. Non serviva una collisione di short ID: si arrivava allo stesso punto includendo transazioni assenti dalla merkle root del blocco. Niklas Gögge ha trovato e corretto il bug di gravità Alta, la CVE-2024-35202.
All'inizio di maggio 2023 un picco di attività sulla rete, aggravato dagli spy node, ha rallentato la propagazione di blocchi e transazioni: ordinare i set inv-to-send ormai enormi si mangiava quasi tutto il tempo del thread P2P. Il problema, di gravità Media, è stato risolto in Bitcoin Core v25.0 dalla #27610, che toglie prima le transazioni uscite dalla mempool e svuota i set più in fretta man mano che crescono.
Testnet4 (BIP94) debutta in Bitcoin Core 28.0, insieme a un package relay limitato alle coppie 1-parent-1-child, alle transazioni TRUC standard secondo BIP 431 e a un nuovo tipo di output Pay To Anchor. -mempoolfullrbf ha ora come default 1, e libbitcoinconsensus esce di scena dopo la deprecazione nella 27.0.
Catene di header a bassa difficoltà potevano mandare in crash da remoto i nodi Bitcoin Core precedenti alla v24.0.1, e una sola catena costruita ad arte era riutilizzabile contro qualsiasi nodo della rete. Con la correzione #25717 il nodo verifica che una catena abbia lavoro sufficiente prima di memorizzarla, il che ha anche messo fine alla dipendenza dai checkpoint contro gli attacchi noti. Gravità: Alta.
Bombardare di messaggi addr un nodo Bitcoin Core poteva mandarlo in crash: 2^32 inserimenti in addrman facevano traboccare un contatore di ID a 32 bit e scattare un'asserzione. Eugene Siegel ha segnalato il bug, di gravità Alta, nel 2021; la v22.0 contiene la correzione di Pieter Wuille.
Fingendosi un dispositivo UPnP sulla rete locale, un attaccante poteva inondare un nodo Bitcoin Core di risposte M-SEARCH gonfiate fino a esaurirne la memoria. Erano esposti solo i nodi avviati con -miniupnp, visto che altrimenti la libreria è disattivata di default. Il bug, di gravità Bassa, è stato corretto nella v22.0.