Bij het ondertekenen gaat Bitcoin Core 26.2 er niet meer van uit dat een TapMiniscript sane is (#29853), getnetworkhashps geeft een foutmelding bij ongeldige parameters (#28554) en setmocktime heeft nu een afgedwongen maximum (#29869). Bouwen lukt ook met miniupnpc 2.2.8.
Ontvangen berichten konden vóór Bitcoin Core 0.10.1 tot 32 MiB groot worden, zodat een aanvaller per verbinding zoveel RAM kon afdwingen en de node mogelijk liet crashen. Bitcointalk-gebruiker Evil-Knievel meldde het; #5843 verlaagde de limiet naar 2 MiB, later voor Segwit verhoogd naar 4 MB. Een voor 2015 aangekondigde publicatie werd uitgesteld, en de details kwamen in 2024 naar buiten.
Via IPv6 was de onbegrensde banlijst van Bitcoin Core goedkoop op te blazen, en elk GETADDR-bericht dwong vervolgens tot een doorzoeking van die lijst voor elk teruggegeven adres, tot 2500 stuks. De geheugencrash en de CPU-belasting, samen geclassificeerd als High, zijn allebei opgelost door #19219, uitgebracht in 0.20.1 en 0.21.0.
Twee bugs in de afhandeling van version-berichten, een overflow van een signed integer en een logicafout in abs64, stelden een aanvaller in staat de adjusted time van een slachtoffer zo te verschuiven dat nieuwe blokken werden geweigerd omdat ze te ver in de toekomst lagen. De aanvaller moest wel tot de eerste 200 verbonden peers behoren. De fout, geclassificeerd als Medium, is verholpen in Bitcoin Core 0.21.0.
Wie een malafide BIP72-betaallink opende, kon Bitcoin-Qt zien crashen: de r-parameter kon naar een enorm bestand wijzen, waarvoor de app geheugen probeerde te reserveren terwijl de download ongemerkt op de achtergrond liep. De bug, ernstigheid Medium, verdween toen #17165 de ondersteuning voor BIP70 schrapte, wat in 0.20.0 terechtkwam.
Op maat gemaakte orphan-transacties, ongeldig maar duur om te valideren, konden een node urenlang platleggen, omdat elke nieuw geaccepteerde transactie een kwadratische zoekactie door de orphan-cache op gang bracht. #15644 van Pieter Wuille breekt dat werk af om nieuwe berichten te verwerken zodra er een match opduikt. De fix voor deze High-bug bereikte gebruikers in Bitcoin Core 0.18.0.
Door een misvormd GETDATA-bericht kon de net_processing-thread in Bitcoin Core-versies vóór 0.20.0 op 100% CPU blijven draaien, met 1,5 MB extra geheugen per aanvallende peer. Andere peers werden gewoon bediend, vandaar de classificatie Low. John Newbery vond de bug en loste die op in #18808.
Headers die direct op het genesisblok voortbouwden en maar moeilijkheid 1 nodig hadden, glipten van Bitcoin Core 0.12.0 tot 0.15.0 langs de checkpointlogica. Een spammer kon mapBlockIndex zo onbeperkt laten groeien en de node mogelijk door geheugengebrek laten crashen. Cory Fields meldde de bug, ernstigheid Medium, in 2017; #11028 maakte er een einde aan.
Eén INV vol met 50.000 blokitems kon een node 50.000 getheaders-antwoorden van elk ongeveer 1 kB in de wachtrij laten zetten, en een peer die weigerde ze te lezen hield die verzendbuffer van 50 MB vol. #18962 van John Newbery, gepresenteerd als bandbreedtebesparing, stuurde één GETHEADERS per INV en zat in 0.20.0.
Een aanvaller die GETDATA-antwoorden achterhield en met nepaankondigingen een transactie uit de g_already_asked_for-map van 50.000 items verdrong, kon die transactie telkens opnieuw aankondigen en zo voorkomen dat het slachtoffer haar bij iemand anders opvroeg. John Newbery maakte de bug (Medium) openbaar; #19988 van Pieter Wuille loste die op in Bitcoin Core 0.21.0.
Een tweede buffer overflow in miniupnpc, ontdekt door Wladimir J. Van Der Laan, lekte data en was te combineren met CVE-2015-6031 tot code-uitvoering op afstand, wat hij demonstreerde op miniupnpc 1.6-precise van Ubuntu. Zijn exploit werkte niet zonder meer tegen Bitcoin Core; versie 0.12 bracht in februari 2016 de oplossing.
Bitcoin Core 27.1 staat vol bugfixes: de fee bump in de GUI voor niet-ondertekende transacties werkt weer, het proxy-IP-veld accepteert geen poort meer en GetAddedNodeInfo() herkent nu addnode-CJDNS-peers (#30085). Ook de omgang met TapMiniscript tijdens het ondertekenen verandert (#29853).
BIP324 v2-transport staat in Bitcoin Core 27.0 standaard aan, en het nieuwe CoinGrinder-algoritme zoekt bij feerates vanaf 30 sat/vB naar de lichtste set inputs. De consensuscode stapt af van netwerkgecorrigeerde tijd en gebruikt voortaan de systeemtijd, waardoor een nauwkeurige klok voor beheerders zwaarder weegt. libbitcoinconsensus wordt uitgefaseerd; verwijdering staat gepland voor v28.
Nodes op Bitcoin Core 25.2 verwerken geen gemuteerde blokken meer (#29412). Verder verhelpt de update een segfault in getrawtransaction (#29003), een use-after-free in WalletBatch::EraseRecords (#29176) en een GUI-crash bij het kiezen van "Mask values".
I2P-sessies gebruiken in Bitcoin Core 26.1 zowel ECIES-X25519- als ElGamal-versleuteling (#29200), en de node logt nu de voortgang bij het laden van de mempool. Verder weigert de node gemuteerde blokken te verwerken (#29412) en slaat de wallet BnB-coinselectie over als SFFO aanstaat (#28994).
Experimenteel BIP324 v2-transport doet zijn intrede in Bitcoin Core 26.0; het staat standaard uit en gaat aan met -v2transport. De nieuwe RPC loadtxoutset laadt assumeutxo-snapshots, zodat een node binnen enkele minuten bruikbaar is terwijl de oorspronkelijke chainstate op de achtergrond verder valideert. Met submitpackage gaan ruwe transacties als pakket naar de mempool.
Verouderde feeschattingen levert Bitcoin Core 24.2 niet meer (#27622), en de RPC-afhandeling van ongeldige bech32-adressen is gecorrigeerd (#27727). De meeste andere wijzigingen raken het buildsysteem en CI, waaronder een fix voor de build van het Qt-pakket voor macOS met de linker van Xcode 15 (#28543).
Parallelle downloads van compact blocks doen hun intrede in Bitcoin Core 25.1 (#27626). Andere fixes betreffen een REST-crash op /deploymentinfo (#27853), het afsluiten van de server nadat een externe client de verbinding verbreekt (#28551) en walletmigratie, die ongeldige scripts nu weigert (#28125).
Rescans van descriptor wallets gaan sneller in Bitcoin Core 25.0 als compact block filters uit BIP158 beschikbaar zijn via -blockfilterindex=1, en een nieuwe RPC scanblocks doorzoekt die filters. Het relay-beleid accepteert nu transacties vanaf 65 non-witness bytes. Onder -blocksonly daalt het maximale mempoolgeheugen van 300 MB naar 5 MB.
Drie P2P-wijzigingen vormen de kern van Bitcoin Core 23.2: geen corruptie meer van peers.dat (#26909), geen voortijdig wissen van de downloadstatus van andere peers (#27608) en snellere inv-to-send-wachtrijen (#27610). De rest is build- en CI-werk, zoals het compileren van bdb met clang-16 op aarch64.