61 / 691DESC

Output Descriptor

Descritor de saída

Um Output Descriptor é uma descrição legível por máquina de um conjunto de scripts de saída Bitcoin e das chaves necessárias para derivá-los. Ele restaura com precisão a política de endereços, não apenas uma chave ou endereço.

Um descriptor não é endereço, seed nem arquivo de carteira. Uma expressão como wpkh(...) define o tipo de scriptPubKey, a origem das chaves, a derivation e um range opcional; o último índice e o scan birthday devem ser guardados separadamente.

Um Output Descriptor descreve um conjunto de scriptPubKeys e os dados para derivá-los ou gastá-los. wpkh(KEY) indica saídas SegWit nativas. Não é um endereço Bitcoin, uma seed nem um backup completo da carteira.

pk(), pkh(), wpkh(), sh(), wsh(), addr() e raw() definem o script exato. Um encaixe como sh(wpkh(KEY)) altera scriptPubKey e endereço; o mesmo xpub sob outro wrapper define outra carteira.

Uma chave pode trazer a origem [fingerprint/path], seguida de xpub e derivation adicional. Key origin ajuda o signer a reconhecer o caminho, mas fingerprint não é identidade criptográfica nem autenticação do dispositivo; confirme o export por canal confiável.

O wildcard /* cria um ranged descriptor e exige range ao derivar. A notação multipath <0;1> pode combinar ramos receive e change. O descriptor sozinho não guarda next index, endereços usados, gap limit ou scan birthday.

Os oito caracteres após # são o descriptor checksum do BIP 380. Detectam muitos erros e transposições, mas não são assinatura, criptografia nem prova de origem; após uma alteração pode-se calcular outro checksum válido.

Um descriptor público com xpub permite observar e derivar sem assinar. Se contiver xprv, WIF ou outro segredo, pode permitir gastos e deve ser protegido como uma seed. getdescriptorinfo retorna a forma pública canônica e hasprivatekeys.

multi(k,...) preserva a ordem informada; reordenar muda script e endereços. sortedmulti(k,...) ordena as chaves lexicograficamente em cada derivation. O backup deve guardar threshold, todos os cosigners, key origins e wrapper; uma seed não basta.

tr(KEY) descreve o Taproot key path; tr(KEY,TREE) adiciona a árvore script path. O formato da árvore altera Merkle root e endereço, então uma lista sem ordem não basta. Miniscript ou multi_a expressam condições, mas não substituem o descriptor completo.

importdescriptors aceita o descriptor com checksum e metadata timestamp, active, internal, range e next_index. timestamp controla o início da varredura; um birthday tardio esconde histórico até o rescan correto. Nem todo esse estado está na expressão.

Antes de receber, execute getdescriptorinfo e confira checksum, isrange, issolvable e hasprivatekeys. Use deriveaddresses em vários endereços externos e change e compare com a carteira original ou tela da hardware wallet. Teste uma restauração completa. Fontes: 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.

Para ter uma visão mais completa, leia este verbete junto com Carteira, Watch-only Wallet, Multisig, PSBT, Miniscript, Bitcoin. Também há referências a este verbete em Watch-only Wallet, Extended Public Key (xpub), PSBT, Miniscript.

DOC · 001BIP 380 — Generic Output Script DescriptorsEspecificação ↗DOC · 002BIP 383 — multi() and sortedmulti() DescriptorsEspecificação ↗DOC · 003BIP 386 — tr() Output Script DescriptorsEspecificação ↗DOC · 004Bitcoin Core — Output DescriptorsDocumentação ↗DOC · 005Bitcoin Core RPC — importdescriptorsDocumentação ↗
Revisado em 1º de agosto de 2026Fontes em primeiro lugar · Não é recomendação de investimento