How we built a text messaging Bitcoin wallet in one day

Reid Williams
Humans + Bits + Blocks
4 min readFeb 27, 2015

--

Tim Shi and I arrive at Sophie’s coffee shop in San Francisco for a day of experimenting and hacking with Bitcoin and the block chain. We’re colleagues at IDEO, but right now it’s 8 am and I’m hungry!

So Tim buys me coffee and breakfast. We sketch and discuss some ideas of what to explore. “You owe me $8 by the way,” Tim reminds me. “Wait, what if you could pay me back with a text message by the end of the day? Could we build that?”

And so it begins. Could we build a minimal but usable “app” that allows anyone to store bitcoins, and send them to someone else with a text message? How far would we get in a single day of coding?

Why? As designers, we’re intrigued by the stripped-down simplicity and challenge of text messaging as an interface. How much room for design is there in such a constrained space? As coders, we’re fascinated, daily really, by the ever increasing power and simplicity of developer platforms. Tools like Twilio, Parse, and Heroku make it easy to focus on the user experience rather than back end services.

We are human-centered prototypers at heart, always seeking to create a tangible, demo-worthy experience as fast as possible. Platforms help us get to this faster.

Of all the platforms we’ve used, few feel as magical as Bitcoin and the Bitcoin block chain. Using Bitcoin and a simple yet powerful API called Chain, we can create a Bitcoin transaction with just a few lines of code. I can send Tim the $8 I owe him, or I can send him a million dollars. It’s the same few lines of code. We can submit the transaction to the Bitcoin network where it will be sent from one node to the next, eventually reaching the whole network of a few thousand peers in under ten seconds. Some of these peers are Bitcoin “miners”, competing like crazy for a mining prize and transaction fees. The miners package transactions into a block, add it to the chain, and share the update with peers. The miners are a distributed consensus mechanism. Their collective and uniform determination of whether a transaction is valid, and whether a block is valid is what keeps the block chain alive, stable, and secure.

Tim and I hammer away. We rough out a user journey— people need to get bitcoins into the service, send bitcoins to a friend, check their balance, and get bitcoins back out of the service. We work through the day and by early evening we’ve created something we think is pretty awesome.

I “sign up” for Flipcoin (our working name for the service), exchange some dollars for bitcoins using Circle, and then use Circle to fund my Flipcoin account. I check my balance, $12 (about 0.05 bitcoin). and then I send Flipcoin a text message, including Tim’s contact and “$8.”

It works. We did it!

How? We laced together a bunch of platforms and tools: Twilio to send and receive SMS text messages, Parse to keep track of Bitcoin private keys and phone numbers, Heroku running Node.js for our app logic, and Chain to interact with the Bitcoin network.

We left a lot out, of course — a better designed experience, security, and scalability, but we got to something that works, something we could experience, and something we could demo to our friends at IDEO and to the world. This was one day of prototyping, which makes us excited to see what we can accomplish this summer at IDEO’s Trust and Transactions Future Lab with Harvard.

Now we can send anyone with a mobile phone a million dollars without either party downloading an app. Magically, we didn’t need to ask permission from a transaction system to participate, we just did. And of course, Tim got his $8 back.

--

--