साइनिंग के दौरान Bitcoin Core 26.2 अब यह मानकर नहीं चलता कि TapMiniscript sane है (#29853), getnetworkhashps ग़लत पैरामीटर पर एरर देता है (#28554) और setmocktime की अधिकतम सीमा लागू हो गई है (#29869)। बिल्ड miniupnpc 2.2.8 के साथ भी चलते हैं।
Bitcoin Core 0.10.1 से पहले आने वाले संदेश 32 MiB तक के हो सकते थे, इसलिए हमलावर हर कनेक्शन पर उतनी RAM आवंटित करवा सकता था और शायद नोड भी गिरा सकता था। Bitcointalk यूज़र Evil-Knievel ने इसकी रिपोर्ट की; #5843 ने सीमा 2 MiB की, जो बाद में Segwit के लिए 4 MB हुई। 2015 के लिए घोषित खुलासा टल गया और ब्योरा 2024 में सामने आया।
IPv6 की वजह से Bitcoin Core की बेहिसाब बढ़ सकने वाली बैन सूची को फुलाना सस्ता था, और हर GETADDR संदेश लौटाए जाने वाले हर पते के लिए, यानी 2500 पतों तक, उस सूची की छानबीन करवाता था। उच्च गंभीरता वाले मेमोरी क्रैश और CPU की खपत, दोनों को #19219 ने ठीक किया, जो 0.20.1 और 0.21.0 में आया।
version संदेश की हैंडलिंग में दो बग, एक signed-integer ओवरफ़्लो और abs64 की लॉजिक गड़बड़ी, हमलावर को शिकार का adjusted time इतना खिसकाने देते थे कि वह नए ब्लॉक को बहुत आगे की तारीख़ का मानकर लौटा दे। इसके लिए हमलावर का जुड़ने वाले पहले 200 पीयर में होना ज़रूरी था। मध्यम गंभीरता की यह खामी Bitcoin Core 0.21.0 में ठीक हुई।
BIP72 का दुर्भावनापूर्ण पेमेंट लिंक खोलने पर Bitcoin-Qt क्रैश हो सकता था: उसका r पैरामीटर किसी विशाल फ़ाइल की ओर इशारा कर सकता था, और बैकग्राउंड में चुपचाप डाउनलोड के साथ ऐप उसके लिए मेमोरी आवंटित करने लगता। मध्यम गंभीरता का यह बग तब ख़त्म हुआ जब #17165 ने BIP70 का समर्थन हटाया, जो 0.20.0 में आया।
गढ़े गए orphan ट्रांजैक्शन, जो अमान्य थे पर जिनकी जाँच महँगी पड़ती थी, नोड को घंटों ठप रख सकते थे, क्योंकि हर नया स्वीकृत ट्रांजैक्शन orphan कैश में क्वाड्रैटिक खोज छेड़ देता था। Pieter Wuille का #15644 मिलान मिलते ही यह काम रोककर नए संदेशों पर चला जाता है। उच्च गंभीरता का यह सुधार Bitcoin Core 0.18.0 से यूज़र तक पहुँचा।
0.20.0 से पहले के Bitcoin Core में बिगड़ा हुआ GETDATA संदेश net_processing थ्रेड को 100% CPU पर घुमाता रह सकता था, और हर हमलावर पीयर पर 1.5 MB मेमोरी बढ़ जाती थी। बाकी पीयर को सेवा मिलती रही, इसलिए गंभीरता कम आँकी गई। बग John Newbery ने खोजा और #18808 में ठीक किया।
सीधे जेनेसिस ब्लॉक पर बने हेडर, जिन्हें सिर्फ़ डिफ़िकल्टी 1 चाहिए थी, Bitcoin Core 0.12.0 से 0.15.0 तक चेकपॉइंट लॉजिक से बच निकलते थे, इसलिए स्पैमर mapBlockIndex को बेरोकटोक बढ़ाकर नोड को मेमोरी ख़त्म होने पर क्रैश करा सकता था। मध्यम गंभीरता के इस बग की रिपोर्ट Cory Fields ने 2017 में की और #11028 ने इसे बंद किया।
50,000 ब्लॉक आइटम से भरा एक INV नोड से क़रीब 1 kB वाले 50,000 getheaders जवाब क़तार में लगवा सकता था, और उन्हें पढ़ने से मना करने वाला पीयर 50 MB का सेंड बफ़र भरा रखता था। John Newbery का #18962, जिसे बैंडविड्थ बचत के तौर पर पेश किया गया था, हर INV पर एक GETHEADERS भेजता है और 0.20.0 में आया।
GETDATA का जवाब रोककर और फिर फ़र्ज़ी घोषणाओं की बौछार से ट्रांजैक्शन को 50,000 एंट्री वाले g_already_asked_for मैप से बाहर धकेलकर हमलावर उसे बार-बार दोबारा घोषित कर सकता था, और शिकार उसे किसी और से माँग ही नहीं पाता था। मध्यम गंभीरता के इस बग का खुलासा John Newbery ने किया; Pieter Wuille के #19988 ने इसे Bitcoin Core 0.21.0 में ठीक किया।
miniupnpc में दूसरा बफ़र ओवरफ़्लो, जिसे Wladimir J. Van Der Laan ने खोजा, डेटा लीक करता था और CVE-2015-6031 के साथ जुड़कर रिमोट कोड एक्ज़ीक्यूशन तक ले जा सकता था; इसका प्रदर्शन उन्होंने Ubuntu के miniupnpc 1.6-precise पर किया। उनका एक्सप्लॉइट Bitcoin Core पर सीधे नहीं चला, और सुधार फ़रवरी 2016 में वर्ज़न 0.12 के साथ आया।
Bitcoin Core 27.1 बग सुधारों से भरा है: GUI में बिना साइन वाले ट्रांजैक्शन का फ़ीस बंप ठीक हुआ, उसका प्रॉक्सी IP फ़ील्ड अब पोर्ट नहीं लेता, और GetAddedNodeInfo() addnode वाले CJDNS पीयर पहचानने लगा है (#30085)। साइनिंग के दौरान TapMiniscript की हैंडलिंग भी बदली है (#29853)।
BIP324 v2 ट्रांसपोर्ट Bitcoin Core 27.0 में डिफ़ॉल्ट रूप से चालू हो गया, और नया CoinGrinder एल्गोरिद्म 30 sat/vB और उससे ऊपर के फ़ीरेट पर सबसे हल्का इनपुट सेट ढूँढता है। कंसेंसस कोड में नेटवर्क-एडजस्टेड टाइम की जगह सिस्टम टाइम ने ली है, इसलिए ऑपरेटरों के लिए घड़ी का सही होना ज़्यादा मायने रखता है। libbitcoinconsensus डिप्रिकेट हुआ और v28 में हटाने की योजना है।
Bitcoin Core 25.2 पर चलने वाले नोड म्यूटेट किए गए ब्लॉक प्रोसेस करना बंद कर देते हैं (#29412)। अपडेट में getrawtransaction का segfault (#29003), WalletBatch::EraseRecords का use-after-free (#29176) और “Mask values” चुनने पर GUI का क्रैश भी ठीक हुआ है।
I2P सेशन Bitcoin Core 26.1 में ECIES-X25519 और ElGamal, दोनों एन्क्रिप्शन इस्तेमाल करते हैं (#29200), और मेमपूल लोड होते समय नोड अब प्रगति लॉग करता है। सुधारों में म्यूटेट किए गए ब्लॉक को प्रोसेस करने से इनकार (#29412) और SFFO चालू होने पर BnB कॉइन सिलेक्शन छोड़ देने वाला वॉलेट (#28994) शामिल हैं।
प्रायोगिक BIP324 v2 ट्रांसपोर्ट की शुरुआत Bitcoin Core 26.0 से हुई है; यह डिफ़ॉल्ट रूप से बंद है और -v2transport से चालू होता है। नया loadtxoutset RPC assumeutxo स्नैपशॉट लोड करता है, जिससे नोड मिनटों में काम लायक हो जाता है और मूल chainstate की जाँच बैकग्राउंड में पूरी होती रहती है। submitpackage कच्चे ट्रांजैक्शन को पैकेज की तरह मेमपूल में भेजता है।
पुराने पड़ चुके फ़ीस अनुमान अब Bitcoin Core 24.2 नहीं परोसता (#27622), और अमान्य bech32 पतों की RPC हैंडलिंग सुधारी गई है (#27727)। बाकी ज़्यादातर बदलाव बिल्ड सिस्टम और CI के हैं, जिनमें Xcode 15 लिंकर के साथ macOS Qt पैकेज बिल्ड का सुधार शामिल है (#28543)।
compact block के समानांतर डाउनलोड Bitcoin Core 25.1 में आ गए (#27626)। बाकी सुधारों में /deploymentinfo पर REST क्रैश (#27853), रिमोट क्लाइंट के कटने के बाद सर्वर का बंद होना (#28551) और वॉलेट माइग्रेशन शामिल हैं, जो अब अमान्य स्क्रिप्ट लेने से मना करता है (#28125)।
-blockfilterindex=1 से BIP158 compact block filter उपलब्ध होने पर Bitcoin Core 25.0 में डिस्क्रिप्टर वॉलेट का रीस्कैन तेज़ हो जाता है, और नया scanblocks RPC इन्हीं फ़िल्टर में खोज करता है। रिले नीति अब 65 नॉन-witness बाइट और उससे बड़े ट्रांजैक्शन स्वीकार करती है। -blocksonly में मेमपूल की अधिकतम मेमोरी 300MB से घटकर 5MB रह गई है।
तीन P2P बदलाव Bitcoin Core 23.2 का मुख्य हिस्सा हैं: peers.dat का करप्शन बंद (#26909), दूसरे पीयर की डाउनलोड स्थिति समय से पहले साफ़ होना बंद (#27608) और तेज़ inv-to-send क़तारें (#27610)। बाकी बिल्ड और CI का काम है, जैसे aarch64 पर clang-16 से bdb कंपाइल करना।