ENTROPÍA

Why won't my descriptor let me sign?

You expected this descriptor to spend, but your wallet says there are no private keys and won't let you move your bitcoin.

A descriptor with only public keys **cannot sign**: it lacks the private keys needed to spend.

What Bitcoin Core is telling you

When you run getdescriptorinfo on a descriptor, Bitcoin Core returns hasprivatekeys: false. That's not an error: it's the confirmation that the descriptor has no private keys.

Without private keys, the wallet cannot build the signature a transaction needs to spend bitcoin. That's why signing fails.

Why your descriptor is watch-only

A descriptor made from public keys (like xpub, ypub, or zpub) is for watching addresses and receiving, not for spending. If you imported it as a watch-only wallet, it won't sign by design.

You may have expected a full descriptor, but it only included the public part. That's enough to monitor balances, not to move funds.

How to spend from these coins

You need a descriptor that includes private keys, or a wallet that holds them (for example, the hardware wallet or software where your seed is stored).

With the public-key-only descriptor you can keep seeing the balance and receive, but to sign you have to use the wallet that has the spending keys.

Not being able to sign doesn't mean your bitcoin is gone

A descriptor without private keys cannot spend, but the bitcoin is still on the blockchain. If you have the private keys somewhere else (a seed, a hardware wallet), you can build another descriptor or use that wallet to sign.

Source: getdescriptorinfo de Bitcoin Core