deriveaddresses asks for a checksum: why Bitcoin Core won't print addresses without it
If deriveaddresses throws a checksum error, you haven't lost anything: the command simply refuses descriptors without that piece.
deriveaddresses **prints the addresses a descriptor will produce**, and **requires the checksum in the input**.
What happens when deriveaddresses rejects your descriptor
You run the command with a descriptor and Bitcoin Core returns a checksum error. That doesn't mean you entered the wrong seed or that your wallet is corrupt: deriveaddresses requires the checksum in the input. Without it, it prints nothing.
The documentation at Bitcoin Core · RPC deriveaddresses states it plainly: the command prints the addresses a descriptor will produce and requires the checksum in the input.
Why the checksum is part of the descriptor
The descriptor spells out where the keys come from and what address type gets generated. The checksum sits at the end and lets you catch a mistyped character. deriveaddresses won't compute it for you: you have to pass it already included.
If the descriptor comes from a wallet that displays it in full, use that exact text. If it lacks the checksum, the command will reject it.
What to expect when the checksum is in place
With the descriptor and its checksum, deriveaddresses returns the addresses it will produce. It doesn't move funds or change anything: it only shows the result of derivation.
That's why people often use it to verify an address before using it, without touching the wallet.
Requiring a checksum doesn't mean your descriptor is broken
This is a format requirement: deriveaddresses does not check whether the descriptor belongs to your wallet or whether the addresses hold funds. It only demands a well-formed descriptor so it can list the addresses it would generate.
Source: Bitcoin Core · RPC deriveaddresses