Author

Topic: [SOLVED] How can one make a Paper Wallet from a Descriptor Wallet ? (Read 223 times)

legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
When typing in Google, two results appear
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.
member
Activity: 312
Merit: 30
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
hero member
Activity: 1120
Merit: 540
Press F for Leo
DO NOT TRUST THIS URL, it contains a typo and could very well be a phishing site.
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.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
There is this one from @coinables: https://segwitadress.org/
DO NOT TRUST THIS URL, it contains a typo and could very well be a phishing site.
hero member
Activity: 1120
Merit: 540
Press F for Leo
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
legendary
Activity: 3430
Merit: 1957
Leading Crypto Sports Betting & Casino Platform
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?

legendary
Activity: 2394
Merit: 5531
Self-proclaimed Genius
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.
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.
hero member
Activity: 1120
Merit: 540
Press F for Leo
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)

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:

Code:
getdescriptorinfo "combo(L2z9j4wf9TVkJy7XGxNAYzjBChPCXCoqYJz69Y5xQ98sJo38sA2c)"

#Result:

{
  "descriptor": "combo(03093a7c6942855c98c6715a3301d7efba07f407cc06bca3ec7c726a11f0440e9d)#jfkvllza",
  "checksum": "z3vl5qv9",
  "isrange": false,
  "issolvable": true,
  "hasprivatekeys": true
}

Code:
importdescriptors '[{"desc":"combo(L2z9j4wf9TVkJy7XGxNAYzjBChPCXCoqYJz69Y5xQ98sJo38sA2c)#z3vl5qv9","timestamp":"now","label":"paperwallet"}]'

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:

Code:
deriveaddresses "combo(L2z9j4wf9TVkJy7XGxNAYzjBChPCXCoqYJz69Y5xQ98sJo38sA2c)#z3vl5qv9"

#Result:

[
  "1HDzfsVrFDPSsMEm9jD5TmY6rMFsXJi2Wf",
  "bc1qk8mj2rxsdkxwl9290u0mk37rp0xnz704f6esd9",
  "366bbMythgzQyyLpvpVmLUEAtuZpig96VR"
]

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.
legendary
Activity: 2394
Merit: 5531
Self-proclaimed Genius
I used to have a Public/Private paper wallet that I was printing from an offline html.
From the site bitaddress.org I downloaded the html file and ran it on an offline computer.
-snip-
Now that the new standard became Descriptor Wallet, the Private Key functionality is no longer easely available.
Now I have to find another convenient way to keep a paper backup Descriptor Wallet, idealy with QR code, as was previously available.
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.

Quote from: FredCailloux
How can I make a paper wallet from a Descriptor Wallet ?
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:
Code:
getdesciptorinfo "pkh(L2z9j4wf9TVkJy7XGxNAYzjBChPCXCoqYJz69Y5xQ98sJo38sA2c)"
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:
Code:
importdescriptors "[{\"desc\": \"pkh(L2z9j4wf9TVkJy7XGxNAYzjBChPCXCoqYJz69Y5xQ98sJo38sA2c)#cgd983qg\",\"timestamp\": \"0\",\"label\": \"paper_wallet01\"}]"
The advantage of this over importprivkey is you can import multiple descriptors in one command.
hero member
Activity: 714
Merit: 1298
Cashback 15%

When one creates a new wallet from Bitcoin Core V26,
Is it possible to build a QR code of the actual wallet/private key/ as a solid backup paper wallet ?
How can I make a paper wallet from a Descriptor Wallet ?

Thanks

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.


Now that the new standard became Descriptor Wallet, the Private Key functionality is no longer easely available.

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.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
Now that the new standard became Descriptor Wallet, the Private Key functionality is no longer easely available.
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.

Quote
Now I have to find another convenient way to keep a paper backup Descriptor Wallet, idealy with QR code, as was previously available.
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.
sr. member
Activity: 406
Merit: 443
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
hero member
Activity: 1120
Merit: 540
Press F for Leo
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.
jr. member
Activity: 47
Merit: 18
I used to have a Public/Private paper wallet that I was printing from an offline html.
From the site bitaddress.org I downloaded the html file and ran it on an offline computer.
From that computer I was able to generate Public/Private Bitcoin addresses
and print them on a sheet of paper that could fold in a convenient size.
That printed paper showed QR code for each the private and public key.
A very convenient tool.

Now that the new standard became Descriptor Wallet, the Private Key functionality is no longer easely available.
Now I have to find another convenient way to keep a paper backup Descriptor Wallet, idealy with QR code, as was previously available.

When one creates a new wallet from Bitcoin Core V26,
Is it possible to build a QR code of the actual wallet/private key/ as a solid backup paper wallet ?
How can I make a paper wallet from a Descriptor Wallet ?

Thanks
Jump to: