I noticed that if I listdescriptors true immediately after creating a brand new wallet, it would list 8 descriptors that all use the same xprv key.

However, listdescriptors false would list 8 xpub keys, and they are not all the same key. Note in the example below how public keys start with:

  • xpub6ChP1W
  • xpub6CyAaD
  • xpub6Cc74F
  • xpub6BmTmL

Why are they different?


Public (API parameter "private": false):

Key                                                        Active   Internal
pkh(    [ab7bc48f/44'/0'/0']xpub6ChP1W.../0/*)  #ma29dzhm     +         -
pkh(    [ab7bc48f/44'/0'/0']xpub6ChP1W.../1/*)  #2f0ysh8r     +         +
sh(wpkh([ab7bc48f/49'/0'/0']xpub6CyAaD.../0/*)) #zwwuauzd     +         -
sh(wpkh([ab7bc48f/49'/0'/0']xpub6CyAaD.../1/*)) #h0q29rhj     +         +
tr(     [ab7bc48f/86'/0'/0']xpub6Cc74F.../0/*)  #l6jyecux     +         -
tr(     [ab7bc48f/86'/0'/0']xpub6Cc74F.../1/*)  #wwh9ydv7     +         +
wpkh(   [ab7bc48f/84'/0'/0']xpub6BmTmL.../0/*)  #80mc28c3     +         -
wpkh(   [ab7bc48f/84'/0'/0']xpub6BmTmL.../1/*)  #km7ehjgf     +         +

Private (API parameter "private": true):

Key                                                Active   Internal
pkh(    xprv9s21Zr.../44'/0'/0'/0/*)  #5l2phqsm      +         -
pkh(    xprv9s21Zr.../44'/0'/0'/1/*)  #9t0q24qr      +         +
sh(wpkh(xprv9s21Zr.../49'/0'/0'/0/*)) #r78qs2yd      +         -
sh(wpkh(xprv9s21Zr.../49'/0'/0'/1/*)) #9a09t80e      +         +
tr(     xprv9s21Zr.../86'/0'/0'/0/*)  #02tnkr5v      +         -
tr(     xprv9s21Zr.../86'/0'/0'/1/*)  #77wjtky5      +         +
wpkh(   xprv9s21Zr.../84'/0'/0'/0/*)  #93lra6e7      +         -
wpkh(   xprv9s21Zr.../84'/0'/0'/1/*)  #596zq0fx      +         +

Backing Up Descriptors

My understanding was that having saved the xprv key only, I'd be able to fully recreate a similar wallet on a different node - because I could derive xpub from xprv. But now I got confused - how would I derive those xpubs, and why there are more than one.

1 Answer 1


Non-private descriptors are "normalized" before being listed. This process includes deriving the keys it contains to the last hardened step.

All the xpubs in your example are derived from the same master extended key, ab7bc48f, but at different paths. You'll notice these derivation paths are the same as those used in the private version of the descriptor. Except in the private descriptors there is no need to derive at the last hardened step since you have access to the master xpriv already.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.