Last month, a friend and fellow nerd bought me a hardware wallet called a Trezor as a holiday gift. I’ve long been interested in cryptocurrencies, but it was the Trezor that finally motivated me to purchase some bitcoin. Ironically, the day I decided to buy coincided with historically high transaction fees. And the fees are still high, at least until something like the lightning network fixes the problem.
Just for the experience, I went to buy some bitcoin at a local Shell gas station. As I entered the store and headed towards the ATM, I’m sure I looked like some poor ransomware victim. The process was easy and painless: I scanned the QR code from my iOS wallet, fed the machine $40, and received a transaction confirmation code.
Later on, I checked my wallet. The transaction was taking a while to confirm, due to high volume. When it finally did, I saw my wallet balance of less than $25. I had lost nearly half of my money in transaction fees.
So I figured that ATMs were not the way to go, at least at the moment. I then bought some bitcoin on Coinbase. This was also easy. Coinbase allowed me to pay with a credit card, and I didn’t get hit with a transaction fee. But after the ATM experience, I started to wonder why Coinbase didn’t charge anything.
Eventually I realized that Coinbase functions like a bank, and the bitcoin you “own” actually are just a fragment of one of their huge institutional wallets, tracked in some database. This seemed to contradict the decentralized principle of bitcoin. I also knew that it wasn’t a good idea to leave coins on an exchange, due to the potential for hacks, or just shady business practices.
So I decided to send the bitcoin to my Trezor. I entered my Trezor’s receive address into Coinbase, and was quoted a $35 transaction fee. If I remember correctly, this was to transfer around $50 worth of bitcoin.
I needed a way around these fees. After a lot of research and some experimentation, I eventually found a few tricks to move bitcoin cheaply.
Moving bitcoin off Coinbase
If you try to move bitcoin off Coinbase to an external address, you’ll likely get hit with a big fee like I did. One way around this is to open a GDAX account. GDAX is owned by Coinbase, so you should be able to sign in with your same credentials. Once logged in, there is an option to make a deposit from your Coinbase account. Go ahead and deposit. Once the bitcoin is in your account, you can then make a withdrawal to an external address. Both deposits and withdrawals are free and without transaction fees.
Moving bitcoin to buy other altcoins
If you want to buy more obscure altcoins, you’ll need to use an exchange other than Coinbase/GDAX. One of the most popular options is Binance. However, there is a catch. Binance doesn’t offer a way to buy bitcoin or ethereum directly with USD (nor would I personally feel comfortable doing so), so you’ll need to purchase the bitcoin back on Coinbase and then transfer it to Binance.
If you simply buy bitcoin on Coinbase and try to transfer it to your Binance deposit address, you’ll get hit with the high transaction fee. Fortunately there are a couple ways around this.
You can use the method described in the section above. Just buy some bitcoin on Coinbase, deposit bitcoin from Coinbase to GDAX, and then withdraw directly from GDAX to your deposit address on Binance.
The other option to just use ethereum instead. You can buy ethereum on Coinbase, and then send it directly from Coinbase to your deposit address on a different exchange (like Binance), for a much lower transaction fee compared to bitcoin.
Moving bitcoin cheaply in general
A final challenge came when I wanted to move the bitcoin that I got from the ATM from my iOS wallet to my Trezor. By this point, bitcoin transaction fees had dropped a bit, but my wallet still quoted me around $12 to send $25 worth of bitcoin.
It’s important to note, however, that you have control over the bitcoin transaction (mining) fee, as long as your wallet offers that functionality. My wallet was trying to do me a favor here, by quoting a fee that would get my transaction confirmed very fast. However, since I was just moving bitcoin from one wallet to another for long-term storage, I didn’t need the transaction to confirm in 5 minutes. I could wait hours, or even days, if need be. So I lowered the fee substantially to 92 cents and clicked send. Then I went and got a burrito and waited…
The transaction sat as unconfirmed for two days, and eventually disappeared from Insight, a blockchain explorer. The fee ultimately proved to be too small, and technically what happened is that the transaction was dropped from the mempool. Fortunately, the amount returned to my wallet, so I was able to run the experiment again. This time, I did some homework and learned about how mining fees work, particularly the satoshi-per-byte (satoshi/byte) measurement. I also found this very useful bitcoin fees site. My 92 cent fee turned out to be at around 32 satoshi/byte. This put my transaction (green) way at the top of the chart on fees site, with a huge backup of unconfirmed transactions (red) in front of it. It had no chance!
I set my next fee at around $3, or 130 satoshi/byte. This placed it below (and in front) of that huge log jam of unconfirmed transactions. I gambled with this one, as it could have been dropped yet again, but it ended up getting confirmed in 28 minutes, and I saved around $10 in bitcoin fees. Granted, I sent the transaction on a Sunday night, which historically shows moments of low-fee transaction processing.
Overall, this taught me that you should reduce the transaction fee if you have the time to do so, but do it wisely so that your transaction does not get abandoned.
Final Notes On Wallets
The best and most secure option is definitely a hardware wallet like the Trezor. But they can be expensive, unless you receive one as a Christmas gift.
I have an iPhone, and I initially heard good things about the Mycelium wallet, so I installed it and used it when I went to the ATM. It turned out to be super buggy–the good Mycelium wallet is the Android version, not the iOS one. So what I ended up doing is using Bluestacks to run an emulated version of Android on my laptop, and then used the seed from Mycelium iOS to import the wallet into the Android version. It worked much better, and that’s what I used to send the bitcoin to the Trezor, by taking advantage of Mycelium’s ability to alter transaction fees.
I’ve since installed CoPay on my iPhone, and it’s working well so far. I’d definitely recommend it over Mycelium (for iOS, at least).