As of Bitcoin Core v0.19.0+ the setup can be done fully airgapped, but spending needs a USB connection and additional software such as HWI.
For compatibility with other wallet software we use the BIP84 address derivation
(m/84'/0'/{account}'/{change}/{index}) and native SegWit (bech32) addresses. It's
recommended to set addresstype=bech32
in bitcoin.conf.
First, generate a new seed phrase on the Coldcard. Then create a watch-only wallet in Bitcoin Core: File -> Create Wallet. Give it a name, and ensure "Disable Private Keys" is selected.
The public keys can exported via an SD card, or via USB.
To export via SD card:
- go to Advanced -> MicroSD card -> Bitcoin Core
- on your computer open public.txt, copy the
importmulti
command - in Bitcoin Core, go to Windows -> Console
- select Coldcard in the wallet dropdown
- paste the
importmulti
command. It should respond with a success message
To export via USB:
- install HWI and follow the instructions for Setup
- during the
getkeypool
command, the use of--wpkh
ensures compatibility with BIP84, as long as you only use bech32 (native SegWit) addresses.
If you've used this wallet before, Bitcoin Core needs to rescan the blockchain to
show your balance and earlier transactions. Use the RPC command rescanblockchain HEIGHT
where HEIGHT
is an old enough block (0 if you don't know).
The same steps as Bitcoin Core v0.19.0, except that the wallet must be created using the RPC (console window in the GUI):
createwallet Coldcard true
See HWI instructions for usage.
- generate unsigned transactions
- get that onto the Coldcard, and sign it there
- use core to broadcast the new txn for confirmation
When using the Bitcoin Core GUI (Graphical User Interface), avoid using P2SH wrapped receive addresses, as this will cause incompatibility with other wallets.