Перейти к содержимому
buybitcoinsmart

Глоссарий / Адреса и ключи

Дескриптор вывода

Другие названия: Дескриптор, Кошелек-дескриптор.

Что такое дескриптор вывода?
Дескриптор вывода представляет собой одну строку текста, которая указывает, какой тип скрипта, какие ключи и какую ветвь производных ключей должен использовать кошелек, а в конце стоит контрольная сумма.

Определено в BIP-380.

Дескрипторы существуют потому, что расширенный ключ сам по себе неоднозначен. Один и тот же xpub может порождать адреса legacy, вложенного SegWit, нативного SegWit или Taproot, и только функция-обертка решает этот вопрос. Bitcoin Core по умолчанию создает кошельки-дескрипторы начиная с версии 23.0, выпущенной в апреле 2022 года, а резервная копия кошелька с мультиподписью без дескриптора часто не поддается восстановлению.

Как это работает

Дескриптор представляет собой функцию, примененную к выражению ключа, за которым следуют знак решетки и восемь символов контрольной суммы. Функция называет скрипт: pkh для legacy, sh(wpkh(...)) для вложенного SegWit, wpkh для нативного SegWit, tr для Taproot и wsh(sortedmulti(2,...)) для хранилища с мультиподписью 2-из-3.

Все остальное несет выражение ключа. В квадратных скобках указывается происхождение, то есть отпечаток мастер-ключа и путь, использованный для получения этого ключа, как в [1a2b3c4d/84h/0h/0h]. Далее идет расширенный ключ, затем суффикс, например /0/*, где звездочка является подстановочным знаком, обозначающим по очереди каждый индекс адреса. Дескриптор с подстановочным знаком называется диапазонным, и запрос адресов от 0 до 999 по нему представляет собой один вызов RPC, а не тысячу импортов.

Получение и сдача представляют собой два дескриптора, а не один, поэтому кошельки импортируют их парами, оканчивающимися на /0/* и /1/. BIP-389 упорядочил это с помощью многоветвевой записи, записывая пару как /<0;1>/ в одной строке.

Контрольная сумма невелика и несет важную нагрузку. BIP-380 определяет восьмисимвольный код для текста дескриптора, рассчитанный на обнаружение того типа повреждений, которые действительно случаются с длинной строкой: переставленный символ, обрезанный при вставке фрагмент, перевод строки, вставленный почтовым клиентом. Bitcoin Core отклоняет любой дескриптор, контрольная сумма которого не совпадает, а getdescriptorinfo вычислит правильную для строки, которую вы набрали сами.

Где это встречается

Дескрипторы являются форматом резервной копии для всего, что сложнее одной сид-фразы. Sparrow, Nunchuk и Specter экспортируют дескриптор для каждого создаваемого кошелька, а Coldcard записывает дескриптор на microSD при настройке мультиподписи, чтобы эту схему можно было восстановить без исходного координирующего программного обеспечения.

Именно в Bitcoin Core они стали стандартом. Версия 0.17.0, выпущенная в октябре 2018 года, представила их для сканирования и генерации адресов; importdescriptors и listdescriptors превратили их в родной язык кошелька; и кошелек-дескриптор теперь единственный тип, который создает это программное обеспечение. Восстановление кошелька Core из дескриптора вместе с повторным сканированием является поддерживаемым способом, который переживает переустановку программного обеспечения с нуля.

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

Дескриптор вывода vs расширенный ключ

Расширенный ключ является ингредиентом, а дескриптор рецептом. Xpub сообщает программному обеспечению, какие ключи существуют; дескриптор сообщает ему, что из них построить и с чего начать отсчет. Поэтому импорт xpub в два разных приложения может дать два разных списка адресов, тогда как импорт одного и того же дескриптора не может. Оба раскрывают одинаковую приватность: любой, у кого есть один из них, может перечислить вашу ветвь, поэтому дескриптор заслуживает такого же обращения, как и ключ внутри него.

Не путать с

Часто задаваемые вопросы

Нужно ли делать резервную копию дескриптора в дополнение к сид-фразе?

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

Безопасно ли делиться дескриптором?

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

Связанные термины

Еще в разделе «Адреса и ключи»

Читать эту страницу на английском