Continuing my post from yesterday, where I explained how to make an air-gapped/offline wallet with the MyEtherWallet client-side interface, today we are going to see how to receive and send money (ETH, BAT or other ERC-20 tokens) to this offline wallet.
First, receiving, the easy part. For this, you just need your public address, as mentioned earlier. Then, the person that wants to send you crypto (or yourself) just needs to send to that address from their original ETH wallet -- this can be a regular wallet, or integrated in the website of an exchange, for example. If the sender is sending from an exchange like Coinbase (see figure below) the process is very simple, but if the sender is in full control of their wallet, it is important to remember 2 things: the sender wallet has to be an ETH wallet, and it must have some ETH in it to pay gas costs -- the cost to operate on the Ethereum network. We will talk more about that in the second part.
Once the transfer is executed, it might take some time to process, but you can check on the public website etherscan.io/address/XYZ -- replace XYZ by your public address (the wallet receiving the money).
Now the hardest part (it took me many attempts to get it right the first time): sending money. First, go to myetherwallet.com in the online computer, and click on "Send Offline Helper" on the bottom of the page. Then, on tab 2 "Generate Information", you paste the public address of your wallet (from which you will send money). The relevant information to keep here is the "Nonce" -- basically a number that starts from 0 and increases by 1 at every transaction you send from that address.
Now, go to the offline computer, and do the login process with your 12 words (or with other method if you prefer), as explained in the previous post. Once you access your wallet, click in "Send" > "Send Offline".
Now in the Send Offline window, you have to fill in the data of your transaction. What will happen here is that you will sign this transaction with your private key, which is possible since you are logged into your wallet. In type, you choose what you are going to send: ETH or some other ERC-20 token, such as BAT. Amount is the amount of the chosen token (not dollars!), using dot (.) to separate the decimals. Then you fill in the address where you want to send this money to. Now 2 important parts: gas limit and gas price.
This is an important point, because I've failed some attempts due to this part -- and also lost some cents. If you are sending ETH or any ERC-20 token via the Ethereum network, there will be people on the network processing this transaction for you. The computational work needed for the transaction is measured in "gas". Here is the crucial point: if you set your gas limit too low, your operation might be in the middle of processing and halt, and you will see (in your transaction in etherscan.io) an "Out of gas" error. Moreover, this gas cost will be discounted from your account, even if the operation fails. So make sure to set "gas limit" accordingly. For ETH, usually 21,000 gas is enough, and for ERC-20 tokens, such as BAT, you will need something between 50,000 to 100,000 gas. If the operation do not use all the gas you set on "gas limit", don't worry: it will be back to your account. Gas prices are paid in ETH, so that's why you must have some ETH in your account in order to make transfers (from your account -- only the sender pays). The "gas price" field is in "gwei", where 1 billion gwei = 1 ETH, or 1 gwei = 0,000000001 ETH. A low gas price will not result in "out of gas" error. Instead, it will affect how long you have to wait for your transaction to be processed. Miners will be more attracted to process transactions with higher gas prices -- because they take that profit. You can use this website to check, according to the gas limit and gas price, approximately how long you will have to wait for your transaction to be processed. You can find a more detailed explanation about gas here.
When everything is filled in, click in "Generate Transaction" and copy the code and save it in a text file, say transaction.txt. We are almost done, now you just have to copy this file via a flashdrive to your online computer, go to myetherwallet.com and click on "Send Offline Helper" again. Now you click on tab 3 "Signed Transaction" and "Upload JSON file". Choose the transaction.txt file that you copied and click on "continue". That's it! You should see on the bottom the result of the transaction and the transaction ID. You can click on it or copy it to see the result of your transaction on etherscan.io. Note that it might take some time for your transaction to succeed. That's it!