В четверг, 14 января, состоялся релиз Bitcoin Core 0.21.0, крупного обновления клиента биткоина, запущенного Сатоши Накамото 12 лет назад.
Над обновлением работали более шести месяцев около сотни программистов под руководством ведущего разработчика Bitcoin Core Владимира ван дер Лаана.
Bitcoin Core 0.21.0 ― один из крупнейших релизов Bitcoin Core за последние годы, в котором представлены несколько новых функций для улучшения конфиденциальности в сети биткоина, а также сделан большой шаг в направлении обновления протокола Schnorr/Taproot.
Аарон ван Видрум в статье для Bitcoin Magazine выделил наиболее значимые изменения.
Дескрипторные кошельки
Для отправки монет на биткоин-адрес нужно выполнить условие для создания неизрасходованного вывода транзакции (UTXO). Типичным условием является включение действительной подписи, которая соответствует определенному публичному ключу. Но условия также требовать, к примеру, включения секретного кода, истечения определенного срока или предоставления нескольких подписей (мультиподписей).
До сих пор Bitcoin Core был разработан для управления UTXO в своем кошельке с использованием соответствующих закрытых ключей, хотя закрытые ключи являются лишь одним из нескольких возможных условий для траты монет. Bitcoin Core 0.21.0 вводит так называемые «дескрипторные кошельки». Дескрипторные кошельки позволяют пользователям классифицировать свои UTXO в зависимости от типов условий, необходимых для их расходования.
Дескрипторные кошельки особенно полезны для разработчиков, которые создают приложения на основе Bitcoin Core. Конкретное приложение теперь можно легко спроектировать для использования только определенного типа UTXO (например, приложение для UTXO с мультиподписями, которое будет игнорировать любые UTXO без мультиподписей).
В связи с этим наиболее заметным изменением является то, что теперь при запуске нового Bitcoin Core кошелек по умолчанию не создается. Вместо этого новый кошелек создается только тогда, когда пользователь сам решит это сделать, что позволяет ему создать только конкретный тип кошелька.
Фильтрация блоков на стороне клиента
«Легкие клиенты» ― это биткоин-кошельки, которые не загружают и не проверяют весь блокчейн биткоина. Вместо этого они загружают и проверяют только те части последних блоков и транзакций. Это не самый безопасный вариант использования биткоина, но он требует гораздо меньше ресурсов.
Для загрузки данных блокчейна часто используют так называемые фильтры Блума. Фильтры Блума ― это криптографическая схема для запроса определенных данных от относительно случайных узлов в сети. С годами стало ясно, что фильтры Блума довольно недружелюбны к конфиденциальности: они по сути раскрывают все адреса пользователя (случайному) узлу, который вполне может собирать конфиденциальную информацию о пользователях биткоина.
Новая и более конфиденциальная альтернатива фильтрам Блума получила название «компактная фильтрация блоков на стороне клиента» (Compact client-side block filtering, BIP 157/158). Фильтрация блоков на стороне клиента по сути переворачивает концепцию фильтров Блума. Вместо легких кошельков, которые создают фильтры для отправки на полные ноды, полные ноды создают фильтры для каждого блока и отправляют их легким клиентам по запросу. Затем легкие клиенты используют эти фильтры, чтобы выяснить, могли ли относящиеся к ним транзакции быть включены в блок. Затем легкий кошелек получит весь блок и выберет из него все данные транзакции.
Поддержка Tor V3
Недавнее обновление протокола Tor вводит Tor-адреса V3 (версии 3), которые длиннее адресов V2 (версия 2). Адреса V2 все еще используются, но их поддержка будет прекращена примерно через год.
Прекращение поддержки адресов V2 могло бы стать проблемой для пользователей Bitcoin Core, которые хотят использовать биткоин в сети Tor. Узлы Bitcoin Core находят пиров через распространение Tor-адреса известных нод биткоина, которые используют Tor. Bitcoin Core 0.21.0 поддерживает новый формат для обмена Tor-адресами.
Schnorr/Taproot
Schnorr/Taproot станет первым крупным обновлением протокола биткина после Segregated Witness (SegWit) в августе 2017 года. Алгоритм подписи Шнорра считается значительным улучшением по сравнению с текущим алгоритмом подписи ECDSA. В сочетании с обновлением Taproot, которое позволяет скрыть различные условия траты монет, обновление предложит большую гибкость для создания смарт-контрактов при сохранении конфиденциальности пользователей.
Код Schnorr/Taproot включен в Bitcoin Core 0.21.0. Однако Schnorr/Taproot пока не будет доступен в основной сети биткоина. Сначала необходимо активировать обновление, а это требует логики активации, которая еще не включена в Bitcoin Core. Ожидается, что логика активации будет включена в минорном релизе Bitcoin Core в течение ближайших месяцев.