Post
Topic
Board Bitcoin Technical Support
Re: [Bitcoin Knots] porting an old wallet and 2 laptop airgap setup
by
takuma sato
on 06/09/2025, 14:32:28 UTC
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 -snip-
You probably meant: "listdescriptors false"
Yes, that's if you already know which descriptors to pick, otherwise you may miss one with associated UTXO if you wont export all since it's offline and not synced.


Yeah, I meant listdescriptors false. I don't understand what you mean to. What does it mean that I may "miss one with associated UTXO"?
And doesn't this command export all? It gives you every single public key descriptor so you can then put this into a .json file and import it into the watch only wallet. Could you see if this is correct? someone mentioned these steps to do it:



Quote

Build the online watch-only wallet

On Laptop 1 (online):

    Create a new empty wallet (GUI: “Create wallet” > disable private keys / “watch-only”).
    Import the public descriptors you exported from offline:

    GUI import (if present), or RPC importdescriptors with the JSON from your file.
    Make sure the active, internal, range (for HD paths), and timestamp fields are preserved so Knots rescans correctly.

    Let it rescan the chain (can take a while). When done, balances and UTXOs should show as watch-only.

Sanity check:

    On the offline wallet, generate a receive address and write it down.
    On the online watch-only wallet, derive/show a receive address. It should match. (Matching here proves the descriptors line up.)

PSBT flow

Create (online):

    In the online watch-only wallet, enable Coin Control. Pick the UTXOs, set outputs, and choose “Create PSBT” (GUI) or walletcreatefundedpsbt (RPC). Save the .psbt to USB.

Sign (offline):

    On the offline wallet, open/sign the PSBT (GUI: “Load PSBT” > “Sign”; RPC: walletprocesspsbt). Save the partially or fully signed PSBT back to USB.

Broadcast (online):

    On the online node, Finalize & Broadcast (GUI) or finalizepsbt then sendrawtransaction with the hex.
    Verify the txid and watch it confirm.

So what I was saying about the .json file is this:

Quote
Make sure the active, internal, range (for HD paths), and timestamp fields are preserved so Knots rescans correctly.

Quote from: takuma sato
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.
You can download an old version of Bitcoin Core (pre-descriptor), start it with datadir pointing to your preferred temporary test datadir.
Even if it's done in the same machine, that shouldn't interfere with your current setup unless you overwrite something by using the same directories.

Yeah but that means I have to redownload the blockchain and spend a ton of time again on this, on an old version which probably means even slower. And I would need a version that's older than the oldest one on that list, probably 0.8.6. And syncing the blockchain is so damn slow on my laptop, so I would need to leave my desktop syncing at night again.. what a nightmare.