I am considering holding Bitcoin for the long term. I have learned a few basics about the blockchain and BTC mechanisms, but still unable to find a complete guide on how to safely store bitcoin.

  1. How to generate a private key safely? Online tools are obviously undesirable as they might keep a back door on all keys generated. Similar reason for any library or packages even they operate offline (I cannot check if these keys generated are in fact following some predetermined sequence).

    I can use a random number generator on a offline PC. But I am not a real 'hacker' and have concerns on whether any programming language can produce truly random numbers that cannot be reproduced (or say predicted) on another PC.

    Currently, I can only think of throwing dice in my room for key generating but that cannot scale.

  2. I do not want to use any 3rd party software as wallet. Suppose I just store my private key on a piece of paper and later transfer coins into it using exchanges. Would that be a valid transaction and allows me later to spend these coins? Is there anything else I need to store together with the private key (like the hashed transaction number in transaction_input in the blockchain?) I really want to avoid 3rd party software because it might be obsolete in the future, get wiped out, and cannot be backed up on a single paper.

Any advice?

  • 3
    Does this answer your question? Long term BTC investing
    – chytrik
    Commented Mar 20, 2021 at 20:21
  • What about a hardware wallet? They're specifically designed for long term holding off the air. Some are open source as well. Commented Dec 15, 2021 at 23:02

2 Answers 2


Paper wallets used to be the safest way. But as of late there are many rumors that some of them actually do not generate random keys but can steal your coins (even when generated offline). So sites like bitcoinpaperwallet are a nono. If you want it for free, you can find many key generators on github. You'll need some programming skills to check them. And before comitting to one test that the keys are generated correctly. Even I have made one in Java at https://github.com/Johanpmeert/GeneratePrivateBitcoinKey It uses a Intel DRNG to generate 32 random bytes. Or you can bypass this by entering the random bytes yourself or by taking any picture and taking the SHA256 hash. That'll be random enough. The safest way is buying a ledger or Trezor direct from the manufacturers website.

If you have a paper wallet, that's all you need. Private and bitcoin address on the paper. No need to store anything but that. You can verify the amount on it by entering the bitcoin address on any blockchain explorer. If you have a QR code that is even easier, there's many apps that scan that and give you the balance.

  • The back door and any unchecked random generator is exactly my concern. I will try your advice, but in worst case probably buy some 20-faces dice for private key generation. Regarding cold storage, you mentioned that I only need to store the private key. From what I understand, spending the coin need to refer previous transaction (where this coin is obtained, scriptSig). Do you mean if I import my private key to any online trading platform (exchanges), they will find these relevant information for me (searching from the whole blockchain)? Thank you. Commented Mar 20, 2021 at 16:39
  • Never ever give your private key. When you generate a private key, from that you can calculate the public key and from that you calculate the bitcoin address. The last one is the one you use to put coins onto and to check the balance. The private key is only necessary when you are spending the coins. When you are spending the coins, import your private key into a wallet software like electrum. Use that to send your coins to an exchange.
    – johanpm
    Commented Mar 21, 2021 at 20:06
  • 1
    Also no need to buy 20 face dice. You can do that with normal dice. The generated bitpattern is as follows: 1 = 00, 2 = 01, 3 = 10, 4 = 11, 5 = 0, 6 = 1. Throw as many as necessary to get to 256 bits.
    – johanpm
    Commented Mar 21, 2021 at 20:08

Regarding your question about storing the private key on a piece of paper and later transferring coins to it using exchanges, yes, it is possible to do that. You can send Bitcoin to an address associated with the private key written on paper. However, always verify the address carefully to avoid any mistakes.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.