В этот четверг состоялся очередной крупный релиз главного ПО биткоина, запущенного Сатоши Накамото 12 лет назад. Подготовка Bitcoin Core 0.21.0 велась на протяжении шести месяцев при участии более чем 100 разработчиков. Ниже представлен обзор улучшений и нововведений.
Дескрипторные кошельки
При отправке монет биткоина на адрес фактически осуществляется их фиксация в неизрасходованном выходе транзакции (UTXO) для последующей разблокировки в ходе дальнейших транзакций. Для этого необходимо соблюсти установленные в UTXO условия, обычно иметь подпись, которая соответствовала бы определенному публичному ключу. Тем не менее, могут быть и другие условия, работать с которыми помогают дескрипторные кошельки. С их помощью можно, например, использовать один кошелек для приема UTXO, подтверждаемых подписью, а другой – мультиподписью.
Изменение ориентировано в первую очередь на разработчиков, однако пользователи тоже заметят его. Теперь при запуске ноды Bitcoin Core кошелек не будет создаваться по умолчанию. Для этого пользователь сам будет должен осуществить соответствующую операцию, в процессе выбрав тип желаемого кошелька. Со временем все кошельки в Bitcoin Core станут дескрипторными.
Фильтрация блоков
Существуют «легковесные клиенты» биткоина, которые позволяют скачивать интересующую их часть блокчейна и таким образом существенно сокращать требования к ресурсам. Зачастую для этого используются так называемые Bloom-фильтры. Они помогают запрашивать данные у относительно случайных нод, однако при этом, как выяснилось, раскрывают все адреса пользователя этим нодам.
Во избежание подобных ситуаций в Bitcoin Core 0.21.0 было реализовано альтернативное решение под названием «компактная фильтрация блоков на стороне клиента», которое переворачивает концепцию Bloom-фильтров. Теперь не легковесные клиенты создают фильтры для отправки полным нодам, а полные ноды создают фильтры для каждого блока и отправляют их легковесным клиентам по запросу.
Еще одна угроза для приватности пользователей заключалась в настройках повторной передачи транзакций, которая осуществлялась каждые 15 минут до их включения в блок. В новом релизе попытки повторной передачи транзакций осуществляются лишь раз в 12-36 часов, что сокращает возможности для анализа их действий.
Поддержка Tor V3
В рамках недавнего обновления протокола Tor были представлены адреса версии 3 (V3), которые длиннее адресов второй версии. Адреса V2 продолжают использоваться, но от них планируют отказаться в течение года.
Это могло бы стать проблемой для пользователей биткоина, которые хотят проводить транзакции через приватную сеть. Ноды Bitcoin Core находят друг друга путем передачи Tor-адресов другим таким же нодам. В Bitcoin Core 0.21.0 была добавлена поддержка нового формата адресов, который позволит им сохранить работоспособность при подключении к приватным сетям в будущем.
Обновление Schnorr/Taproot
Обновление Schnorr/Taproot станет первым в протоколе биткоина с момента запуска Segregated Witness (SegWit) в августе 2017 года. Хотя сроки активации обновления неизвестны, в Bitcoin Core 0.21.0 уже был добавлен его код. Пока в клиентах нет активационной логики, которая необходима для запуска. Она может быть включена в один из небольших релизов Bitcoin Core в течение ближайших месяцев.
Также Bitcoin Core 0.21.0 содержит множество прочих исправлений багов, фиксов и улучшений производительности, которые не столь очевидны при простом использовании клиента. Например, произошло изменение базы данных кошельков с Berkeley DB на SQLite, которая лучше подходит для выполнения поставленных задач.