Signering i Bitcoin Core 26.2 förutsätter inte längre att en TapMiniscript är sund (#29853), getnetworkhashps ger ett fel vid ogiltiga parametrar (#28554) och setmocktime har fått ett tvingande maxvärde (#29869). Bygget fungerar också med miniupnpc 2.2.8.
Mottagna meddelanden kunde bli upp till 32 MiB stora före Bitcoin Core 0.10.1, så en angripare kunde tvinga fram så mycket RAM-allokering per anslutning och eventuellt krascha noden. Bitcointalk-användaren Evil-Knievel rapporterade felet; #5843 sänkte gränsen till 2 MiB, senare höjd till 4 MB för Segwit. Ett offentliggörande som aviserats till 2015 sköts upp, och detaljerna kom 2024.
Med IPv6 blev det billigt att blåsa upp Bitcoin Cores obegränsade bannlista, och varje GETADDR-meddelande tvingade sedan fram en genomgång av listan för varje returnerad adress, upp till 2500 stycken. Både minneskraschen och CPU-belastningen, med hög allvarlighetsgrad, åtgärdades av #19219 som kom i 0.20.1 och 0.21.0.
Två buggar i hanteringen av version-meddelanden, ett överflöde i signerade heltal och ett logikfel i abs64, lät en angripare förskjuta offrets justerade tid tills det avvisade nya block som daterade för långt fram i tiden. Angriparen måste vara en av de första 200 peers som anslöt. Felet har medelhög allvarlighetsgrad och åtgärdades i Bitcoin Core 0.21.0.
Det räckte att öppna en BIP72-betalningslänk från en illvillig källa för att krascha Bitcoin-Qt: parametern r kunde peka på en enorm fil, och appen försökte allokera minne för den medan nedladdningen tyst pågick i bakgrunden. Buggen, med medelhög allvarlighetsgrad, försvann när #17165 tog bort BIP70-stödet, vilket kom med 0.20.0.
Specialbyggda orphan-transaktioner, ogiltiga men dyra att validera, kunde sätta en nod ur spel i flera timmar, eftersom varje nyaccepterad transaktion utlöste en kvadratisk sökning i orphan-cachen. Pieter Wuilles #15644 avbryter det arbetet för att hantera nya meddelanden så fort en träff dyker upp. Fixen, för ett fel med hög allvarlighetsgrad, nådde användarna i Bitcoin Core 0.18.0.
Ett felformat GETDATA-meddelande kunde få tråden net_processing att snurra på 100 % CPU i Bitcoin Core-versioner före 0.20.0 och lägga till 1,5 MB minne per angripande peer. Andra peers fortsatte att betjänas, därav den låga allvarlighetsgraden. John Newbery hittade buggen och åtgärdade den i #18808.
Headers byggda direkt på genesisblocket, med bara svårighet 1, slank förbi checkpoint-logiken från Bitcoin Core 0.12.0 fram till 0.15.0, så en spammare kunde låta mapBlockIndex växa utan gräns och eventuellt krascha noden genom minnesbrist. Cory Fields rapporterade 2017 buggen, som har medelhög allvarlighetsgrad, och #11028 stängde den.
Ett enda INV fullpackat med 50 000 blockposter kunde få en nod att köa 50 000 getheaders-svar på ungefär 1 kB styck, och en peer som vägrade läsa dem höll den 50 MB stora sändbufferten full. John Newberys #18962, framlagd som en bandbreddsbesparing, skickade ett GETHEADERS per INV och kom med 0.20.0.
Genom att hålla inne GETDATA-svar och sedan spamma falska annonseringar för att trycka ut en transaktion ur den 50 000 poster stora kartan g_already_asked_for kunde en angripare annonsera den på nytt gång på gång och hindra offret från att begära den från någon annan. John Newbery offentliggjorde buggen, med medelhög allvarlighetsgrad; Pieter Wuilles #19988 åtgärdade den i Bitcoin Core 0.21.0.
Ett andra buffertöverflöde i miniupnpc, hittat av Wladimir J. Van Der Laan, läckte data och kunde kedjas ihop med CVE-2015-6031 till fjärrkörning av kod, vilket han visade mot Ubuntus miniupnpc 1.6-precise. Hans exploit gick inte att föra över direkt till Bitcoin Core, och version 0.12 fick fixen i februari 2016.
Bitcoin Core 27.1 består av buggfixar: avgiftshöjningen för osignerade transaktioner i GUI:t är lagad, proxyfältet för IP-adress tar inte längre emot en port och GetAddedNodeInfo() upptäcker nu addnode-peers på CJDNS (#30085). Hanteringen av TapMiniscript vid signering ändras också (#29853).
BIP324 v2-transport är påslagen som standard i Bitcoin Core 27.0, och den nya algoritmen CoinGrinder letar efter den lättaste uppsättningen inputs vid avgiftsnivåer från 30 sat/vB och uppåt. Nätverksjusterad tid lämnar konsensuskoden till förmån för systemtid, så korrekta klockor blir viktigare för nodoperatörer. libbitcoinconsensus fasas ut och ska enligt planen tas bort i v28.
Noder med Bitcoin Core 25.2 slutar behandla muterade block (#29412). Uppdateringen åtgärdar också ett segfault i getrawtransaction (#29003), en use-after-free i WalletBatch::EraseRecords (#29176) och en krasch i GUI:t när man väljer ”Mask values”.
I2P-sessioner i Bitcoin Core 26.1 använder både ECIES-X25519 och ElGamal (#29200), och noden loggar nu förloppet när mempoolen laddas. Bland fixarna finns att muterade block inte längre behandlas (#29412) och en plånbok som hoppar över BnB coin selection när SFFO är på (#28994).
Experimentell BIP324 v2-transport gör debut i Bitcoin Core 26.0, avstängd som standard och påslagen med -v2transport. RPC:n loadtxoutset laddar assumeutxo-ögonblicksbilder, vilket ger en användbar nod på några minuter medan den ursprungliga chainstaten valideras klart i bakgrunden, och submitpackage skickar råa transaktioner till mempoolen som ett paket.
Bitcoin Core 24.2 lämnar inte längre ut inaktuella avgiftsuppskattningar (#27622), och RPC-hanteringen av ogiltiga bech32-adresser är rättad (#27727). De flesta övriga ändringar rör byggsystemet och CI, bland annat en fix av Qt-paketbygget för macOS med länkaren i Xcode 15 (#28543).
Parallella nedladdningar av compact blocks kommer med Bitcoin Core 25.1 (#27626). Övriga fixar gäller en REST-krasch på /deploymentinfo (#27853), serveravstängning när en fjärrklient kopplar ner (#28551) och plånboksmigrering, som nu vägrar ogiltiga skript (#28125).
Omskanningar av descriptor-plånböcker går snabbare i Bitcoin Core 25.0 när compact block filters enligt BIP158 finns via -blockfilterindex=1, och den nya RPC:n scanblocks söker i dessa filter. Reläpolicyn accepterar nu transaktioner från 65 byte utan witness och uppåt. Med -blocksonly sjunker mempoolens maximala minne från 300 MB till 5 MB.
Tre P2P-ändringar är kärnan i Bitcoin Core 23.2: ingen mer korruption av peers.dat (#26909), ingen för tidig rensning av andra peers nedladdningsstatus (#27608) och snabbare inv-to-send-köer (#27610). Resten är bygg- och CI-arbete, till exempel kompilering av bdb med clang-16 på aarch64.