61 / 691DESC

Output Descriptor

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

Output Descriptor — машиночитаемое описание набора выходных скриптов Bitcoin и ключей, нужных для их получения. Он точно восстанавливает адресную политику, а не только отдельный ключ или адрес.

Descriptor — не адрес, не seed и не файл кошелька. Выражение wpkh(...) задаёт тип scriptPubKey, источник ключей, derivation и необязательный range; последний index и scan birthday следует сохранять отдельно.

Output Descriptor описывает набор scriptPubKey и данные для их получения или расходования. wpkh(KEY) означает нативные SegWit-выходы. Это не Bitcoin-адрес, не seed и не полная резервная копия кошелька.

pk(), pkh(), wpkh(), sh(), wsh(), addr() и raw() точно задают выходной скрипт. Вложение sh(wpkh(KEY)) меняет scriptPubKey и адрес; один xpub в другой обёртке определяет другой кошелёк.

Ключ может содержать origin [fingerprint/path], затем xpub и дальнейшую derivation. Key origin помогает signer сопоставить путь, но fingerprint не является криптографической личностью или аутентификацией устройства; проверяйте export по доверенному каналу.

Wildcard /* создаёт ranged descriptor и требует range при выводе адресов. Multipath <0;1> может объединить receive и change. Сам descriptor не хранит next index, использованные адреса, gap limit или scan birthday.

Восемь символов после # — descriptor checksum из BIP 380. Он ловит многие опечатки и перестановки, но не является подписью, шифрованием или доказательством источника; после изменения можно вычислить новый верный checksum.

Публичный descriptor с xpub позволяет наблюдать и выводить без подписи. С xprv, WIF или иным секретом он может разрешать траты, поэтому защищайте его как seed. getdescriptorinfo возвращает каноническую публичную форму и hasprivatekeys.

multi(k,...) сохраняет порядок ключей, поэтому перестановка меняет скрипт и адреса. sortedmulti(k,...) сортирует ключи лексикографически при каждой derivation. Копия должна хранить threshold, всех cosigners, key origins и обёртку; одного seed мало.

tr(KEY) описывает Taproot key path, а tr(KEY,TREE) добавляет дерево script path. Форма дерева меняет Merkle root и адрес, поэтому неупорядоченного списка скриптов недостаточно. Miniscript или multi_a выражают условия, но не заменяют полный descriptor.

importdescriptors принимает descriptor с checksum и metadata timestamp, active, internal, range и next_index. timestamp задаёт начало сканирования; поздний birthday скрывает историю до правильного rescan. Не всё состояние wallet находится в выражении.

До получения средств запустите getdescriptorinfo и проверьте checksum, isrange, issolvable и hasprivatekeys. Через deriveaddresses получите несколько внешних и change-адресов, сверив их с исходным кошельком или экраном hardware wallet. Проверьте полное восстановление. Источники: BIP 380 — Generic Output Script Descriptors; BIP 383 — multi() and sortedmulti() Descriptors; BIP 386 — tr() Output Script Descriptors; Bitcoin Core — Output Descriptors; Bitcoin Core RPC — importdescriptors.

Для полной картины прочитайте эту статью вместе с Кошелёк, Watch-only Wallet, Multisig, PSBT, Miniscript, Bitcoin. На эту статью также ссылаются Watch-only Wallet, Extended Public Key (xpub), PSBT, Miniscript.

DOC · 001BIP 380 — Generic Output Script DescriptorsСпецификация ↗DOC · 002BIP 383 — multi() and sortedmulti() DescriptorsСпецификация ↗DOC · 003BIP 386 — tr() Output Script DescriptorsСпецификация ↗DOC · 004Bitcoin Core — Output DescriptorsДокументация ↗DOC · 005Bitcoin Core RPC — importdescriptorsДокументация ↗
Проверено 1 августа 2026 годаСначала источники · Не является инвестиционной рекомендацией