Крупное обновление самого популярного биткоин-клиента Bitcoin Core вышло 3 октября. Это результат анализа более семисот запросов на принятие изменений, работа команды под руководством Владимира ван дер Лаана и 135 контрибьюторов.
Cryptonomist разобрался, какие новые возможности стали доступны в Bitcoin Core
Оптимизация выбора монет
В обновленной версии клиента монеты хранятся в виде отдельных обособленных фрагментов — выходов транзакций. Каждый фрагмент соответствует полученной транзакции. В итоге все фрагменты фактически представляют различные суммы.
Если вы отправляете биткоин-платеж с кошелька, фрагменты объединяются вместе, пока не будет достигнута необходимая для проведения транзакции сумма (заданное вами значение + комиссия). Но бывает так, что точно собрать сумму из имеющихся фрагментов нельзя. В таком случае в транзакции добавляется «адрес для сдачи». Он дает возможность вернуть лишние средства на ваш кошелек.
До выхода Bitcoin Core 0.17.0 отдельные фрагменты собирались воедино, а затем рассчитывалась необходимая сумма комиссии. Но часто комиссия заставляла включать в транзакцию ещё один фрагмент.
В новой версии используется алгоритм «ветвей и границ», созданный разработчиком BitGo Марком Эрхардтом. Он обладает двумя ключевыми преимуществами:
- комиссия для каждого фрагмента рассчитывается до того, как его включат в транзакцию. За счет этого добавления новых фрагментов для покрытия комиссии не происходит;
- новый алгоритм стремится составить композицию из имеющихся фрагментов оптимальным образом, в идеале чтобы сумма получилась без сдачи. За счет этого во многих случаях необходимость в «адресе для сдачи» отпадает.
Оптимизацию выбора монет оценят, в первую очередь, владельцы крупных кошельков, к примеру, администраторы криптовалютных бирж. Они имеют дело со множеством фрагментов, поэтому выигрыш за счет отсутствия сдачи и добавления всех фрагментов сразу будет максимальным. К тому же улучшенный алгоритм выбора монет в Bitcoin Core 0.17.0 способствует повышению приватности транзакций.
Частично подписанные транзакции
Биткоин поддерживает сложные типы транзакций:
- транзакции с мультиподписью, которые проводятся с участием нескольких пользователей;
- транзакции повышенной приватности, в частности, CoinJoin с объединением транзакций от нескольких пользователей в одну.
В Bitcoin Core 0.17.0 добавлена поддержка фреймворка частично подписанных биткоин-транзакций (Partially Signed Bitcoin Transaction, PSBT) BIP 174. Его разработал Эндрю Чоу.
Фреймворк дает возможность частично подписывать транзакцию, добавляя в нее метаданные. Впоследствии этими данными может воспользоваться кто-либо другой, чтобы завершить транзакцию.
PSBT также позволяет защитить средства, заблокировав их на кошельке с мультиподписью. Чтобы разблокировать их, нужны приватный ключ от кошелька Bitcoin Core и подпись аппаратного кошелька. Пока функция частично подписанных транзакций доступна только через консоль Bitcoin Core или подключенные приложения.
Сокращение размера блокчейна
Объем блокчейна биткоина перевалил за 180 ГБ и продолжает расти естественным образом. В Bitcoin Core 0.17.0 стал доступен метод сокращения блокчейна. Он дает возможность отказаться от хранения данных обо всех транзакциях с момента появления биткоина.
Если нода использует метод сокращения блокчейна, она «забывает» о данных старых транзакций и хранит лишь тот объем информации, который нужен для безопасной работы. Ранее функция была доступна только в консоли, теперь появилась и графическом интерфейсе. Разработчики считают, что такой подход может мотивировать пользователей, желающих запустить полную ноду и тем самым повысить производительность блокчейна.
Упрощение создания новых кошельков
Версия Bitcoin Core 0.15.0 обеспечила возможность создания нескольких криптовалютных кошельков в одном клиенте. Кошельки с разными адресами можно было использовать для обмена, бизнеса, личных нужд и др. Каждый кошелек имеет собственный баланс и свой приватный ключ.
Но создавать кошельки можно было только на этапе запуска ноды, причем в ручном режиме. Графический интерфейс для этой процедуры разработчики не предусмотрели. В Bitcoin Core 0.17.0 его добавили, так что создавать новые кошельки стало проще. К тому же функция доступна и после запуска ноды.
Кроме того, в новой версии клиента появилась функция Scantxoutset. Она нужна для проверки наличия средств в новом кошельке. К примеру, если вы восстановили кошелек путем импорта приватного ключа из другого кошелька, вы можете узнать, оставались ли там биткоины. Важно, что проверка производится через анализ UTXO, а не за счет сканирования всей истории транзакций — так гораздо быстрее и безопаснее.
Хранение адресов в формате «только для просмотра»
В биткоин-кошельках хранятся приватные ключи, обеспечивающие возможность расходовать средства. Но с определенного момента Bitcoin Core стал поддерживать адреса в формате «только для просмотра». В кошельках с такими адресами приватные ключи не хранятся, однако связанные с ними монеты по-прежнему отображаются в поле баланса. Такое решение упрощает отслеживание остатка и прием платежей. А хранение приватных ключей происходит оффлайн.
В Bitcoin Core 0.17.0 еду идею развили. Теперь можно создавать особые кошельки «только для просмотра». Каждый отдельно взятый адрес в кошельках обладает аналогичным статусом. В результате упрощается мониторинг средств на аппаратных или бумажных кошельках с применением seed-фраз.
Совместимость HD- и не-HD-кошельков
HD — это иерархически детерминистические кошельки, которые используются в свежих версиях клиента. Чтобы сделать бекап такого кошелька, достаточно сохранить только seed-фразу.
Пользователи Bitcoin Core 0.13.0 и выше не могли создавать новые HD-кошельки. Версия Bitcoin Core 0.17.0 позволяет трейдерам и майнерам, обновившим версию клиента, использовать кошельки HD-формата.