Guide to offline wallets?

mnewxcv

[H]F Junkie
Joined
Mar 4, 2007
Messages
9,000
Is there anyone with the knowledge able to post a guide to managing crypto in offline wallets? How to get offline wallets, how to store them, how to add and remove from offline wallets, etc. Since the nicehash incident, I think this information would be valuable to a lot of users here, myself included.
 
It's quite simple. For the coin you want to have a wallet for you go to their website and download the wallet application. Once downloaded you'll need to run it and allow it to sync with the blockchain. That's going to take a while and consume 1-2 GB of drive space. Once synced you can then generate addresses for which you will receive coins. Say, for instance, you have some BTC on Coinbase or Bittrex. In the Bitcoin wallet you'll generate an address to receive those coins. On Coinbase you would go in to your Accounts and click "Send". It's going to ask for an address. Copy the address from your local wallet to the Coinbase website, plug it how much you want to send, click Continue and then Confirm. This will take some time to complete depending on how busy the transaction network is before it picks up the block your transfer is located in. Once that block is finished it'll then take a number of confirmation before the transfer is complete. Could be 20 minutes, could be 4 hours. You'll see the completed transfer in your local wallet.

To backup your wallet you'll go in to the folder it's installed in and make a copy of the "wallet.dat" file. I keep mine on an encrypted thumb drive in my safe.

You'll need a wallet application for each coin you plan to store locally. There are some multi-coin wallets, like Exodus, that can store BTC, LTC, ETH and a few other coins. If that's something that interests you. Same process as above, though, and the syncing will take considerably longer per coin.
 
Can I trust the wallet programs to always be able to connect to the block chain? Do I need to open the program or bring the wallet 'online' to receive coins?
 
The wallets do not hold coins, they hold addresses. The coins stay on the blockchain and are assigned to addresses as they're spent. You can create an address without ever having to download a wallet program or sync anything; just remember to write down the private key. Then you can send coins to it all you want and the block-chain will keep track of what you have. When you're ready to spend some, you'll need to put the private key into a wallet (either online or local) to sign the transactions. Its best at that point to sweep the remaining unspent coins to a newly generated address/private key pair.
 
Can I trust the wallet programs to always be able to connect to the block chain? Do I need to open the program or bring the wallet 'online' to receive coins?
you need to bring the wallet online and let it fully download the blockchain to know the moneys in there...
 
you need to bring the wallet online and let it fully download the blockchain to know the moneys in there...

Depends on what you mean by "know". If you mean know that you're looking at a fully validated copy of the blockchain that you're in control of, then yeah, you're technically correct. But you can put your address into any number of block explorers and see if it has the balance you expect it to and still have a pretty high confidence that it does.
 
It's quite simple. For the coin you want to have a wallet for you go to their website and download the wallet application. Once downloaded you'll need to run it and allow it to sync with the blockchain. That's going to take a while and consume 1-2 GB of drive space. Once synced you can then generate addresses for which you will receive coins. Say, for instance, you have some BTC on Coinbase or Bittrex. In the Bitcoin wallet you'll generate an address to receive those coins. On Coinbase you would go in to your Accounts and click "Send". It's going to ask for an address. Copy the address from your local wallet to the Coinbase website, plug it how much you want to send, click Continue and then Confirm. This will take some time to complete depending on how busy the transaction network is before it picks up the block your transfer is located in. Once that block is finished it'll then take a number of confirmation before the transfer is complete. Could be 20 minutes, could be 4 hours. You'll see the completed transfer in your local wallet.

To backup your wallet you'll go in to the folder it's installed in and make a copy of the "wallet.dat" file. I keep mine on an encrypted thumb drive in my safe.

You'll need a wallet application for each coin you plan to store locally. There are some multi-coin wallets, like Exodus, that can store BTC, LTC, ETH and a few other coins. If that's something that interests you. Same process as above, though, and the syncing will take considerably longer per coin.

A note on this, be sure to gracefully shut down Bitcoin Core or whatever wallet program you are using before copying the wallet.dat file to reduce the chances it gets corrupted.
 
Just for something to tinker/learn with I setup Vertcoin. I have the wallet application installed, I created a receive address, and then setup One Click Miner to do work. It seems to be receiving some coin. I can see them in the overview and the transaction tabs.

My questions:
How is it secure? My address is receiving but how is it that only I have access to that address' coin?

Most coins use a private/public key pairs. The address you give others either is or is derived from the public key, the private key is then used to sign transactions you generate. You cannot (easily) derive the private key from the public key, so unless someone hacks your system and steals it or you give it away, no one can sign transactions coming from your address.
 
For Eth, BTC and Litecoin, I just use a paper wallet.

No need to download anything except for maybe an offline wallet generator (which is a web page).
Store it in a safe place and just deposit to it. You do not need to be online or anything. Just send to your wallet address and it is yours as long as you never forget the private key.
Of course if it isn't in an exchange wallet, it is not possible to trade them. You will need to dig out your wallet key and then use a program to send your funds to that wallet.

I am not sure about other alt coins. They may have requirement for you to download wallet programs.
 
For Eth, BTC and Litecoin, I just use a paper wallet.

No need to download anything except for maybe an offline wallet generator (which is a web page).
Store it in a safe place and just deposit to it. You do not need to be online or anything. Just send to your wallet address and it is yours as long as you never forget the private key.
Of course if it isn't in an exchange wallet, it is not possible to trade them. You will need to dig out your wallet key and then use a program to send your funds to that wallet.

I am not sure about other alt coins. They may have requirement for you to download wallet programs.

I was looking into the paper wallet generator that prints a christmas card type of wallet where they recommend saving the web page and running the generator offline.... hoe does that work for a paper wallet genereated on a computer never comnected to the internet/blockchain. how does the network know that it is a valid address and your private key is for that address.. and how does it prevent collisions when generating addresses as small of a risk as that is? just curious
 
TL;DR To sum up the essay below: it's all about the math behind the address. The network never actually sees your private key and knows nothing about it except that your address is mathematically tied to it and only that private key can generate the signatures required to send coins to another address. So it doesn't matter if the addresses was generated offline or online, or by hand, as long as the address is formed properly when you're sending coins to it, and the signatures are valid when you send your coins somewhere else.


Address generation
The private is key is a random number within a certain (but still very very very large) range. To get your public key, the randomly generated private key is put through a special math process defined in one of the standards that every node of the network uses. That public key is then put through a number of well-defined steps that end with a human readable address.


Address Validity
Any address that is properly formed and has a valid checksum can be used to send coins. The network does not care about any of the other details beyond that until you try to spend those coins, and then you need a valid signature, which requires the correct private key. So you could create an address out of thin air without going through the process above and send coins to it, but you would never be able to spend them. Those coins are effectively destroyed. Everyone can see them, but no one can get to them. (There are actually times where an creating an address that destroys coins useful)


Collisions
There is nothing in place to prevent address collisions. In theory, it might be possible that two different private keys will generate the same address. In practice, the number of possible keys is so extremely enormous that the chances of anyone randomly hitting one of that collides with one that's already been chosen is effectively zero. You'd have a better chance of being struck by lightning 100 times, winning the lottery 100 times, and living to be 100 than to ever have someone collide with your address (at least with current technologies).


Security
Key generation: Because of the type of math involved, private keys cannot be derived from the public key. To get your private key with current technology, someone would have to try every possible random number to see which one matches your public key. Just for kicks I gave it a shot, and even though my CPU can run through 2.5 million keys per second it was still going to take 480,000,000,000,000,000,000,000,000,000 years just to try out half of the possible keys that would generate only part of the address I was testing against. There just isn't enough time and energy left in the known universe to do it.

Signatures: When you sign a transaction, a new random number is generated to go along with your private key in the math that's used to create the signature. This creates two unknowns (your private key and the new random number) for the rest of the world to figure out. Having two unknowns in a math equation means that ALL of the possible values for one of the unknowns will create a valid solution for the other unknown. So an attacker is back to trying every possible value to see which one generates your public key.


There are ways to guess the private key if you do not follow these two guidelines when generating them or any signatures from them.
  • Random numbers must be suitably random
  • Every signature created must use a new random number EVERY TIME.
If your computer has a weak or compromised random number generator, or you don't use a random number for every signature, then a noticeable pattern starts to show up in your signatures and someone only has to try the numbers in that pattern to see which one leads to creation of your public key. So instead of taking eons to guess your key, it only takes a few hours or days.
 
Also, the reason you can generate addresses offline is because the address is never put into the system until you deposit funds into it. When you deposit funds, the transaction is logged onto the block chain ledger and the account number now comes to life. You can then look it up on blockchain.info and see it's balance and all transactions to and from that account.
 
Back
Top