Post
Topic
Board Bitcoin Technical Support
Merits 5 from 2 users
Re: Bitcoin Core: New HD Wallets vs. Legacy
by
nc50lc
on 11/10/2023, 04:08:06 UTC
⭐ Merited by ETFbitcoin (3) ,tiffy (2)
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#features

Quote from: tiffy
When 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're 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 however 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:
Code:
"desc": "wpkh([de651e9f/84'/0'/0']xpub.....P47q7oqHx/0/*)#9vhqdhat",
Code:
"desc": "script-type([master fingerprint/purpose'/coin'/account']<--account extended public key/external/*)#checksum",
Native SegWit change addresses:
Code:
"desc": "wpkh([de651e9f/84'/0'/0']xpub.....P47q7oqHx/1/*)#5cjpszdn",
Code:
"desc": "script-type([master fingerprint/purpose'/coin'/account']<--account extended public key/internal/*)#checksum",

Quote from: tiffy
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.