Greetings fellow Cryptocurrency Fiends!
I’ve been pretty busy with maintaining my current gear and getting a small scrypt rig up and running. I’m halfway there in terms of complete utilization and speed, but that will be saved for another day.
Today, Ladies and Gentlemen, I wanted to discuss my story on the practicality involving bitcoin transactions – I’ve known about this for a little while but wanted to wait until I had enough examples of real world experience before writing about the topic. I am a firm believer that bitcoin will become much more commonplace as time leads on, however it still is very much like the early 90s (1991ish) with the internet, for where bitcoin currently lies. The title for this post was inspired from the ramblings of popular media complaining about things like “My internet is too slow! and My email is too slow!” There are different pieces of software out there to use and utilize bitcoin but they are often described as:
- User intensive
- Buggy
- Slow
- Flawed
I remember my first time questioning how far ahead is it until “Good” dumb-proof software would become available. This happened for me back in July-August of 2013 when there an exploit was found in the Android Version Bitcoin Wallet Apps that relied upon the Random Number Generator (which isn’t actually very random) that had caused users to lose their own private keys to be copied and thus redeemed for those supposedly secure coins.) Worried about my own funds, I immediately updated my own Bitcoin App. Once I did this, the first thing I noticed was that my old public address was gone from view. I thought, “Oh No, I just deleted my bitcoin, its GONE!” After about 20 minutes, I saw that my balance had moved to the new address and then, when clicking onto the transaction itself, I saw that the OLD wallet was still of course there and that it had been designed to automatically move funds into the newer wallet. Before realizing this, I thought I was in a huge mess of trouble because I had funds, in route to the old address and had the fear that not only my current funds were gone, but that the funds in route to that address would be gone as well. Luckily I was mistaken.
Fast forward to yesterday. I now do occasional buying and selling for small amounts using localbitcoins.com. One of my challenges had been with waiting for confirmations for certain mined coins (apparently, mined coins can take much longer to appear confirmed within some bitcoin wallets and is thus rendered unspendable for a period of time. More on this in a different post. However, keep in mind that my name is Frankenmint – this comes from my practice of taking old technology and recycling it for my own endeavors – it was also the name of my first bitcoin server which I used as a host for Block erupter software and fpgas. So, naturally, I use a dual core, going on 3 years old, Droid X2 which was, in and of itself, purchased 2ndhand from someone else back in 2013. While this phone has been a gem to me since I’ve owned it, I started noticing issues with Bitcoin usability back in December.
The wallet I use is based off of Bitcoinj (j stands for Java applet) and had now started to freeze all the time. It would literally freeze for a couple minutes then would “force close unexpectedly”. What is the point of telling you this? Well, during a few of my past bitcoin transactions, I would need to run the program a few times and allow it to crash, just to be able to get the balances updated correctly and also to be able to confirm that a transaction had been sent. To date, my phone’s wallet has worked flawlessly in terms of getting a transaction signed (sent successfully), though it is important to note that the wallet itself appeared to freeze or glitch or not update, unless you exited from the application and then re-opened it. Conversely I’ve used Armory wallet on my computer which takes forever and then some to just update the blockchain. Because of this lag in time, I’ve often refrained from utilizing their wallet up to this point, not only because of the bulky factor of keeping a computer, but because it took forever to simply use. Worse off was the fact that Armory would often-times crash when I attempted to send a transaction (this hasn’t happens to me in a while, but it did happen repeatedly at one point when I was attempting to purchase some hardware. That experience has left me weary of wanting to use Armory now, which is a shame)
It really hit home for me yesterday, when I was proceeding to sell someone some bitcoin and my wallet kept on freezing. I’ve come to learn that many different people who interact with me have never done a bitcoin transaction before. It is very embarrassing to have your wallet freeze or act extremely slow when Bitcoin is touted as being fast and effortless.
I think what is happening is that we’ve seen where the internet leads to, and expect new cryptocurrency to be there, without truly appreciating the level of infrastructure necessary to build upward. You could say that my experiences were like trying to use Youtube back in 1995 on a 56K modem.
After talking to Andreas Schildbach, the main dev for the Android Wallet, he concluded that my phone is very old – and that having several transactions across many blocks on the phone was likely the culprit causing bitcoin transactions on this particular device to act so slow for me. That is a bit of a caveat emptor because, the presumption is that bitcoin is not bandwidth/data heavy – I learned this the hard way when I had a recieved transaction appear on blockchain.info’s website but not on my wallet, I learned that the only way to fix was to redownload the block headers again – that process took 2 days to get my block headers back up to data on my own phone. This may not be the case that you have any sort of problems with your android bitcoin wallet on Android’s Jellybean or ICS Mobile, OS, but on my phone (made in 2011 with stock gingerbread OS) it had become an issue for simple usability. He had suggested to:
- transfer the funds to another wallet outside of the phone
- create and send myself encrypted backups of the wallet data so that the address could be retrieved later, and to finally,
- clear the app data cache from the phone and start with a fresh address.
This suggestion works well to speed up my phone but really messes with my bitcoin life in other ways. I mine actively and have used the phones wallet address to keep an eye on funds easily, without needing a computer or internet connection close by. I like to buy things in bitcoin when I can as I believe that spending it helps to increase the usage and desire to use it from an entrepreneurial and merchant perspective – if its common things from amazon or target, I’ve been using gyft, otherwise, I’ll use bitcoin directly with a local merchant who accepts them. Its easy for me to transfer funds away from this address after I reach a certain dollar amount – such as 300 dollars or less is kept on the phone wallet and the rest is sent to cold storage.
Now with the suggestion above, I would need to, at minimum:
- Restore the wallet somewhere else so that funds (such as Eligius where I have money that will likely not see the payout queue for a few weeks or a month) linked to this wallet will still be retrievable
- Begin transferring amounts of coin to the newly generated phone wallet address after deleting the local cache so that I can use them to transact as usual.
While the 2nd step is a piece of cake, the 1st step SHOULD BE! It’s not. Andreas did give me a good wallet to use – Multibit. However before installing, yet another peice of software to store bitcoin, I wanted to instead utilize one of the many current solutions I had which included: Armory, the underlying bitcoin-QT program that Armory uses to get the public blockchain data, and even blockchain.info’s own wallet import functionality. Needless to say, ALL programs failed except for Multi-Bit. This was all experienced so that I could simply use a dumb program itself to to import the old bitcoin phone address so that I could receive my last bits of coin expected from eligius.
I first tried Armory. Armory wanted a private key so I thought “NO Problem!” I took my wallet.dat backup from off the phone and copied that into Armory, No Dice. It would not accept my wallet.dat as the private key. Then I opened up the underlying bitcoin.qt which is installed as required component of Armory – I figured, It must be that the wallet.dat needs the un-encryption password and it wont allow me to enter it into armory as armory is only designed to import armory backups – STILL wrong – now my Bitcoin.QT was giving me a error: JSON improper format error in the console where I tried to import the wallet. By now I’m thinking, okay, I’ll just add it onto my existing blockchain.info account (which I was not fond of doing as blockchain.info is still a 3rd party online wallet) I tried to use the blockchain.info import function and it was giving me a “Bad password!” error note. Now I’m starting to worry that I can’t even import the old wallet anymore – until, I succomed to my first reservations against it and installed, yet another, bitcoin wallet – Multibit to be precise.
It turns out that Multi-bit worked great to import this old wallet where it now resides. Being that up to this point, I had lead others on to believe that it would be easy to retrieve your bitcoin if your phone has been destroyed and you kept an encrypted backup – it turns out that there was a bit of a disconnect that forces a learning curve for all would-be bitcoin users. My lesson for today is that A PRIVATE KEY IS NOT AN ENCRYPTED WALLET.DAT BACKUP! I cannot stress that enough. 9 times out of 10, your wallet developer is giving you an enrypted wallet backup that you can only open with a copy of the same software in most cases. To get the private key, you will need to use the wallet software itself and view the private key – I’ve seen that only desktop software is willing to provide this (not Coinbase, not Blockchain,info and not the Android app from as far as I can tell) While the ideal solution is to use a highly secured web based 2+ factored authentication wallet, practically speaking, It isn’t very easy to own your coins (possess the private key) when attempting to use a web based solution.
TL;DR: Android wallet does not give you a private key, just an encrypted wallet.dat file. Change this file to wallet.key and use Multi-bit to restore this encrypted wallet elsewhere NOTHING else seemed to work (I haven’t tried py-wallet and I’ve heard that this python based app could probably work too)