Помимо уже объявленного падения, CVE-2018-17144 позволяла майнеру в версиях с 0.15.X по 0.16.2 раздуть эмиссию биткоина, потратив один выход дважды внутри одной транзакции. Эту часть разработчики скрывали, чтобы дать системам время перейти на 0.16.3 или 0.17.0rc4. Считается, что обновлено больше половины хешрейта, попыток эксплуатации не зафиксировано, затронутых пользователей призывают обновиться.
Из-за CVE-2018-17144 Bitcoin Core с 0.14.0 по 0.16.2 падает на блоке с транзакцией, которая тратит один вход дважды; пользователям советуют немедленно обновиться до 0.16.3. Создать такой блок может только майнер, готовый отказаться минимум от 12,5 BTC допустимого дохода.
RPC verifytxoutproof в Bitcoin Core 0.16.2 больше не поддаётся дорогостоящей атаке на SPV-доказательства, раскрытой в начале июня, но настоящие SPV-клиенты остаются уязвимыми. Отдельное исправление заставляет abandontransaction отбрасывать всех потомков транзакции, а не только прямых.
Транзакции с OP_CODESEPARATOR в устаревших скриптах подписи Bitcoin Core 0.16.1 больше не ретранслирует: такая смена политики облегчит будущие исправления блоков, которые медленно проверяются. Майнеры теряют опцию -blockmaxsize в пользу -blockmaxweight и получают исправление бага, который мог стоить им дохода при нахождении двух блоков подряд.
Кошелёк в Bitcoin Core 0.16.0 по умолчанию работает с SegWit: новые адреса имеют тип p2sh-segwit, если -addresstype не задаёт другой, а нативные адреса bc1 по BIP173 можно создавать и на них можно платить. Новые кошельки создаются только как HD, и более ранние версии их не принимают, а экран отправки в GUI теперь включает BIP125 RBF по умолчанию.
На случай будущих форков сети Bitcoin Core 0.15.1 отключает при начальной синхронизации пиров, предлагающих цепочку ниже minimum-chain-work, и исходящих пиров, отдающих заведомо невалидные заголовки. Если вершина цепочки стоит 30 минут, открывается дополнительное исходящее соединение. Напрямую использовать blockmaxsize майнеры больше не могут: опция объявлена устаревшей и лишь подразумевает лимит веса.
Поводом для Bitcoin Core 0.15.0.1 стало падение GUI при запуске: у части клиентов после обновления до 0.15.0 проблему вызывала настройка своей комиссии, которой в интерфейсе больше нет. Минимальный патч #11332 обрабатывает недопустимое значение.
Оценка комиссии в Bitcoin Core 0.15.0 заглядывает на 1008 блоков вперёд вместо 25, а пользователи GUI могут поднять комиссию неподтверждённой транзакции через Replace-By-Fee. База chainstate с записями на каждый выход ускоряет первичную загрузку блоков на 30–40%. Преобразование запускается автоматически при первом старте и занимает примерно 5–30 минут.
Постоянные контрибьюторы Bitcoin Core не связаны с btc1, реализацией Segwit2x, а проект отвергает утверждения о необходимости этого обновления и называет его спорным отступлением от правил сети. SegWit, софтфорк, который активируется через считаные дни, с этим хардфорком не связан и от большинства пользователей ничего не требует. В заявлении также предупреждается: надёжной защиты от повторного воспроизведения транзакций в Segwit2x не планируется.
Всем, кто включал UPnP, рекомендуют немедленно установить Bitcoin Core 0.14.2: ошибка знаковости целого в поставляемой библиотеке miniupnpc (CVE-2017-8798) позволяет атакующему из локальной сети вызвать отказ в обслуживании или, возможно, нанести другой ущерб. UPnP по умолчанию выключен, поэтому узлы, где его никогда не включали, не затронуты.
Майнеры без SegWit смогут пользоваться getblocktemplate и после активации: Bitcoin Core 0.14.1 убирает из шаблона транзакции SegWit. Значение -dbcache по умолчанию теперь 450 МиБ, а лимит соблюдается и на пиках сброса на диск. Переименованные аргументы в createrawtransaction и disconnectnode ломают вызовы с именованными аргументами из 0.14.0.
Кошелёк нового узла смог бы отправлять и принимать платежи ещё до конца синхронизации в гибридном режиме full block SPV из дорожной карты Bitcoin Core: блоки загружаются начиная с самого старого ключа кошелька, а полная проверка продолжается в фоне. Утечки конфиденциальности из-за фильтров Блума исчезают ценой большего трафика, а для платежей стоит дожидаться 6 и более подтверждений.
Замена ECDSA подписями Шнорра ужала бы мультиподпись 50 из 50 до размера траты одним ключом и скрыла бы её условия от наблюдателей. Главным препятствием дорожная карта Bitcoin Core называет атаку отмены (cancellation), когда вредоносный подписант вычитает ключ другого пользователя. Ответ на неё — делинеаризация, но её доказательство безопасности ещё проходит рецензирование.
Кэширование подписей в Bitcoin-Qt 0.7.0, Ultraprune с LevelDB в 0.8.0 и синхронизация headers-first в Bitcoin Core 0.10 — герои первой части обзора ускорений эталонного софта. Одна только параллельная проверка скриптов дала в бенчмарках разработчиков прирост от 35% до 100%.
Новые узлы завершали первичную загрузку блоков на Bitcoin Core 0.14.0 в 5,7 раза быстрее, чем на 0.13.2: в тесте на Amazon EC2 с настройками по умолчанию 6 часов 24 минуты против 1 дня 12 часов 40 минут. Прирост дают блоки assumed valid и память, общая для мемпула и кэша UTXO. Кошельки также получили опциональное повышение комиссии, по умолчанию выключенное.
Отправка из кошелька при достижении лимита неподтверждённых цепочек больше не возвращает ошибку RPC в Bitcoin Core 0.13.2: она сообщает об успехе, а попасть в мемпул транзакция пробует снова при повторной рассылке, без перезапуска. Оценка комиссии для цели в 1 блок отключена, обработка невалидных компактных блоков исправлена.
Больше всего байтов съедает обёртка SegWit в P2SH: на транзакции в 180 байт это 19% сверху для P2WSH/P2SH и 11% для P2WPKH/P2SH, следует из подсчётов Bitcoin Core о последствиях BIP141. Проверка требует примерно пяти лишних хешей SHA256 на транзакцию. Среди рисков взвешены баги, более крупные блоки и снижение комиссий, а авторы не занимают позиции по активации.
Майнеры получают в Bitcoin Core 0.13.1 код для сигнализации о софтфорке SegWit: сигнализация открывается с 15 ноября 2016 года, с начала следующего периода пересчёта сложности. Для закрепления нужно 95% блоков за период в 2016 блоков, активация наступает ещё через период. Кошельки остаются совместимыми, так что действовать, возможно, придётся только майнерам.
Для SegWit нужны две группы: майнеры, сигнализирующие битом 1 в 95% блоков за период пересчёта сложности, и достаточное число полных узлов на Bitcoin Core 0.13.1 или совместимой реализации. Сигнализация начинается с первого пересчёта, выпадающего на 15 ноября 2016 года или позже. Отдельные инструкции есть для майнеров, операторов узлов, пользователей кошельков и разработчиков, включая тех, кто решит не обновляться.
Код SegWit вошёл в Bitcoin Core 0.13.0, но в основной сети неактивен: для использования там нужна более поздняя версия, ожидается 0.13.1. Ретрансляция компактных блоков (BIP152) сглаживает всплески трафика, а новые кошельки используют HD-ключи BIP32, так что одна резервная копия покрывает все будущие приватные ключи. В официальных загрузках появились и сборки для Linux ARM.