Post
Topic
Board Bitcoin Technical Support
Re: [Bitcoin Knots] porting an old wallet and 2 laptop airgap setup
by
takuma sato
on 05/09/2025, 23:03:32 UTC
But if you use the Migrate option, doesn't it convert it to HD format? or the existing keys will still be non-HD derived so you would still need to manually import each existing public key?
Both are true.
It'll set an HD key to be used for its new active HD descriptors (for your new addresses).
And the previous loose keys are converted to single-key descriptors like: pkh(WIF) or combo(WIF).
Of course, the new HD parent descriptors can't be related to your old non-HD keys.

But basically, if I use Migrate on the 2013 wallet, then can't I just export what I need for the watch-only wallet using importdescriptors false which should output a list of all your public addresses' descriptors so you can safely copy this data into a .json file, encrypt it, put it an USB and copy it into the online laptop where you have create a fresh watch-only wallet, and then use
Quote
importdescriptors [filename.json]. Then rescan and it should be working?



If you're interested on an alternative, there's a way to skip that:
Copy an updated blockchain to the offline machine, reindex your offline Bitcoin Core, rescan for txns, then create, sign & export the transaction to the online node.

To do that, simply copy your own online Bitcoin Node's "blocks" folder (you may exclude the "index" folder inside) to an external drive and paste it to the offline machine's node's datadir.
Then start your offline Node with --reindex and it'll create its own index and chainstate directories. (this will take hours to finish, but it will not fully sync since it's offline).
With a blockchain, even offline, you can load and rescan your wallet up to the last available block and create a transaction there. (manually set the fee)
Just export it to the online machine once it's signed to be broadcasted.

After you spent the bitcoins from the old wallet, create a new wallet so that you can set-up a normal cold-storage setup or create it prior to use as the recipient.

I did consider this, since it's the only way you could be able to actually see your funds are there in your offline laptop. There is something upsetting about seeing 0.00 BTC there, even tho the private keys are there, since the watch-only wallet supposedly should be matching all of your existing private keys with the public keys watch-only descriptors there. But now with all this migrating stuff of wallets and so on, im a bit paranoid you would screw up at some point. If I could have the actual blockchain on the offline wallet, when signing the PSBT, it would be nice seeing your funds there.

Im really going to need to test with testnet coins but the thing is the wallet would be a modern version 28 wallet so I wouldn't encounter the initial migrate step. Either way I need to get comfortable with the flow of how this works when monitoring and sending transactions with the 2 laptop setup. As of right now it's not clear to me. I think I should actually keep another copy of the blockchain on the offline laptop, because I don't want to have 0.00 BTC here. But of course, this is very annoying to maintain, since you have to spend double the time validating blocks which is increasingly slower with all this spam crap on the blockchain, plus I only have additional 1TB drives which given the current size of the blockchain may not last very long.

Also you open this attack of vector of constantly sending files with your USB pendrive to keep the blocks up to date. I mean if you have linux on both machines and only use them for this task is unlikely anything on the USB leaks specially if you encrypt it but it's one of those things. Please let me know if im missing something. I have seen different step by step tutorials and each time someone mentions something different. For instance, apparently listdescriptors false will not accurately have the stuff in order and you need to edit the json file to properly import it or something.