Начало весны ознаменовалось важным событием для сообщества Биткоина – 7 марта состоялся официальный релиз Bitcoin Core 0.14.0. Новая версия продукта была создана под руководством ведущего разработчика Bitcoin Core Владимира ван дер Лаана (Wladimir van der Laan) при участии более 100 специалистов, работавших над новой версией продукта в течение шести месяцев. Изначально планировалось, что этот релиз будет первым после активации SegWit, и в него будут включены исправления и улучшения после первого этапа работы сети с SegWit. Однако, проблемы с голосованием и усиливающаяся поддержка Bitcoin Unlimited заставили разработчиков изменить планы и сосредоточиться на оптимизации уже действующих функций.

Bitcoin Core 0.14.0 содержит значительный список улучшений. Однако, по сравнению с некоторыми предыдущими версиями продукта, большинство нововведений касаются «внутренних» составляющих ПО, отвечают за повышение производительности, и могут быть не очень заметны для рядовых пользователей.

Улучшена производительность IBD

Одним из главных нововведений релиза стало улучшение производительности начальной загрузки блоков (IBD). Узел, запущенный в первый раз, теперь может проверять все блоки гораздо быстрее. Подобное нововведение было необходимо из-за постоянно возрастающего размера блокчейна. Теперь пользователи могут не хранить весь блокчейн, который сейчас имеет размер более 100ГБ – достаточно иметь его урезанную версию с минимальным размером в 550МБ. В предыдущих версиях была предусмотрена обрезка блокченйа до 2 ГБ и хранением блоков примерно за две недели. Теперь даже полные узлы могут только обрабатывать блоки, но не хранить их, записывая изменение балансов адресов в таблицу UTXO (неистраченных выходов). Несмотря на некоторые уступки в плане безопасности, такой механизм значительно ускоряет работу кошелька и снижает требования к аппаратным ресурсам.

Разработчики считают, что благодаря этому обновлению, новые пользователи не будут отказываться от запуска полного узла из-за того, что синхронизация постоянно растущего блокчейна занимает слишком много времени. В версии 0.14.0 весь процесс будет занимать 6 часов и 24 минуты (при достаточной производительности "железа", в первую очередь устройств хранения), тогда как версия 0.13.2 требовала для этого 1 день 12 часов и 40 минут.

Ускоренная проверка новых блоков

Это нововведение особенно порадует майнеров. Для многоядерных процессов был обновлен кэш подписей – тест, проведенный на системе с 16 ядрами показал 40% увеличение скорости обработки нового блока. Внедрение функции BIP152 Compact Blocks позволит передавать некоторые блоки еще до того, как они были полностью подтверждены, позволяя этим блокам быстрее чем раньше распространяться по сети peer-to-peer (P2P).

Код для обмена данными в сети P2P также был реорганизован, чтобы позволить нескольким действиям выполняться одновременно, а также увеличить пропускную способность, устраняя потенциальные задержки в обработке новых блоков. Помимо этого, неподтверждённые транзакции в памяти узла (mempool) теперь могут быть сохранены и восстановлены с диска при перезапуске Bitcoin Core.

Обновленный расчет комиссий

Кошелек Bitcoin Core теперь позволяет пользователям при желании отправлять транзакции при помощи функции replace-by-fee (RBF). Это значит, что пользователь может увеличить комиссию за транзакцию даже после того, как была отправлена в сеть более ранняя версия транзакции. Данная функция не включена по умолчанию. Разработчики надеются, что это нововведение побудит майнеров к более быстрой обработке новых версий транзакций.

Помимо перечисленных основных изменений, существуют также и другие нововведения - возможность включения и выключения сетевой активности, новый эффективный метод импорта множественных ключей или адресов watch only, а также новые предупреждения и сообщения, информирующие пользователей о правильном использовании продукта. Со всеми изменениями, внесенными в Bitcoin Core 0.14.0 можно ознакомиться в официальном релизе продукта. Следующее обновление планируется выпустить не ранее, чем через полгода – как только будет окончено его тестирование (и прояснится ситуация с SegWit).