Специально созданные нестандартные транзакции могли занимать узел Bitcoin Core на несколько секунд каждая, причём отправителя не отключали, и так атакующий мог задерживать распространение блоков. О CVE-2025-46598 низкой опасности сообщил Antoine Poinsot; в v30.0 последствия смягчены за счёт сокращения худшего времени проверки.
Блоки больше 1 ГБ могли переполнить проверку размера на 32-битных узлах Bitcoin Core и уронить их при записи на диск, но только в виде компактного блока и только у жертвы с -maxmempool выше 3 ГБ и 1 ГБ транзакций в мемпуле. CVE-2025-46597 низкой опасности нашёл Pieter Wuille; в 29.1 и 30.0 её закрыли ограничением -maxmempool на 32-битных системах.
Минимальные ставки комиссии по умолчанию снижены в Bitcoin Core 28.3: -blockmintxfee до 1 сатоши за квБ, -minrelaytxfee и -incrementalrelayfee до 100 сатоши за квБ. Ставки в кошельке не меняются, а более дешёвые транзакции могут не распространяться, пока новые значения не разойдутся по сети. Права из whitelist больше не действуют на входящие onion-соединения (#33395).
FillBlock получил в Bitcoin Core 29.2 два исправления в P2P: проверку мутации witness (#32646) и проверку пустого заголовка перед вызовом (#33296). Проверки TRUC при реорганизации больше не применяются (#33504), а getblock и getblockheader перестали возвращать target вершины цепочки (#33446).
Лимиты OP_RETURN в Bitcoin Core 30.0 фактически исчезают: -datacarriersize по умолчанию равен 100 000, а одна транзакция может содержать несколько выходов с данными; вернуть старый потолок можно через -datacarriersize=83. Ставки ретрансляции по умолчанию падают до 0,1 сатоши за вБ, устаревшие операции с подписями ограничены 2500 на стандартную транзакцию, а новая команда bitcoin служит обёрткой над существующими исполняемыми файлами.
Безусловная запись в лог на диске в Bitcoin Core 29.1 ограничена 1 МиБ в час на каждое место в коде (#32604), а стандартная транзакция может содержать не более 2500 потенциально исполняемых устаревших операций с подписями. Ставки ретрансляции по умолчанию снижены до 100 сатоши за квБ, а 32-битные сборки ограничивают -maxmempool 500 МБ и -dbcache 1 ГиБ.
Чуть больше половины изменений в Bitcoin Core 28.2 относится к сборке. Guix теперь нотаризует пакет приложения для macOS и подписывает все бинарники для macOS и Windows (#31407), а в depends исправлена компиляция libevent на NetBSD (#31500) и freetype под cmake (#32693).
Тридцать один контрибьютор Bitcoin Core подписал письмо: узлы не должны отказываться ретранслировать транзакции с устойчивым экономическим спросом, которые и так стабильно попадают в блоки, ведь пользователи и майнеры способны обойти такие фильтры. Авторы подчёркивают, что это не одобрение нефинансового использования сети, а выбор софта и политик остаётся только за пользователями.
Годы непрерывного спама сообщениями addr могли переполнить 32-битный идентификатор в менеджере адресов Bitcoin Core и обрушить узел: это остаток атаки, которую впервые ослабило ограничение частоты в v22.0. Версия 29.0 перешла на 64-битный идентификатор и закрыла CVE-2024-52919 с низкой опасностью. Нашёл уязвимость Eugene Siegel, изменение внёс Martin Zumsande.
Из Bitcoin Core 29.0 убрана поддержка UPnP, а -natpmp теперь работает на встроенной реализации PCP и NAT-PMP вместо libnatpmp. Появилась новая политика для эфемерной пыли, исправление двойного резервирования веса блока добавило -blockreservedweight, а недостающих родителей орфана узлы запрашивают у всех пиров, которые его анонсировали. Сопровождение версий 26.x и старше завершено.
При заданном -port Bitcoin Core 28.1 вычисляет порт прослушивания onion как этот порт плюс один, а не фиксирует 8334 в основной сети, и несколько локальных узлов снова могут работать рядом без конфликта при запуске. Строки HiddenServicePort, прописанные вручную в torrc, возможно, придётся поменять. Также секретные данные теперь очищаются в DecodeExtKey (#31166).
Пир, который анонсирует блок и затем молчит, мог заставить узел Bitcoin Core ждать до 10 минут, прежде чем обратиться к другим, и атакующие могли повторять этот приём. CVE-2024-52922 средней опасности обнаружил и исправил Greg Sanders: в v25.1 и v26.0 блок можно сразу запросить максимум у 3 высокоскоростных пиров с компактными блоками.
Версия 27.2 Bitcoin Core устраняет состояние гонки при обнаружении соединения с самим собой (#30394) и вызовы FillPSBT, ошибочно возвращавшие complete=true (#30357). Поток загрузки блоков и планировщик теперь завершаются в другом порядке (#30435), а код собирается с miniupnpc 2.2.8 и GCC 15.
Мутированные блоки от одного пира в Bitcoin Core до v25.0 могли стирать состояние загрузки у других пиров, анонсировавших тот же блок, и узел забывал компактный блок, который ещё собирал. Проблему заметил Suhas Daftuar, а #27608 ограничил каждого пира его собственным состоянием. Опасность CVE-2024-52921 средняя.
Узлы на Bitcoin Core до v25.0 можно было удалённо обрушить повторным сообщением blocktxn для одного блока: срабатывал assert, требующий, чтобы FillBlock вызывался только раз. Коллизия short-id не требовалась, в ту же ветку кода вели транзакции, отсутствующие в корне Меркла блока. Баг высокой опасности CVE-2024-35202 нашёл и исправил Niklas Gögge.
Всплеск сетевой активности в начале мая 2023 года, усиленный узлами-шпионами, замедлил распространение блоков и транзакций: сортировка раздутых наборов inv-to-send забирала почти всё время потока P2P. Проблему средней опасности исправил в Bitcoin Core v25.0 пул-реквест #27610: транзакции, покинувшие мемпул, убираются раньше, а чем больше набор, тем быстрее он опустошается.
Testnet4 (BIP94) появился в Bitcoin Core 28.0 вместе с ограниченной пакетной ретрансляцией для пар «один родитель, один потомок», стандартными транзакциями TRUC по BIP 431 и новым типом выхода Pay To Anchor. -mempoolfullrbf теперь по умолчанию равен 1, а libbitcoinconsensus, объявленная устаревшей в 27.0, удалена.
Цепочки заголовков с низкой сложностью могли удалённо обрушить узлы Bitcoin Core до v24.0.1, причём одну подготовленную цепочку можно было применять против любого узла сети. Исправление #25717 заставляет узел до сохранения проверять, достаточно ли работы в цепочке, и для защиты от известных атак чекпойнты больше не нужны. Опасность высокая.
Спам сообщениями addr мог обрушить узел Bitcoin Core: после 2^32 вставок в addrman переполнялся 32-битный счётчик идентификаторов и срабатывал assert. Об этом баге высокой опасности Eugene Siegel сообщил в 2021 году, а исправление от Pieter Wuille вошло в v22.0.
Притворившись устройством UPnP в локальной сети, атакующий мог слать узлу Bitcoin Core раздутые ответы M-SEARCH, пока у того не заканчивалась память. Под удар попадали только узлы, запущенные с -miniupnp: по умолчанию библиотека выключена. Баг низкой опасности исправили в v22.0.