Deriving entropy on ColdCard wallet with BIP85.
"One seed to rule them all, One Key to find them, One Path to bring them all, And in cryptography bind them."
This article is about BIP85, setting up a @COLDCARDwallet from scratch, & using a primary seed to derive entropy for @bluewalletio & Bitcoin Core. The cool thing about BIP85 is that it enables one to create several keys for several Bitcoin wallets from a single, primary seed. i.e., you just have 1 seed to secure and then all of your Bitcoin wallets are safe. Perfect for people who like trying several wallets, like myself. I maintain a note book with pages and pages of all the mnemonic seed words for all the wallets I have tried out. The nice thing about this method is that now the only information I need to securely backup is one master seed phrase for my ColdCard, the BIP39 passphrase, and the index numbers for each derived key. Then I can take any of the derived keys and import them to a wide range of available wallets.
@COLDCARDwallet has implemented BIP85 in their latest firmware release. Because they're awesome. And they have the coolest gear. So get one for yourself, open the tamper-evident packaging, plug it into your @usbCOLDPOWER and follow along.
Why use @usbCOLDPOWER you ask? Because computers are full of malware and viruses and shit. We're talking about bitcoin here, the best asset the world has ever seen. It's not worth the risk. Keep your private keys off-line. Get a cool case from @CryptoCloaks.
Power up your @COLDCARDwallet. Accept the terms. Confirm the bag number matches the number on the screen. Set a PIN code, they are two part PINs. CC will generate two anti-phishing words that are displayed when you login. Write all that down & secure it. Turn off/on. Confirm it works.
Make sure the firmware is up to date. Download it to a microSD card from:
Always verify the file's signature from:
Generate a primary private key by making a new wallet. @COLDCARDwallet will randomly generate 24 of 2048 predefined words. Add entropy to the 24 words by rolling dice to make it extra random. Write down the words, take the test to prove it, & never show the words to anyone.
Stamp your mnemonic seed words into a @bitcoinbackup to ensure the safety of your private key in the event of a fire or flooding. Remember, this will be the primary key that all your other Bitcoin wallet keys are derived from. Keep it safe. Keep it private.
Add a BIP39 passphrase. Or "25th word", it can be anything. It's an extra protection in case someone gains access to the @COLDCARDwallet with your PIN and/or mnemonic, they won't know your secret 25th word & won't be able to spend your bitcoin. Make note of the fingerprint!
Time to derive entropy! @COLDCARDwallet can produce several key types for various Bitcoin wallets. For WIF, BIP85 stipulates this is done by "Using 256 bits of entropy as the secret exponent to derive a private key and encode as a compressed WIF..."
Sending some BTC to the newly generated @bluewalletio.
50,000 sats for this example. After about 20 minutes it had 3 confirmations... and yes, that was at 1 satoshi/byte.
Export a new WIF privkey for the Bitcoin Core wallet, this time I used index #5000. Created a new blank wallet in Bitcoin Core then in the console ran "importprivkey "L2DiyrqQQq......"".
I copied the bc1... receiving address and moved the BTC to the newly generated Bitcoin Core wallet from the @bluewalletio.
Side note, while waiting for that transaction, if you're interested in building your own Bitcoin full node on a @Raspberry_Pi, here is how I built mine: https://www.econoalchemist.com/post/build-your-own-bitcoin-full-node-on-a-raspberrypi
Once received in the Bitcoin Core wallet, send some BTC to @COLDCARDwallet. You can export a list of receiving addresses to a .txt file & transfer via microSD to the Raspi node then copy/paste. Bech32 addresses seem to work best for PSBT, FYI. Verify address on the CC.
Check out these additional resources to learn more cool stuff about Bitcoin:
Extra credit: I tried importing a BIP32 xprv into Bitcoin Core with the "importmulti" command by combining info from the @COLDCARDwallet dump, import, & derived entropy files. But this was over my head & I couldn't quite get it. If you know how please share your thoughts.
Thanks for reading! I hope this gave you some ideas about how you could possibly use a ColdCard wallet to generate keys for your other wallets.
If you enjoyed this content, leave me a tip here: Donate.
This article is available on Twitter as a thread here.