The wallet contains several addresses, like 100, with annotations that describe the transaction. As far as I know there is a system in place now (PSBT) that works to make this process of offline signing and watch only stuff faster and safer than screwing around with importing keys. But I would really need a step by step tutorial to not get anything wrong. Also the wallet was from around 0.8.0 era, however newer versions were used, around 0.15. So now it would be going from there to the latest version.
I reckon the wallet needs to be converted to a new format or something. I would first make a backup. I would really like to get the whole thing explained within the same post to not have different bits of information all over the place so I can follow it properly.
The thing is, if you haven't set an HD seed to your wallet in versions >0.13, the wallet remains non-HD even after using v0.15.
This isn't recommended to use since newer keys beyond the keypool that it will create cannot be re-created in the online machine (
vice versa) since those aren't generated from an HD seed.
Migrating it into a "
descriptor wallet" will work but there'll be hundreds of single key descriptors since those aren't linked with each other, there'll also be newly generated HD ranged descriptors of each script type for receiving and change.
Creating a watching-only wallet based from those ranged descriptors should be easy but including the single key descriptors would be troublesome (
but doable).
If you want to proceed (
you'll have to, if you want to use future Bitcoin Core versions):
The first step is to migrate it into a descriptor wallet using the command
migratewallet:
- Close Bitcoin Core and update it to the latest version, make a backup of your wallet file.
- Start Bitcoin Core and go to "Window->Console", select your wallet in console's drop-down menu if you have more than one wallet.
- Enter the command migratewallet and wait for [executing] to finish, it'll be replaced with "wallet name and backup path" once it's done.
This process will take a few minutes since there'll be hundreds of descriptors to create. - After that, the wallet is now an HD descriptor wallet and you can proceed to create the watching-only wallet in the online machine.
For the Setup of watching-only wallet and PSBT workflow, follow this guide by TracaChang:
https://bitcointalksearch.org/topic/bitcoin-core-create-a-watch-only-wallet-and-sign-transactions-offline-tutorial-5392824 (
already in step-by-step format)
Notes: Start from "
listdescriptor" step in the offline wallet since you already have a wallet, and you'd have to import all (
now) 8 parent descriptors if you want to be able to use all 4 available address types.
You should also import the single key descriptor(s) of the funded address(es) to be able to update your balance:
- If you already have a funded address list, get each address' descriptor from the offline wallet with: getaddressinfo
- The "desc:" should look like this: pkh([01234567]041dd9c5ae0921....e79ed5039c56f94a641aa9)#1111zzzz
- Import all of those to the online watching-only wallet using importdescriptors command in this format:
importdescriptors "[{\"desc\": \"descriptor_1\", \"timestamp\": \"0\"},{\"desc\": \"descriptor_2\", \"timestamp\": \"0\"},{\"desc\": \"descriptor_3\", \"timestamp\": \"0\"}]"
Each descriptor is separated by a comma.
example (importing two descriptors):
importdescriptors "[{\"desc\": \"pkh([01234567]031dd9c5ae0921....e79ed5039c56f94a641aa9)#1111zzzz\", \"timestamp\": \"0\"},{\"desc\": \"pkh([01234567]031dd9c6....6f94a642)#2222yyyy\", \"timestamp\": \"0\"}]"
Now the fun part, if you have/want to import all those 100 single address descriptors, you'll have to import them using the instructions above.
So instead of just the funded ones, get all the descriptors from the offline wallet's listdescriptors command and import them to the watching-only wallet.
The ranged descriptors still require the range, active, internal, etc. to be specified (
refer to the instructions in the link).
But honestly, it would be simpler if you just create a new air-gap setup using the instructions in the link instead and send all your bitcoins there.
Finally, some extra privacy, explain how to run it through a VPN or Tor. This should cover it all.
I'll leave this to others.