Команда разработчиков Bitcoin Core сделала подарок на 23 февраля российским биткойнерам. Впрочем, они вряд ли подозревают об этом. Несколько часов назад вышел новый большой релиз официального клиента Bitcoin Core 0.12.0. Конечно, он никоим образом не касается недавно принятого плана работ по внедрению Segregated Witness и хардфорка по размеру блока. В новый релиз вошли плановые нововведения и устранение багов. С другой стороны, его можно считать и «подчищением хвостов» перед начинающимися большими работами: первую версию клиента с функциональностью Segragated Witness команда Core обещает выдать уже в апреле, то есть у них остается на это меньше двух месяцев.
Что нового в релизе 0.12
Здесь мы коротко пройдем по основным изменениям в производительности, безопасности и интерфейсе, которые ожидают пользователей Биткоина с новой версией «полного» кошелька. Всего можно отметить шесть наиболее важных изменений.
Ограничение mempool
Так называемый «mempool» представляет собой пул неподтвержденных транзакций, которые собирает через одноранговые подключения каждый полный узел Биткоина. Эффективно его используют только майнеры, которые «упаковывают» транзакции в блоки, все остальные узлы просто их пересылают, время от времени удаляя из пула старые записи. Неограниченный mempool может просто занять всю доступную память и «подвесить» компьютер с кошельком. В Bitcoin Core 0.12 размер «пула памяти» был жестко ограничен 300 мегабайтами.
Обрезка блокчейна
Одна из самых ожидаемых функций для домашних пользователей, ограниченных в ресурсах процессора и жесткого диска. На данный момент полный блокчейн, без учета служебных файлов, занимает 55 Гб, и в течение года его размер может удвоиться, даже без увеличения размера блока. В Bitcoin Core 0.12.0 у пользователя наконец появилась возможность выбрать максимальный объем, который блокчейн будет занимать на его жестком диске. Блоки могут быть удалено после того, как клиент их проверит.
Минимально допустимый объем для хранения установлен в 2 Гб. Такой кошелек, хотя и будет номинально считаться полным узлом, уже не будет хранить весь блокчейн. Однако, для многих пользователей такой вариант станет хорошим компромиссом.
Ограничение исходящего трафика
Кроме загрузки новых блоков и транзакций, в «обязанности» каждого полного узла перед сетью входит и их одновременное распространение, которое создает значительный исходящий трафик. Это может быть неудобно для пользователей с асинхронным каналом, например спутниковым. Новая версия кошелька позволяет задать предел исходящего трафика, после превышения которого кошелек перестанет «раздавать» блоки старше недели, а также отключит все «легкие» кошельки.
Замена по комиссии
Еще одной интересной новинкой стала возможность замены транзакции на аналогичную, но с более высокой комиссией. На данный момент из-за высокой загрузки блоков, транзакции с низкой комиссией могут надолго зависать без подтверждения. Теперь пользователь может на локальном кошельке «отменить» ранее отправленную транзакцию и создать новую с тех же входов, но с более высокой комиссией. При этом, кошельки с версией 0.12 не будут воспринимать это как попытку даблспенда, а просто заменят в своих пулах транзакций старую запись на новую. Эта функция названа opt-in replace-by-fee. Правда, это делает операции с неподтвержденными транзакциями еще более рискованными. Процессорам, которые обрабатывали платежи в биткоинах без подтверждения, придется корректировать свою политику.
TOR по умолчанию
Для повышения анонимности пользователей новый кошелек будет автоматически использовать инструмент Onion Router, если он уже установлен в операционной системе. С другой стороны, сейчас TOR уже не может считаться гарантией анонимности, так как многие узлы этой сети уже известны и даже могут принадлежать спецслужбам.
Ускоренная проверка подписи
Биткоин основан на криптографии открытого ключа, где имея открытый ключ, можно удостовериться, была ли транзакция подписана соответствующим ему закрытым ключом. Однако, при использовании разных методов валидации, подписи с одним закрытым ключом могут отличаться. Поэтому, разные реализации протокола Биткоина могут по-разному распознавать правильность этих подписей.
Последняя версия кошелька Биткоина переключается с криптографической библиотеки OpenSSL на разработку Петера Вюлле Грегори Максвелла и других членов команды Bitcoin Core, под названием libsecp256k1. Эта библиотека в семь раз быстрее обрабатывает подписи, а также потребляет меньше ресурсов процессора, что позволяет клиенту быстрее проверять поступающие блоки.
В заключение
Полный список изменений в Bitcoin Core 0.12.0 можно традиционно посмотреть на Github. Скачать кошелек и прочитать инструкцию по обновлению вы можете на сайте разработчиков. Но и по наиболее важным из описанных здесь нововведений можно увидеть, что команда постепенно, хотя и не очень быстро, работает над улучшением клиента и протокола.
Последняя версия кошелька несколько снизит нагрузку на полные ноды как майнеров, так и обычных пользователей, что может затормозить падение их количества из-за того, что многие пользователи не в состоянии поддерживать полный узел на домашних компьютерах. Однако, проблема масштабирования сети и задержки платежей все еще ожидает решения.