I used to generate a Public/Private paper wallet by printing it from an offline HTML file. I downloaded the HTML from bitaddress.org and ran it on a computer that wasn't connected to the internet. This setup allowed me to create Public/Private Bitcoin addresses and print them out on a piece of paper that could be easily folded. The printed paper included QR codes for both the private and public keys. Super handy.
Now that Descriptor Wallets are the new standard, getting access to the Private Key isn't as straightforward. I'm looking for a new, easy way to create a paper backup for a Descriptor Wallet, ideally with a QR code like before.
When I set up a new wallet using Bitcoin Core V26, can I generate a QR code for the wallet/private key to make a solid paper backup? How do I go about making a paper wallet from a Descriptor Wallet?
Thanks!
Op let me see if I understand:
1 - Do you want to import the address/private key of a paperwallet created in bitaddress into your descriptor wallet?
2 - Or do you want to create a paperwallet by taking the address/private key created by your descriptor wallet?
You mentioned that a descriptor wallet no longer has the command to dump a private key, this leads me to believe that you used a paperwallet and to spend it you imported it into your bitcoin core with the dumprivkey... command
Well, if your case is the first option, you can follow the tips in my post here on how to import a private key into a descriptor wallet (yes, there is still a way, but the command is different), everything is chewed up, but the post was made for my native language, so you should use your browser's translator to translate the text.
Exporting the private key to a single address is one of the most differences in descriptor wallets due to BIP 32 unhardened derivation, but the best you can do is create a backup and then dump it into a JSON file. After getting the JSON file you can use JSON to compact QR code
Nothing changed in private keys. It still works and will always keep working. The main drawback is that Legacy addresses need higher transaction fees, but assuming you only use cold storage for larger amounts, the fee is small compared to the amount you store.
Bitcoin Core can't read QR-codes. I assume you use a mobile wallet for that, which is still possible with your old Bitaddress paper wallet.
Yes, it is possible.
Run listdescriptors (true) via console or bitcoin-cli
Among other stuff the output will show (the relevant descriptor with all necessary data including the fingeprint of the key source, derivation path, private key and checksum, something like following: "desc": "wpkh ([ede.../84h/0h/0h]your_private_key/1/*)#kq....."
Save all stuff that goes after desc: (without opening and closing ")
Use QR reader on cold air gapped machine to create QR code for descriptor you saved.
Please, notice that (true) is mandatory value for the listdescriptors argument as on default it is false which results in descriptor for public key rather than private one.
To make paper wallet just print resulted QR code (and descriptor on the back side), again, using airgapped machine.
Correct. Read the " Timeline for Legacy Wallet and BDB removal". Notice that Legacy Wallet means the wallet with the old key-based architecture opposite to wallet with new descriptor-based architecture.
By saying "as was previously available"?
Do you mean creating the keys somewhere else (bitaddress) and importing them to bitcoin Core when needed?
As for QR Code, Bitcoin Core doesn't have this feature to import WIF private keys even before descriptors.
If in the same way as you've mentioned, create a new privKey (from elsewhere) and create descriptors based from it.
It's as simple as this for each common addresses; pkh(WIF_PrivKey) for Legacy, wpkh(WIF_PrivKey) for SegWit, sh(wpkh(WIF_PrivKey)) for NestedSegWit.
The trick is to use the correct script type that matches the address' format.
For example:
If you're creating a paper wallet of the address 1HDzfsVrFDPSsMEm9jD5TmY6rMFsXJi2Wf,
Its descriptor should look like this: pkh(L2z9j4wf9TVkJy7XGxNAYzjBChPCXCoqYJz69Y5xQ98sJo38sA2c)If you're creating a paper wallet of the address bc1q539ttc3f9htqnvff4g0fapw80ltjkpqhxy79fd,
Its descriptor should look like this: wpkh(L2Wpw378mMCvTtzonL42QpDkxj8CHbJGD671XwDkWHc4EGmc2Y1M)
You can also include the descriptor's checksum so that it will be easier to import. Use getdescriptorinfo "descriptor" command to get its checksum:
Example: Result: "checksum": "cgd983qg",
Append to the descriptor to be written on paper: pkh(L2z9j4wf9TVkJy7XGxNAYzjBChPCXCoqYJz69Y5xQ98sJo38sA2c)#cgd983qg
Then, the harder counterpart of the previous importprivkey command, when you need to import to Bitcoin Core, use importdescriptors command:
For example:
The advantage of this over importprivkey is you can import multiple descriptors in one command.
A complement to your post, the OP can also import these three address scripts all at once with the "combo(wif_privkey)#checksum" parameter
Testing with the private key you used in your example, combo generates the same addresses in a single command, of course the checksum is not the same and before typing this command, a new checksum must be obtained:
Interestingly, the bech32 address he generated here is different from the address used in @nc50lc's example, I believe he used another private key to generate this bech32 address, as the legacy address generated by me is the same as his, a specific private key will always generate the same addresses as that specific private key.
Below we can see the legacy, p2sh-segwit and bech32 addresses generated by this private key:
When using the combo command, the user must understand that combo is used to import the 3 types of scripts from known addresses at once, while: pkh(legacy-script), wpkh(native-segwit-script), sh(wpkh(nested-segwit-script)) and tr(taproot) will make the core recreate the address only for the specified script.
That's simply because the WIF prvKey of the SegWit address in my example is actually different from the legacy's WIF prvKey.
As for using "combo" descriptor, it's a good idea if he will take note of the other two script types in the paper wallet and actually use those.
Otherwise, it'll just add extra addresses to his wallet's receiving addresses list that he wont be using.
I stopped using bitaddress.org because I read somewhere that there were some flaw in the way that the wallet are created. (It grants skilled people the ability to figure out the private key?)
The script based wallets should definately be backward compatible with the older legacy wallets.
Anyone have a new site that are similar to bitaddress.org that can generate safe Paper wallets offline?
There is this one from @coinables: https://segwitadress.org/
Generates both segwit-p2sh and bech32 addresses, it is opensource.
He has a YouTube channel, I'll leave the link if you want: https://www.youtube.com/watch?v=AqLgw4Dhybk
When typing in Google, two results appear, the second is the one that leads to a website that redirects to another website (in mine it redirected to news).
Perhaps the best alternative for those who still want to use a paperwallet is to download bitcoin core or electrum, dump the private key and print it on a blank sheet.
As a bitcoin core descriptor wallet there is no longer a way to dump a private key, other reputable third party tools (like iancoleman etc).
In bluewallet there is also an option to generate a unique private key.
you can use libzbar for read qr codes to string.Tool itself called zbarimg . and find stuff on github to generate one Do not use online stuff for this. i didn't use any so can't say but it's np to do
You should NOT trust Google to provide non-phishing sites. The one you posted is not the site in coinableS's profile.
It looks like the original abandoned. The only safe choice is not using it anymore.