KeepKey: A Premium Bitcoin Wallet Device Leveraging BlockCypher’s Infrastructure
To kick off a new series of case studies to help developers learn how they might integrate BlockCypher’s suite of powerful blockchain APIs, we’ve interviewed KeepKey’s Senior Software Engineer, Ken Heutmaker.
First, tell us about your company and what you’re building!
It all started some two years ago. Back then, we were still reeling from the Bitcoin ecosystem getting Gox’d, and lesser Bitcoin hacks were everywhere in the news. Everyone on the KeepKey team is an early Bitcoin aficionado, and we were all shocked by the number of security incidents those days. It really was the Wild West, with all the opportunities and dangers such an epoch brings.
All of us knew something had to be done to protect individual bitcoin holdings. And that starts with the user, with their wallet.
So, two years later, here we are! KeepKey is the bitcoin wallet we’ve always wanted. It securely initializes and manages the private keys associated with your bitcoin. It attaches to a computer with a USB cable and has a large screen to show messages to the user. (Like the picture above!) The user interface is simple and intuitive. For example, it has one button for confirming actions like sending bitcoin.
Because the private keys never leave the device, it is nearly impossible for malware or other people to steal bitcoin protected by a KeepKey. Transactions can only be created on the device and the user has to explicitly approve them. Even if someone steals your KeepKey, it is designed to be unhackable.
We also designed KeepKey to be durable and elegant. When you hold a KeepKey, it feels solid in your hand. You can feel that it is well constructed and the highest attention was paid to the details.
How do you interact with Bitcoin/public blockchains?
Since KeepKey is a Bitcoin wallet, it needs to know how much bitcoin a user has and it needs to send transactions to the blockchain. Communicating with the blockchain is a fundamental aspect of the product.
How do you use BlockCypher’s API?
BlockCypher provides the data that KeepKey needs to display account balances and show transaction history. Additionally, transactions are sent through BlockCypher.
The next version of our software leverages BlockCypher’s Metadata API. Using this, we store metadata about users accounts, like account name, privately on BlockCypher’s servers. It is a useful API that allowed us to build this feature quickly.
Before BlockCypher, did you consider other methods for working with blockchains? What were the deciding factors for BlockCypher?
Before we started working with BlockCypher, we used another API. We found it lacking and unreliable. We considered building our own blockchain API, but that’s a big commitment. It’s time consuming and expensive to build a system that is stable and reliable, not to mention the costs associated with managing a 24x7x365 infrastructure once built. Since our product is designed to have a high quality experience, we feel that extended or frequent outages are unacceptable. BlockCypher has always been reliable, and the few times there have been hiccups, they have been extremely responsive. Overall, I estimate that uptime exceeds 99.99% and is moving toward 99.999%.
We are growing fast and have big plans. We need to keep focusing on innovation and finding new ways to grow our business. Using BlockCypher’s API has allowed us to spend our time on the things that will help us succeed and less time on building infrastructure.
We were introduced to BlockCypher though one of their early customers. I was telling them about the issues we were having with our prior API provider and they suggested that BlockCypher might work better for us. The more we looked at BlockCypher, the more we liked what they were offering. They have an impressive list of clients and — importantly for our product — their API knows about HD wallets. This allowed us to remove a bunch of client-side code. With BlockCypher, we can send a few pieces of information about the wallet and the wallet hierarchy is tracked automatically. It simplified our code substantially.
Once we started using the BlockCypher API, we discovered the transaction confidence interface and now use it to present transactions and balances to our users in a way that is easier to understand. We also love the fee estimates that BlockCypher provides. They enabled us to implement dynamic fee selection very quickly, in a way that is transparent to the end user.
Recently, I contacted BlockCypher about a feature we are working on that requires the ability to segment data differently. After a brief email exchange and a 30 minute phone call, we agreed on an approach. BlockCypher engineers delivered a solution within a few days. This is pretty typical of the level of cooperation that we have received from the BlockCypher crew.
If you could add one thing to BlockCypher’s suite of APIs, what would it be and why?
Support for other cryptocurrencies would be interesting. It isn’t on our roadmap, but Ethereum seems to be gaining a lot of traction. I could see us wanting to integrate with them (or other cryptocurrencies, if they gain traction).
Want to pick up a KeepKey? Check out their website, and as always, check out our documentation if you’re interesting in developing your own bitcoin/blockchain application.