Issue Details

Number
31694
Title
Inconsistent hardened derivation marker in `listdescriptors` output
Description
### Is there an existing issue for this? - [x] I have searched the existing issues ### Current behaviour If I use `importdescriptors` to import a descriptor that uses only `'` as the hardened derivation marker, the corresponding output of `listdescriptors` sometimes uses a mix of `'` and `h`. ### Expected behaviour I would expect the output for a given imported descriptor to either match my input or otherwise use only one of `'` and `h`. I would also expect the behaviour to be consistent across different descriptors. ### Steps to reproduce 1. Create wallet: ``` $ bitcoin-cli -regtest createwallet test_h_vs_apostrophe true { "name": "test_h_vs_apostrophe" } ``` 2. Import `tr` descriptor: ``` $ bitcoin-cli -regtest -rpcwallet=test_h_vs_apostrophe importdescriptors "[{\"desc\": \"tr([1dce71b2/48'/1'/0'/2']tpubDEeP3GefjqbaDTTaVAF5JkXWhoFxFDXQ9KuhVrMBViFXXNR2B3Lvme2d2AoyiKfzRFZChq2AGMNbU1qTbkBMfNv7WGVXLt2pnYXY87gXqcs/0/*,and_v(v:pk([1dce71b2/48'/1'/0'/2']tpubDEeP3GefjqbaDTTaVAF5JkXWhoFxFDXQ9KuhVrMBViFXXNR2B3Lvme2d2AoyiKfzRFZChq2AGMNbU1qTbkBMfNv7WGVXLt2pnYXY87gXqcs/2/*),older(65535)))#xhrh0cvn\", \"timestamp\": \"now\"}]" [ { "success": true, "warnings": [ "Range not given, using default keypool range" ] } ] ``` 3. Import `wsh` descriptor: ``` $ bitcoin-cli -regtest -rpcwallet=test_h_vs_apostrophe importdescriptors "[{\"desc\": \"wsh(or_d(pk([a233d117/48'/1'/0'/2']tpubDF8d1Q2U8WWfxUHMiqqrYiavBReX2r7hwD7oQsEuq1AiXj5nJcLBkoh1uTLZVx66VrbRfeHyg5bSFvRKzesa1yzYuXDvawZeRi9m97a2Qzd/0/*),and_v(v:pkh([a233d117/48'/1'/0'/2']tpubDF8d1Q2U8WWfxUHMiqqrYiavBReX2r7hwD7oQsEuq1AiXj5nJcLBkoh1uTLZVx66VrbRfeHyg5bSFvRKzesa1yzYuXDvawZeRi9m97a2Qzd/2/*),older(65535))))#segwrd5h\", \"timestamp\": \"now\"}]" [ { "success": true, "warnings": [ "Range not given, using default keypool range" ] } ] ``` When calling `listdescriptors`, the `tr` descriptor uses a mix of `h` and `'` (and checksum has changed), while `wsh` uses only `'` (and has same checksum): ``` $ bitcoin-cli -regtest -rpcwallet=test_h_vs_apostrophe listdescriptors { "wallet_name": "test_h_vs_apostrophe", "descriptors": [ { "desc": "tr([1dce71b2/48h/1h/0h/2h]tpubDEeP3GefjqbaDTTaVAF5JkXWhoFxFDXQ9KuhVrMBViFXXNR2B3Lvme2d2AoyiKfzRFZChq2AGMNbU1qTbkBMfNv7WGVXLt2pnYXY87gXqcs/0/*,and_v(v:pk([1dce71b2/48'/1'/0'/2']tpubDEeP3GefjqbaDTTaVAF5JkXWhoFxFDXQ9KuhVrMBViFXXNR2B3Lvme2d2AoyiKfzRFZChq2AGMNbU1qTbkBMfNv7WGVXLt2pnYXY87gXqcs/2/*),older(65535)))#2h7g2wme", "timestamp": 1296688602, "active": false, "range": [ 0, 999 ], "next": 0, "next_index": 0 }, { "desc": "wsh(or_d(pk([a233d117/48'/1'/0'/2']tpubDF8d1Q2U8WWfxUHMiqqrYiavBReX2r7hwD7oQsEuq1AiXj5nJcLBkoh1uTLZVx66VrbRfeHyg5bSFvRKzesa1yzYuXDvawZeRi9m97a2Qzd/0/*),and_v(v:pkh([a233d117/48'/1'/0'/2']tpubDF8d1Q2U8WWfxUHMiqqrYiavBReX2r7hwD7oQsEuq1AiXj5nJcLBkoh1uTLZVx66VrbRfeHyg5bSFvRKzesa1yzYuXDvawZeRi9m97a2Qzd/2/*),older(65535))))#segwrd5h", "timestamp": 1296688602, "active": false, "range": [ 0, 999 ], "next": 0, "next_index": 0 } ] } ``` ### Relevant log output _No response_ ### How did you obtain Bitcoin Core Pre-built binaries ### What version of Bitcoin Core are you using? v28.0.0 ### Operating system and version Ubuntu 24.04 ### Machine specifications _No response_
URL
https://github.com/bitcoin/bitcoin/issue/31694
Closed by
Back to List