Во время выступления на мероприятии Bitcoin Meetup Switzerland разработчик Bitcoin Core Джонас Шнелли (Jonas Schnelli) рассказал об изменениях, включённых в приближающийся релиз BitcoinCore 0.14. С точки зрения конечного пользователя, обновлённая версия не содержит каких-либо значительных изменений, однако добавлено достаточно много оптимизаций и настроек, нацеленных на улучшение работы ПО клиента на любом оборудовании.

Очистка кода и повышение производительности

По словам Шнелли, основная цель обновления Bitcoin Core 0.14  - оптимизация кодовой базы и повышение общей производительности. 

«Большей частью, то, что мы сделали, обычно не делается в программных проектах. Главным образом, работа заключалась в рефакторинге кода и оптимизации производительности, - говорит он, - Это была основная цель Bitcoin Core 0.14. Немного скучновато, если вы ожидали новых функций».

Программист с 20-летним стажем, Шнелли отметил, что подобные улучшения производительности не характерны для традиционных, корпоративных разработок ПО, поскольку компании не хотят тратить свои ресурсы на такую работу.

«Это важно, если вы хотите выжить в ближайшие годы, однако какие-либо новые функции, напрямую вытекающие из данных изменений, отсутствуют», - добавляет Шнелли.

Относительно технических изменений в BitcoinCore 0.14, Шнелли указал на новый кэш подписей,  рефрактор сети и другие оптимизации и очистку кода.

Усовершенствованный расчет комиссий

Поскольку блоки Биткоина в последнее время постоянно переполняются, комиссии за транзакции становятся всё более важным компонентом сети. На данный момент, помимо награды за блок, составляющей 12,5 BTC,  майнеры регулярно получают более 1 BTC в качестве комиссионных  за транзакции.

По мнению Шнелли, в отношении оценки комиссий, подход Bitcoin Core является наиболее используемым, и его модель применяют многие операторы кошельков в экосистеме Биткоина.

В BitcoinCore 0.14 появятся улучшения оценки комиссий, стандартное количество подтверждений для расчета в GUI снижено с 25 до 6 блоков. Более конкретных деталей по поводу улучшенной методологии нового алгоритма оценки BitcoinCore Шнелли не сообщил.

При желании пользователи теперь могут установить, чтобы все их транзакции отправлялись при помощи функции replace-by-fee (RBF), однако эта опция не включена по умолчанию. Добавлена также команда bumpfeeRPCcommand, но для неё необходима активация RBF.

В механизме обработки транзакций появится сохраняемый пул необработанных транзакций (мемпул), который сохраняется даже после прекращения работы узла, до следующего запуска.

Ручная обрезка блокчейна

С течением времени блокчейн Биткоина становится всё больше, следовательно увеличивается время, затрачиваемое на начальную синхронизацию. По словам Шнелли, множество старых блоков уже не нужны и их можно отсечь - то есть, хранить всю историю транзакций для большинства пользователей нет необходимости.

«Как только вы создали базу данных UTXO, представляющую собой комплект монет, которые вы не собираетесь тратить прямо сейчас, вы может избавиться от старых блоков, - объясняет Шнелли, - Они вам понадобятся только для помощи в синхронизации других узлов, которые захотят стать полными узлами сети».

Вместо того, чтобы хранить весь блокчейн, размер которого сейчас превышает 100ГБ, пользователи могут хранить его усечённую версию размером в 550МБ или больше - по своему выбору. В предыдущей версии минимальный объем хранения составлял 2 ГБ - в среднем, блоки за последние две недели.

Несмотря на то, что впервые обрезка блокчейна была представлена в BitcoinCore 0.11, в версии 0.14 имеется ручное отсечение, то есть пользователи могут вручную обрезать блокчейн на своём жёстком диске при помощи команды  RPC. Ранее для этого требовалась повторная синхронизация.

Как говорит Шнелли, узлы с урезанным блокчейном смогут выполнять все функции полного узла,  за исключением перемещения старых блоков в новые узлы, которые синхронизируют блокчейн впервые.

На самом же деле, в долгосрочной перспективе отказ от хранения истории транзакций наносит серьезный удар всей концепции децентрализации Биткоина. Если узлы Bitcoin Core, хранящие только базу непотраченных выходов (UTXO), не будут находиться в сети постоянно, то после длительного пребывания в оффлайне они будут вынуждены досинхронизироваться с действительно "полными" узлами, хранящими всю историю, но таковых будет становиться все меньше и меньше.

Это значит, что такие узлы будут пропускать многие события в сети - например, ветвления цепи вследствие хардфорков или попыток атак 51%, и это представляет собой потенциальную угрозу безопасности сети, так как количество узлов, хранящих полную историю, может в будущем сократиться в десятки раз, а это создает угрозу сосредоточения большинства этих узлов в руках одной группы, то есть централизации. И даже если сейчас эта угроза кажется довольно абстрактной, со временем она может обрести реальные воплощения.

Еще одна несущественная деталь - отказ от обязательного хранения истории транзакций повышает и их анонимность - по сути, именно это (анонимность за счет целостности) предлагали решения, подобные MimbleWimble, и нововвведения в Bitcoin Core фактически делают их ненужными.

Прочие исправления и дополнения

Помимо упомянутых усовершенствований, в  BitcoinCore 0.14 появится множество других, небольших изменений.

У пользователей появится возможность включения и выключения сетевой активности, что поможет сэкономить пропускную способность. В этом режиме узел не будет участвовать в распространении блоков. Также, добавлен более эффективный метод импорта множественных ключей или адресов watch only.

Кроме того, появились новые предупреждения и сообщения, информирующие пользователей о правильном использовании продукта.