Окрім уже оприлюдненого збою, 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 і отримують виправлення бага, що міг коштувати їм доходу, якщо вони знаходили два блоки за короткий час.
Segwit стає типовим для гаманця в Bitcoin Core 0.16.0: нові адреси мають формат p2sh-segwit, якщо в -addresstype не вказано інше, а нативні адреси bc1 за BIP173 можна генерувати й оплачувати. Нові гаманці створюються лише як HD, і попередні версії їх не приймають, а екран надсилання в GUI тепер типово вмикає RBF за BIP125.
Як запобіжний захід від майбутніх розколів мережі, 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 блок вимкнено, а обробку недійсних compact block виправлено.
Найбільше байтів, за підрахунками Bitcoin Core щодо BIP141, коштує загортання segwit у P2SH: 19% зверху для P2WSH/P2SH і 11% для P2WPKH/P2SH на транзакції у 180 байтів. Перевірка потребує приблизно п’яти додаткових хешів 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, але в mainnet лишається неактивним: скористатися ним там можна буде в наступній версії, очікувано 0.13.1. Compact block relay (BIP152) згладжує сплески трафіку, а нові гаманці використовують HD-ключі BIP32, тож одна резервна копія охоплює всі майбутні приватні ключі. Збірки для Linux ARM також з’явилися серед офіційних завантажень.