Before the August 1st, 2017 hard fork, I moved all of my Bitcoins (BTC) to cold storage on various paper wallets, each protected by BIP0038. The fork itself was relatively uneventful, which is a testament to the technology underlying Bitcoin. The currency has survived, not because it has never yet been attacked, but rather because it is designed to survive DESPITE continuous attacks. This proved true once more after the fork.
And then the truly strange happened: everyone with Bitcoins suddenly got free money. Like, actual free money. The new alt coin BitcoinCash (BCH) emerged and has been trading with steady volume and support at about 7% of BTC’s value at the time of this writing. That is a free 7% return on your holdings.
So how do you actually get that cash? How do you access the coins on the new blockchain?
Who this tutorial is for:
- If you had Bitcoins in paper wallet cold storage prior to the fork
- If you leverage BIP0038 to encrypt your paper wallet private keys
- If you are a USA citizen
There are a thousand combinations of Bitcoin users, but I fell into the above category and had a hard time figuring out how — exactly — to actually do something with my BCH. Thanks to some Reddit users and google searches, I eventually managed and decided to make a quick how-to for anyone in a similar situation. Despite the specificity, other cold-storage forms and other countries of citizenship may find parts of this useful.
A few basics
Things get a little confusing when we start talking about forks and multiple blockchains. It is important to understand what is going on behind the scenes so you do not expose Private Keys or otherwise cause your Bitcoins to be non-secured. Let me summarize the key understanding before we go on.
Bitcoins all exist on the blockchain. There is no way to “download” your coins or to truly take them “offline,” despite terms like hardware wallet or cold storage imply. Every single coin that exists is noted in the blockchain and is owned by a particular public key. In order for a transaction to include a particular coin (e.g., to be spent), the transaction need to have the private key that corresponds to the public key on that coin in order to prove ownership. I can randomly pick a thousand coins and make a transaction sending them all to me, but the Bitcoin network will reject the transaction when I am not able to provide the proper private key needed to unlock the coins in question. Like a password, but orders of magnitude more secure, I won’t be able to get the needed private keys if I am not the true owner, barring theft or hacking or intervention from a deity.
When you talk about cold storage or hardware wallets, you are talking about keeping that unlocking private key offline so it can’t be stolen, but the coins themselves are always still in the chain and are always still publically assigned to your particular key.
When someone comes along and clones the Bitcoin network and gives it a new name (which is the essence of a fork) they will have the same record of all existing coins, and the same record of all coin assignments. This means your same private key works on the new network, just as it did on the old one.
What happened on August 1st, 2017?
A two-year disagreement between developers of Bitcoin came to a parting of ways. When differences could not be reconciled, a portion of the community decided to just go their own direction. They installed an incompatible version of the Bitcoin network code onto their mining platforms and local machines, took a copy of the existing blockchain, and carried on.
This new code was such that it rejected any blocks coming from the old network, and the old network rejected any blocks coming from the new network. As a result, the two immediately went their own way, each blockchain ignoring the other.
The result is that all coins connected to private keys you control were duplicated. One version sat on the old network, and another version sat on the new network. It also meant that spending and receiving money suddenly forked as well, because now transferring money on one chain has no effect on the other chain.
The key here is this: The same private key now unlocks two coins, but those coins are not otherwise linked or connected. Depending which network your wallet/site uses will decide which of those two coins you are handling at a given time.
How do I get BTC or USD from my cold BCH?
If you’ve followed along so far, you probably can anticipate the steps we need to take. I’ll outline them here, then go into detail:
- Sweep BTC in cold storage to a new address
- Import your Private Keys into a wallet that talks to the BCH network
- Transfer your BCH funds to ViaBTC.com
- Trade using BTC/BCC exchange
- Send the BTC funds to your normal exchange for cash out, or else back to cold storage
Nice and easy.
Step 1: Sweep
In order to access your BCH, you will need to expose the private key corresponding to the coins you wish to claim. The problem is, as noted above, this same private key will also unlock your Bitcoins on the main chain. Exposing your private key is, therefore, a significant security risk. To get around this, you should first move your existing cold Bitcoins to a brand new address with its own Private Key. This will only affect the coins on the Bitcoin network side, but it will ensure that when you expose your private key in the next step on the BCH network, there is no risk of an attacker trying to unlock corresponding BTC coins. If they do try, they will find a zero balance since that version of the coin has been moved.
I do this through blockchain.info, but any wallet software will do. In blockchain.info, go to Settings->Addresses, and under Imported Addresses, click [+] Import Address. Here you will enter the public address of you current paper wallet, the one containing coins you need to move.
Once you’ve added this “watch address,” return to the main interface and choose “SEND.” Use the drop-down next to “My Bitcoin Wallet” to select the address you just added, and in the TO field, enter the NEW paper wallet address you want to use.
This TO address should be brand new, and thus using a private key that is not associated with any of your coins on the BCH network. You will need to expose your private key now, but your risk is reduced by 15x since the coin on the BCH side is worth that much less.
Note: Blockchain.info supports BIP0038 encryption. If your paper wallet private key is encrypted, as mine are, you will be prompted for the encryption password in order to complete the sweep. This is safe to do.
Repeat this for any other paper wallets you control. At the end of this step, all of your coins will belong to NEW private keys on the main blockchain, but on the new BCH blockchain, all of the same keys we just used still control the corresponding coins there.
2. Import your private keys
Now that your Bitcoins are safe, you want to unlock your BitcoinCash still stored at those old paper wallet addresses. For this, you need a wallet software that knows how to connect to the new network. I used this: http://www.electroncash.org/
Launch the software and create a new standard wallet. Once that is setup, you will have an empty wallet that is connected to the BCH network. Now you need to import the private keys you just used on blockchain in order to access the corresponding coins on this side.
If you use BIP0038, ElectronCash does not allow you to import the encrypted private key the way blockchain.info does. An extra step is required!
2.a. Decrypt your BIP0038 Private Key
Navigate to http://bitaddress.org
Move the mouse around until the %’s reach 100%, just so the interface doesn’t screw with you. Once that is done, click on “Wallet Details” on the right.
Paste in your Private Key, and provide the passphrase. Click the Decrypt button, and let it spin, then your unencrypted Private Key will be printed down below. You can copy the WIF compressed format or the standard noncompressed format.
2.b. Sweep into ElectronCash
Once you have non-encrypted private keys, open your wallet in ElectronCash and go to Wallet->Private keys->Sweep.
Enter your non-encrypted private key in the text box (or multiple, if applicable, one per line). Do not change the “Address” field — that is your local wallet address and is a safe place to receive the contents of the old paper wallet. Complete the sweep and wait for confirmation, and now your coins are safely moved to new/distinct addresses on BOTH chains.
3. Transfer to ViaBTC
I had a lot of trouble finding an exchange for BCH that would let me do anything as a US citizen. Coinbase does not support BCH, Bitstamp does not support BCH, Kraken does not validate US citizens, BTC.COM does not validate US citizens, etc.
ViaBTC, however, does allow you to complete a simple automated ID verification. It requires your actual name and a driver’s license ID number (or passport), as well as set a few passwords (you’ll need to setup the asset password, for instance). Once that is done, you can immediately use ViaBTC as a go-between from BCH to BTC. Create the free account, complete the validation, then you want to transfer your money into the platform. I recommend doing a small amount initially and stepping through the entire process before you send large quantities of funds.
Once you have an account, go to the Asset->Deposit->BCC section. ViaBTC uses the older ticker symbol BCC to represent BitcoinCash, even though the rest of the community has moved to BCH since BCC was used for another alt coin. In any case, on this page, you will see a recipient address that you can use to transfer your BitcoinCash into the system. Copy that address.
In Electron Cash, go to the “SEND” tab. Paste the address in the “PAY TO” field, leave description blank, and then select an “AMOUNT” to send. When you are ready, hit SEND. You will need to SIGN the transaction and hit BROADCAST.
You can track the progress of the deposit using any blockchain browser for BCH. I prefer Blockdozer since it is most similar to blockchain.info. The address is this format:
It takes some time to get confirmations since the hash power on the BCH network is much lower than the main BTC network, so be patient. Wait until you get 20 confirmations since ViaBTC prevents you from withdrawing prior to that anyway (even though they let you trade earlier).
4. Trade BCH to BTC
When you have your confirmations, you can go to the Trading tab and select BCC/BTC. Select your full balance by clicking on the “Available balance: xxxx” label, and hit “Sell BCC”.
In my experience, selling was instant. If you return to the Asset tab, you should now see no BCC, but some lesser amount of BTC depending what exchange rate you received.
5. Withdraw your BTC
Now that you have BTC funds, you can withdraw them to your normal exchange, such as Coinbase, or else send them to your paper wallet. You need to configure a recipient address, which is done from the Asset->Card/Address menu.
Under “BTC Address Settings” heading add a new address:
Provide the address of your paper wallet, or else the recipient address from your exchange. Save this then return to the Asset->Withdraw->BTC tab. Here you can send the funds you traded out to the address you just added above:
And that is it! Be patient — the withdrawal will sit in the “processing” state for a short time, then go to “verified” and sit there for a while… all without broadcasting to the Bitcoin network. But within the hour, it will change to “Sent,” at which time you can track it on the normal blockchain.
And that is it! You just collected your free money.
Or, maybe you cheated yourself out of a fortune if BCH gains dominance and BTC falls by the wayside. Nobody can predict what might happen. In any case, if you decide not to sell some (or all) of your BCH, you should still sweep it to a new address, just like we did for the BTC.
If you followed steps 1 & 2 above, your BCH should be safely moved to an address in your ElectronCash software wallet, so if you take the proper backup/password precautions, that is a safe place to retain the funds. Otherwise, you can use ElectronCash to send the coins to a new paper wallet, created the same way you would for a normal Bitcoin paper wallet. The process is the same as outlined in the latter half of step 3, but replace ViaBTC’s recipient address with your own.
Hope this helped to demystify some of the confusion around BCH and BTC of late. Happy trading, fellow crypto hodl’er.