Un descriptor no es una dirección, una seed ni un archivo de cartera. Una expresión como wpkh(...) fija el tipo de scriptPubKey, el origen de claves, la derivación y un rango opcional; el índice usado y la fecha inicial del escaneo se respaldan aparte.
Un Output Descriptor describe un conjunto de scriptPubKeys y los datos para derivarlos o gastarlos. wpkh(KEY) representa salidas SegWit nativas de esa clave. No es una dirección Bitcoin, una seed ni una copia completa de la cartera.
Las funciones pk(), pkh(), wpkh(), sh(), wsh(), addr() y raw() fijan el script exacto. Un anidamiento como sh(wpkh(KEY)) cambia scriptPubKey y dirección; el mismo xpub bajo otro envoltorio define otra cartera.
Una clave puede incluir el origen [fingerprint/path], seguido por un xpub y derivación adicional. Key origin ayuda al signer a elegir la ruta, pero el fingerprint no autentica una identidad ni un dispositivo; hay que verificar el export por un canal fiable.
El wildcard /* crea un ranged descriptor y exige un range al derivar. La notación multipath <0;1> puede unir ramas receive y change. El descriptor no conserva por sí solo next index, direcciones usadas, gap limit ni scan birthday.
Los ocho caracteres tras # forman el descriptor checksum de BIP 380. Detectan muchos errores de escritura y orden, pero no son firma, cifrado ni prueba de origen; tras modificar la expresión se puede calcular otro checksum válido.
Un descriptor público con xpub permite observar y derivar sin firmar. Si contiene xprv, WIF u otro material privado, puede permitir gastar y debe protegerse como una seed. getdescriptorinfo entrega forma pública canónica y hasprivatekeys.
multi(k,...) conserva el orden escrito; cambiarlo altera script y direcciones. sortedmulti(k,...) ordena las claves lexicográficamente en cada derivación. La copia debe guardar threshold, todos los cosigners, key origins y envoltorio; una seed no basta.
tr(KEY) describe el key path de Taproot y tr(KEY,TREE) añade el árbol de script path. La forma del árbol cambia Merkle root y dirección. Miniscript o multi_a expresan condiciones, pero no sustituyen el descriptor completo.
importdescriptors recibe el descriptor con checksum y metadatos timestamp, active, internal, range y next_index. timestamp controla el comienzo del escaneo; un birthday tardío oculta historial hasta un rescan correcto. No todo ese estado está en la expresión.
Antes de recibir fondos, ejecute getdescriptorinfo y revise checksum, isrange, issolvable y hasprivatekeys. Con deriveaddresses derive varias direcciones externas y change y compárelas con la cartera original o la pantalla de hardware wallet. Pruebe una restauración completa. Fuentes: 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 obtener la imagen más completa, lee esta entrada junto con Cartera, Watch-only Wallet, Multisig, PSBT, Miniscript, Bitcoin. También enlazan con esta entrada Watch-only Wallet, Extended Public Key (xpub), PSBT, Miniscript.