Through your explanations, I think I finally understood. Thanks a lot. It was in front of my eyes all the time. My hdkeypath starts with "m/84". This means that it is an address in BIP84 format. Gosh, now I understand what those numbers in front of the paths mean. IanColeman's BIP39 tool generates all addresses, pubkeys and privkeys when I select BIP84. Great.
Is BIP84 ok? Can I use such an address normally on an online exchange like Kraken? I did nothing else. Bitcoin Core has chosen this format itself. Thus, I would hope that it is a common standard.
Actually, in the descriptor, the script type is the "
wpkh" at the start of it.
The derivation path can be other than
84' but Bitcoin uses BIP84 with it for standards.
Read this for more info about descriptors:
https://github.com/bitcoin/bitcoin/blob/master/doc/descriptors.md#featuresWhen I call "listdescriptors true" I get 8 entries, but they all have the same xprivkey. If I call "listdescriptors" I also get 8 entries, but with a total of 4 xpubkeys. IanColeman's BIP39 tool also shows me one xpubkey out of the four. In the line "Account Extended Public Key". With this xpubkey I can then make myself a watch-only wallet right?
Yes, depending on the wallet.
If it's Bitcoin Core, you just have to import those descriptors to a "
blank", "
private keys disabled", "
descriptor" wallet; with the right flags.
Namely, "
internal" to false or true depending if the descriptor is for receiving or change; and "
active" so that it'll be used when you request for new address of a specific address type.
The reason for the same xprv key is because it's your wallet's "
master private key" which is the 'm' in the derivation path which is at the upper most level of the hierarchy.
The different xpubs on the other hand, are derived down to the account level (
see its position in the descriptor) which are derived with different derivation paths as seen in your 8 descriptors.
Example descriptors:
Native SegWit receiving addresses:
"desc": "wpkh([de651e9f/84'/0'/0']xpub.....P47q7oqHx/0/*)#9vhqdhat",
"desc": "script-type([master fingerprint/purpose'/coin'/account']<--account extended public key/external/*)#checksum",
Native SegWit change addresses:
"desc": "wpkh([de651e9f/84'/0'/0']xpub.....P47q7oqHx/1/*)#5cjpszdn",
"desc": "script-type([master fingerprint/purpose'/coin'/account']<--account extended public key/internal/*)#checksum",
Can I then also create unsigned transactions with the watch-only wallet, which I then sign on my cold wallet?
In Bitcoin Core, it can be done with RPC commands.
Or in the GUI, you'll just need to activate "
Enable PSBT controls" in the wallet settings.