mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-10 05:57:59 +01:00
746b6d8839test: Add test for createwalletdescriptor (Ava Chow)2402b63062wallet: Test upgrade of pre-taproot wallet to have tr() descriptors (Ava Chow)460ae1bf67wallet, rpc: Add createwalletdescriptor RPC (Ava Chow)8e1a475062wallet: Be able to retrieve single key from descriptors (Ava Chow)85b1fb19ddwallet: Add GetActiveHDPubKeys to retrieve xpubs from active descriptors (Ava Chow)73926f2d31wallet, descspkm: Refactor wallet descriptor generation to standalone func (Andrew Chow)54e74f46eawallet: Refactor function for single DescSPKM setup (Andrew Chow)3b09d0eb7ftests: Test for gethdkeys (Ava Chow)5febe28c9ewallet, rpc: Add gethdkeys RPC (Ava Chow)66632e5c24wallet: Add IsActiveScriptPubKeyMan (Ava Chow)fa6a259985desc spkm: Add functions to retrieve specific private keys (Ava Chow)fe67841464descriptor: Be able to get the pubkeys involved in a descriptor (Ava Chow)ef6745879dkey: Add constructor for CExtKey that takes CExtPubKey and CKey (Ava Chow) Pull request description: This PR adds a `createwalletdescriptor` RPC which allows users to add new automatically generated descriptors to their wallet, e.g. to upgrade a 0.21.x wallet to contain a taproot descriptor. This RPC takes 3 arguments: the output type to create a descriptor for, whether the descriptor will be internal or external, and the HD key to use if the user wishes to use a specific key. The HD key is an optional parameter. If it is not specified, the wallet will use the key shared by the active descriptors, if they are all single key. For most users in the expected upgrade scenario, this should be sufficient. In more advanced cases, the user must specify the HD key to use. Currently, specified HD keys must already exist in the wallet. To make it easier for the user to know, `gethdkeys` is also added to list out the HD keys in use by all of the descriptors in the wallet. This will include all HD keys, whether we have the private key, for it, which descriptors use it and their activeness, and optionally the extended private key. In this way, users with more complex wallets will be still be able to get HD keys from their wallet for use in other scenarios, and if they want to use `createwalletdescriptor`, they can easily get the keys that they can specify to it. See also https://github.com/bitcoin/bitcoin/pull/26728#issuecomment-1866961865 ACKs for top commit: Sjors: re-utACK746b6d8839furszy: ACK746b6d8ryanofsky: Code review ACK746b6d8839, and this looks ready to merge. There were various suggested changes since last review where main change seems to be switching `gethdkeys` output to use normalized descriptors (removing hardened path components). Tree-SHA512: f2849101e6fbf1f59cb031eaaaee97af5b1ae92aaab54c5716940d210f08ab4fc952df2725b636596cd5747b8f5beb1a7a533425bc10d09da02659473516fbda