Officine Bitcoin Bitcoin-only урок Этот проект поддерживается valerio-vaccaro
🌍 Переводы
🇨🇳 中文 🇬🇧 English 🇪🇸 Español 🇵🇹 Português 🇷🇺 Русский 🇫🇷 Français 🇩🇪 Deutsch 🇮🇹 Italiano 🇭🇺 Magyar 🏳️ Milanés 🏳️ Veneto
Дескриптор Bitcoin
Введение
Дескрипторы — относительно новая концепция и пока не очень распространенная, но полезная для описания структуры кошельков Bitcoin. Дескрипторы — это строки читаемых символов (буквенно-цифровых, шестнадцатеричных и некоторых символов, таких как скобки), предназначенные для представления кошелька в понятном и стандартизированном виде, то есть набора открытых и закрытых ключей, необходимых для расчета балансов, получения и расходования Bitcoin.
Эволюция управления кошельком
Чтобы контекстуализировать дескрипторы, спикер прослеживает эволюцию кошельков:
- Ранние кошельки (до BIP-32): в первые дни, с Bitcoin Core, кошельки представляли собой файлы, содержащие случайно сгенерированные ключи. Каждый раз, когда адреса заканчивались, добавлялись новые, что делало необходимым частое резервное копирование, чтобы избежать потери средств. Эта система была неэффективной.
- BIP-32 (HD Wallet): с введением детерминированной иерархической генерации начальное число генерировало главный ключ, из которого были получены все адреса. Этого было достаточно для резервного копирования начального значения, но это еще не было полным решением.
- Мнемоника (BIP-39): впоследствии начальное значение было получено из последовательности из 12 или 24 слов (мнемоника), которую легче сохранить. Однако для восстановления кошелька также была необходима информация о путях вывода (например, Legacy, SegWit), иначе средства можно было бы не отследить.
Одной мнемоники недостаточно, особенно для сложных кошельков, таких как мультиподписи (которые требуют нескольких подписей) или кошельков с расширенными сценариями (например, временной блокировкой или условиями наследования). Некоторые кошельки пытаются найти средства всеми возможными способами, в то время как другие (например, Electrum) требуют указать тип кошелька. Кроме того, при мультиподписи необходимы открытые ключи других участников, что еще больше усложняет резервное копирование.
Что такое дескрипторы и зачем они нужны
Дескрипторы были созданы для преодоления этих ограничений, предлагая полное и гибкое описание структуры кошелька. Они не заменяют мнемотехнику, а дополняют ее, в том числе:
- Расширенные публичные ключи (xpub, ypub и т.д.).
- Маршруты отвода (например, м/44’/0’/0’ для Legacy).
- Любые скрипты или условия траты (например, мультиподпись, таймлок).
##Практические примеры
- Наследие с одной подписью: простой дескриптор может быть
pk([fingerprint/derivation]xpub...), где:
- pk указывает на открытый ключ.
- [отпечаток пальца/деривация] указывает главный ключ и путь.
- xpub генерирует адреса (например, 0/* для получения, 1/* для изменения).
- Мультиподпись: примером является
sortedmulti(2, xpub1, xpub2, xpub3), который описывает кошелек 2 из 3, ключи сортируются по согласованности.
- Сложные сценарии: с помощью таких сценариев, как p2sh (хеш сценария оплаты за свидетеля) или p2wsh (хеш сценария оплаты за свидетеля), вы можете включать расширенные условия, такие как временные блокировки или логические комбинации (и, или).
Дескрипторы и Taproot
Интересным примером является дескриптор Taproot (tr), который поддерживает два режима расходов:
- Прямая подпись с определенным ключом.
- Дерево условий (например, наследование или временная блокировка), сохраняющее сложность в блокчейне скрытой до тех пор, пока она не будет израсходована.
Преимущества дескрипторов
- Полная резервная копия: содержит всю информацию, необходимую для восстановления кошелька без попыток.
- Совместимость: идеально подходит для кошельков, предназначенных только для просмотра, где средства отслеживаются без закрытых ключей.
- Гибкость: поддержка одноподписных, многоподписных и сложных сценариев.
- Конфиденциальность: они не раскрывают секретов и ими можно делиться, как в xpub.
Ограничения и совместимость
Не все кошельки полностью поддерживают дескрипторы. Например, Bitcoin Core реализует только его подмножество и требует двух отдельных дескрипторов для адресов и изменений. Такие программы, как Sparrow или Spectre, предлагают лучшую поддержку, позволяя импортировать/экспортировать дескрипторы и просматривать их структуру.
Эксперименты можно проводить с:
- Sparrow: поддерживает дескрипторы с графическим интерфейсом для их создания или анализа.
- BDK: библиотека интерфейса командной строки для обработки сложных дескрипторов.
- Testnet/Signet: безопасная среда для тестирования без риска для реальных средств.
Ссылки
Программа
Этот урок был создан для Satoshi Spritz Connect.