Podepisování v Bitcoin Core 26.2 už nepředpokládá, že je TapMiniscript „sane“ (#29853), getnetworkhashps při neplatných parametrech vyhodí chybu (#28554) a setmocktime má vynucené maximum (#29869). Sestavení funguje i s miniupnpc 2.2.8.
Přijímané zprávy mohly před Bitcoin Core 0.10.1 dosáhnout 32 MiB, takže útočník mohl vynutit alokaci takového množství RAM na každé spojení a případně uzel shodit. Nahlásil to uživatel Bitcointalku Evil-Knievel; #5843 snížil limit na 2 MiB, později zvýšený na 4 MB kvůli Segwitu. Zveřejnění ohlášené na rok 2015 se odložilo a podrobnosti vyšly najevo v roce 2024.
IPv6 zlevnilo nafukování neomezeného seznamu zákazů v Bitcoin Core a každá zpráva GETADDR pak vynutila prohledání tohoto seznamu pro každou vrácenou adresu, kterých bylo až 2500. Pád kvůli paměti i zátěž CPU (vysoká závažnost) opravil #19219 vydaný v 0.20.1 a 0.21.0.
Dvě chyby ve zpracování zprávy version, přetečení celého čísla se znaménkem a logická chyba v abs64, dovolily útočníkovi posunout upravený čas oběti tak, že odmítala nové bloky jako příliš vzdálené do budoucna. Útočník musel být mezi prvními 200 peery, kteří se připojili. Chybu se střední závažností opravil Bitcoin Core 0.21.0.
Otevření podvržené platební linky BIP72 mohlo shodit Bitcoin-Qt: parametr r mohl mířit na obrovský soubor a aplikace se pro něj snažila alokovat paměť, zatímco stahování tiše běželo na pozadí. Chyba se střední závažností zmizela, když #17165 odstranil podporu BIP70, což vyšlo v 0.20.0.
Speciálně sestavené osiřelé transakce, neplatné, ale náročné na validaci, mohly uzel zastavit na celé hodiny, protože každá nově přijatá transakce spustila kvadratické prohledávání cache osiřelých transakcí. Oprava #15644 od Pietera Wuille tuto práci přeruší, jakmile se najde shoda, a uzel se věnuje novým zprávám. K uživatelům se oprava chyby s vysokou závažností dostala v Bitcoin Core 0.18.0.
Chybně utvořená zpráva GETDATA mohla v Bitcoin Core před 0.20.0 nechat vlákno net_processing točit se na 100 % CPU a přidat 1,5 MB paměti na každého útočícího peera. Ostatní peeři byli dál obsluhováni, proto nízká závažnost. Chybu našel John Newbery a opravil ji v #18808.
Hlavičky postavené přímo na genesis bloku, kterým stačila obtížnost 1, procházely od Bitcoin Core 0.12.0 až do 0.15.0 přes logiku checkpointů, takže spammer mohl neomezeně zvětšovat mapBlockIndex a případně uzel shodit na nedostatek paměti. Chybu se střední závažností nahlásil v roce 2017 Cory Fields, uzavřel ji #11028.
Jediná zpráva INV s 50 000 položkami bloků mohla uzel přimět zařadit do fronty 50 000 odpovědí getheaders o velikosti asi 1 kB a peer, který je odmítal číst, držel tento 50MB odesílací buffer plný. #18962 od Johna Newberyho, předložený jako úspora šířky pásma, posílal na jeden INV jeden GETHEADERS a vyšel v 0.20.0.
Útočník zadržoval odpovědi na GETDATA a falešnými oznámeními pak vytlačil transakci z mapy g_already_asked_for s 50 000 položkami. Mohl ji tak oznamovat znovu a znovu a oběť si ji nevyžádala od nikoho jiného. Chybu se střední závažností zveřejnil John Newbery, opravil ji #19988 od Pietera Wuille v Bitcoin Core 0.21.0.
Druhé přetečení bufferu v miniupnpc, které našel Wladimir J. Van Der Laan, vynášelo data a ve spojení s CVE-2015-6031 umožňovalo vzdálené spuštění kódu, jak předvedl na miniupnpc 1.6-precise z Ubuntu. Jeho exploit nešel na Bitcoin Core přenést přímo a opravu přinesla verze 0.12 v únoru 2016.
Samé opravy chyb v Bitcoin Core 27.1: v GUI funguje navýšení poplatku u nepodepsaných transakcí, pole pro IP proxy už nepřijímá port a GetAddedNodeInfo() nově rozpozná CJDNS peery z addnode (#30085). Mění se i zacházení s TapMiniscriptem při podepisování (#29853).
Transport BIP324 v2 je v Bitcoin Core 27.0 ve výchozím stavu zapnutý a nový algoritmus CoinGrinder hledá nejlehčí sadu vstupů při sazbách od 30 sat/vB. Konsenzuální kód nahrazuje síťově upravený čas systémovým, takže na přesných hodinách záleží provozovatelům víc. Knihovna libbitcoinconsensus je zastaralá a její odstranění se plánuje pro v28.
Uzly s Bitcoin Core 25.2 přestávají zpracovávat mutované bloky (#29412). Aktualizace dále opravuje segfault v getrawtransaction (#29003), use-after-free ve WalletBatch::EraseRecords (#29176) a pád GUI při výběru „Mask values“.
I2P relace v Bitcoin Core 26.1 používají šifrování ECIES-X25519 i ElGamal (#29200) a uzel nově loguje průběh načítání mempoolu. Mezi opravami je odmítnutí zpracovávat mutované bloky (#29412) a peněženka, která při zapnutém SFFO přeskočí výběr mincí BnB (#28994).
Experimentální transport BIP324 v2 debutuje v Bitcoin Core 26.0: ve výchozím stavu je vypnutý, zapíná ho -v2transport. Nové RPC loadtxoutset načítá snímky assumeutxo a během minut nabídne použitelný uzel, zatímco původní chainstate dokončuje validaci na pozadí; submitpackage posílá surové transakce do mempoolu jako balíček.
Zastaralé odhady poplatků už Bitcoin Core 24.2 neservíruje (#27622) a v RPC správně zachází s neplatnými bech32 adresami (#27727). Většina ostatních změn se týká sestavení a CI, včetně opravy sestavení balíčku Qt pro macOS s linkerem Xcode 15 (#28543).
Paralelní stahování compact blocků přináší Bitcoin Core 25.1 (#27626). Další opravy se týkají pádu REST na /deploymentinfo (#27853), vypnutí serveru po odpojení vzdáleného klienta (#28551) a migrace peněženek, která nově odmítá neplatné skripty (#28125).
Přeskenování deskriptorových peněženek je v Bitcoin Core 25.0 rychlejší, pokud jsou přes -blockfilterindex=1 k dispozici compact block filtry z BIP158, a nové RPC scanblocks v těchto filtrech vyhledává. Pravidla přenosu nově přijímají transakce od 65 ne-witness bajtů. S -blocksonly klesá maximální paměť mempoolu z 300 MB na 5 MB.
Tři P2P změny nesou Bitcoin Core 23.2: konec poškozování peers.dat (#26909), žádné předčasné mazání stavu stahování ostatních peerů (#27608) a rychlejší fronty inv-to-send (#27610). Zbytek je práce na sestavení a CI, třeba kompilace bdb s clang-16 na aarch64.