امضا در Bitcoin Core 26.2 دیگر TapMiniscript را سالم فرض نمیکند (#29853)، getnetworkhashps با پارامترهای نامعتبر خطا میدهد (#28554) و setmocktime سقف مشخصی دارد (#29869). بیلد با miniupnpc 2.2.8 هم کار میکند.
پیامهای دریافتی پیش از Bitcoin Core 0.10.1 میتوانستند به 32 MiB برسند و مهاجم میتوانست به ازای هر اتصال همین مقدار رم بگیرد و شاید نود را از کار بیندازد. کاربر Bitcointalk با نام Evil-Knievel آن را گزارش داد؛ #5843 سقف را به 2 MiB رساند که بعدها برای Segwit به 4 MB افزایش یافت. افشای اعلامشده برای 2015 به تعویق افتاد و جزئیات در 2024 منتشر شد.
با IPv6 باد کردن فهرست بیسقف مسدودیهای Bitcoin Core ارزان تمام میشد و هر پیام GETADDR سپس برای هر آدرس بازگشتی، تا 2500 آدرس، این فهرست را میپیمود. کرش حافظه و مصرف پردازنده، با شدت بالا، هر دو با #19219 رفع شد که در 0.20.1 و 0.21.0 عرضه شده است.
دو باگ در پردازش پیام version، سرریز عدد صحیح علامتدار و خطای منطقی abs64، به مهاجم اجازه میداد زمان تنظیمشده قربانی را آنقدر منحرف کند که بلاکهای تازه را بهدلیل تاریخ بیش از حد جلوتر رد کند. مهاجم باید جزو 200 همتای نخست متصل میبود. این نقص با شدت متوسط در Bitcoin Core 0.21.0 رفع شد.
باز کردن یک لینک پرداخت جعلی BIP72 میتوانست Bitcoin-Qt را از کار بیندازد: پارامتر r آن میتوانست به فایلی عظیم اشاره کند و برنامه در حالی که دانلود بیسروصدا در پسزمینه جریان داشت، برای آن حافظه اختصاص میداد. این باگ که شدت متوسط داشت وقتی از میان رفت که #17165 پشتیبانی از BIP70 را حذف کرد و در 0.20.0 عرضه شد.
تراکنشهای orphan دستکاریشده، نامعتبر اما پرهزینه برای اعتبارسنجی، میتوانستند نود را ساعتها قفل کنند، چون هر تراکنش تازهپذیرفتهشده جستوجوی درجه دوم در کش orphan را به راه میانداخت. #15644 از Pieter Wuille به محض یافتن تطابق این کار را قطع میکند تا به پیامهای تازه برسد. اصلاح این ضعف با شدت بالا در Bitcoin Core 0.18.0 به دست کاربران رسید.
یک پیام GETDATA ناقص میتوانست رشته net_processing را در نسخههای Bitcoin Core پیش از 0.20.0 با 100% پردازنده بچرخاند و به ازای هر همتای مهاجم 1.5 MB به حافظه بیفزاید. سرویسدهی به همتاهای دیگر ادامه داشت و به همین دلیل شدت آن کم ارزیابی شد. John Newbery باگ را یافت و در #18808 رفع کرد.
هدرهایی که مستقیم روی بلاک پیدایش ساخته میشدند و فقط سختی 1 میخواستند، از Bitcoin Core 0.12.0 تا 0.15.0 از منطق checkpoint میگذشتند؛ اسپمر میتوانست mapBlockIndex را بیسقف بزرگ کند و شاید نود را با کمبود حافظه از کار بیندازد. Cory Fields این باگ را که شدت متوسط دارد در سال 2017 گزارش داد و #11028 آن را بست.
یک INV پر از 50,000 آیتم بلاک میتوانست نود را وادار کند 50,000 پاسخ getheaders حدوداً 1 kB را صف کند و همتایی که از خواندنشان سر باز میزد، بافر ارسال 50 MB را پر نگه میداشت. #18962 از John Newbery که با عنوان صرفهجویی در پهنای باند مطرح شده بود، برای هر INV یک GETHEADERS میفرستاد و در 0.20.0 عرضه شد.
مهاجم با ندادن پاسخ GETDATA و سپس اسپم اعلانهای جعلی برای بیرون راندن تراکنش از نگاشت 50,000 عضوی g_already_asked_for، میتوانست آن را بارها دوباره اعلام کند و نگذارد قربانی تراکنش را از دیگران بخواهد. John Newbery این باگ را که شدت متوسط دارد افشا کرد و #19988 از Pieter Wuille آن را در Bitcoin Core 0.21.0 رفع کرد.
سرریز بافر دومی در miniupnpc که Wladimir J. Van Der Laan یافت، داده را نشت میداد و با زنجیره شدن به CVE-2015-6031 به اجرای کد از راه دور میرسید؛ او این را روی miniupnpc 1.6-precise اوبونتو نشان داد. اکسپلویت او مستقیماً به Bitcoin Core منتقل نمیشد و نسخه 0.12 در فوریه 2016 اصلاح را در خود داشت.
Bitcoin Core 27.1 سراسر رفع باگ است: افزایش کارمزد تراکنشهای امضانشده در GUI درست شده، فیلد IP پروکسی دیگر پورت نمیپذیرد و GetAddedNodeInfo() همتاهای CJDNS اضافهشده با addnode را تشخیص میدهد (#30085). نحوه کار با TapMiniscript هنگام امضا هم عوض شده است (#29853).
انتقال BIP324 v2 در Bitcoin Core 27.0 بهطور پیشفرض روشن میشود و الگوریتم تازه CoinGrinder در نرخ کارمزد 30 sat/vB و بالاتر سبکترین مجموعه ورودی را جستوجو میکند. کد اجماع بهجای زمان تنظیمشده با شبکه از زمان سیستم استفاده میکند، پس دقت ساعت برای گردانندگان نود اهمیت بیشتری دارد. libbitcoinconsensus منسوخ شده و حذف آن برای v28 برنامهریزی شده است.
نودهای Bitcoin Core 25.2 دیگر بلاکهای mutated را پردازش نمیکنند (#29412). segfault در getrawtransaction (#29003)، use-after-free در WalletBatch::EraseRecords (#29176) و کرش GUI هنگام انتخاب «Mask values» هم برطرف شدهاند.
جلسههای I2P در Bitcoin Core 26.1 هر دو رمزنگاری ECIES-X25519 و ElGamal را به کار میگیرند (#29200) و نود پیشرفت بارگذاری ممپول را در لاگ مینویسد. از میان اصلاحات: پردازش نکردن بلاکهای mutated (#29412) و صرفنظر کردن کیف پول از انتخاب کوین BnB وقتی SFFO روشن است (#28994).
انتقال آزمایشی BIP324 v2 با Bitcoin Core 26.0 پا به میدان گذاشت؛ بهطور پیشفرض خاموش است و با -v2transport فعال میشود. RPC تازه loadtxoutset اسنپشاتهای assumeutxo را بارگذاری میکند و نود را در چند دقیقه قابل استفاده میکند، در حالی که chainstate اصلی در پسزمینه اعتبارسنجی را تمام میکند. submitpackage هم تراکنشهای خام را بهصورت بسته به ممپول میفرستد.
برآورد کارمزد کهنه دیگر از Bitcoin Core 24.2 بیرون نمیآید (#27622) و رفتار RPC با آدرسهای نامعتبر bech32 درست شده است (#27727). بیشتر تغییرات دیگر به سیستم بیلد و CI مربوطاند، از جمله اصلاح بیلد بسته Qt برای macOS با لینکر Xcode 15 (#28543).
دانلود موازی compact block به Bitcoin Core 25.1 آمد (#27626). اصلاحات دیگر شامل کرش REST روی /deploymentinfo (#27853)، خاموش شدن سرور پس از قطع کلاینت راه دور (#28551) و مهاجرت کیف پول است که حالا اسکریپتهای نامعتبر را رد میکند (#28125).
اسکن دوباره کیف پولهای descriptor در Bitcoin Core 25.0 سریعتر میشود اگر فیلترهای compact block طبق BIP158 از راه -blockfilterindex=1 در دسترس باشند و RPC تازه scanblocks در همین فیلترها جستوجو میکند. سیاست رله حالا تراکنشهای از 65 بایت غیر witness به بالا را میپذیرد. حداکثر حافظه ممپول زیر -blocksonly از 300MB به 5MB کاهش یافته است.
Bitcoin Core 23.2 بر سه تغییر P2P استوار است: پایان خرابی peers.dat (#26909)، پاک نشدن زودهنگام وضعیت دانلود همتاهای دیگر (#27608) و صفهای سریعتر inv-to-send (#27610). بقیه کار بیلد و CI است، مانند کامپایل bdb با clang-16 روی aarch64.