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.