We have sat here for the last 3 years seeing only infrastructure apps like wallets and exchanges emerge on top of Bitcoin. Why is that?

My theory has been that the scripting language in Bitcoin — the piece of every Bitcoin transaction that lets you run a little software program along with it — is too restrictive.

Enter Ethereum. Ethereum has taken what was a four function calculator of a programming language in Bitcoin and turned it into a full fledged computer. We now stand only 9 months out from the beginning of the Ethereum network and the level of app development is already faster than Bitcoin’s. We are finally getting rapid iteration at the app layer. In one early example, people have designed a decentralized organization (The DAO) — a company whose heart is code and peripheral operations are run by humans, rather than the other way around — that has raised $150m so far in the largest crowdfunding ever.

To be clear, I don’t think this needs to be a contest between Bitcoin vs. Ethereum and Coinbase plans to strongly support both. I think this is about advancing digital currency as much as we can. There is a significant amount of overlap between the two, however, so the comparison is valuable and the potential for competition is real.

How did we get here?

First, some history. When the Bitcoin white paper emerged in 2008 it was completely revolutionary. The amount of concepts that had to come together in just the right way — computer science, cryptography, and economic incentives — was astonishing. When the actual Bitcoin network launched in 2009, no one knew about it, and many of those who did thought it would surely fail. Just to make sure the thing worked, the scripting language in Bitcoin was intentionally extremely restrictive. “Scripting language” is a fancy way of saying an easy to work with programming language (in fact, Bitcoin doesn’t exactly have a scripting language, it uses a stack with script operators — more on that later). The scripting language in Bitcoin is important because it is what makes Bitcoin “programmable money”. Within each Bitcoin transaction is the ability to write a little program. For example, you can write a little program in a Bitcoin transaction that says “this transaction isn’t valid unless it’s June 15th, 2016 or later”. This is very powerful because you can move money automatically with computer code and everyone can see the rules by which that money moves and know those rules will be followed.

It was, and still is, incredible that Bitcoin got off the ground and is alive after 7 years. It is the first network ever to allow anyone in the world to access a fundamentally open financial system through free software. It has ~$7bn in market cap and has never had a systemic issue which could not be fixed. To some this is already a great success.

However, we also stand here 7 years into Bitcoin with few apps and no “killer apps” beyond store of value and speculation. The scripting language in Bitcoin has barely expanded and remains very restrictive. While Bitcoin has become embroiled in debate over the block size — an important topic for the health of the network, but not something that should halt progress in a young and rapidly developing field — Ethereum is charting new territory, both intellectually and executionally.

Make no mistake — Ethereum would never have existed without Bitcoin as a forerunner. That said, I think Ethereum is ahead of Bitcoin in many ways and represents the bleeding edge of digital currency. I believe this for a few reasons:

Ethereum’s programming languages lets you do much more than Bitcoin’s

As mentioned above, Bitcoin’s scripting language is intentionally restrictive. You might liken it to programming with an advanced graphing calculator — functionality is limited. As a result, you can only do basic things. It is also hard to understand and use. Rather than most modern programming languages where the code is almost readable like a sentence, it looks like unintelligible machine code. As a result, it took Mike Hearn, a talented ex-Google developer, a whopping 8 months to write a first version of a fairly simple crowdfunding application.

In contrast, Ethereum’s programming languages (Solidity for those who like Javascript, Serpent for those who like Python) let you do pretty much anything an advanced programming language would let you do. This is why they are said to be “Turing complete”. Equally important, they are easy to use. It is simple for any developer to pick it up and quickly write their first app.

Here’s an example of a script in Bitcoin:

OP_DUP OP_HASH160 62e907b15cbf27d5425399ebf6f0fb50ebb88f18 OP_EQUALVERIFY OP_CHECKSIG

And one in Ethereum’s Solidity:

contract Simple {

function() {

var two = 1 + 1;

}

}

Developers at Coinbase have written simple Ethereum apps in a day or two.

I cannot overemphasize enough how important this combination of full programming functionality and ease of use is. People are doing things in Ethereum that are not possible right now in Bitcoin. It has created a new generation of developers which never worked with Bitcoin but are interested in Ethereum.

Bitcoin could have this advanced functionality, but it would be through a series of other layers that work with the Bitcoin protocol that haven’t been created yet, while Ethereum is providing it out of the box.

Beyond the radical difference in scripting languages, developer tools are much better in Ethereum. Bitcoin has never had a set of developer tools that caught on much, and they are sorely needed given it is much harder to work with Bitcoin out of the box. Ethereum has made life as a developer much easier. It has a welcoming homepage for devs and its own development environment (Mix IDE) amongst others.

Ethereum has a more robust developer community

The developer community in Bitcoin feels fairly dormant. Bitcoin never really made it past the stage of simple wallets and exchanges. The most notable thing to be released recently is an implementation of the Lightning Network (a way of making transactions, especially microtransactions, more efficient) called Thunder. This is an additional protocol layer, not an application, however, and could be used by both Bitcoin and Ethereum.

In contrast, Ethereum’s developer community feels vibrant and growing. Most importantly, entirely new things are being tried on Ethereum. While most are experiments or toys at the moment, you can see a list of apps that developers from around the world which is rapidly expanding.

Developer mindshare is the most important thing to have in digital currency. The only reason these networks (Bitcoin, Ethereum) and their tokens (bitcoin, ether) have value is because there is a future expectation that people will want to acquire those tokens to use the network. And developers create the applications which drive that demand. Without a reason to use the network, both the network and its currency are worth nothing.

Ethereum’s core development team is healthy while Bitcoin’s is dysfunctional

Vitalik Buterin, the creator of Ethereum, has shown early promise as the leader of an open source project. He seems both comfortable as a community and technical leader. As an example, here’s what he sent us when we added Ethereum to GDAX, our exchange.

In contrast, Bitcoin has had a leadership vacuum since Gavin Andresen stepped aside after other core developers did not get on board with his (in my opinion rational and convincing) arguments to increase the block size. “Core developers” as they now stand are also relatively fragmented.

Beyond a leadership vacuum, Bitcoin’s “leadership” is less clear and toxic. Greg Maxwell, technical leader of Blockstream which employs a solid chunk of core developers, recently referred to other core developers who were working with miners on a block size compromise as “well meaning dips***s.” A second discussion board needed to form on reddit, /r/btc, because of censorship on the original /r/bitcoin. The content on the Bitcoin discussion boards feels like squabbling while Ethereum’s is talking about relevant issues and new ideas. In summary, Ethereum leadership (and as a result its community) is moving forward while things need to get worse before they can get better in Bitcoin.

Ethereum has a growth mindset while Bitcoin has a false sense of accomplishment

The general mindset of the two communities feels different as well. Many in Bitcoin seem to have a false sense of “we’ve got this really valuable network we need to protect!”. In my opinion that view is wrong and dangerous. Bitcoin is still orders of magnitude smaller than the major financial networks of the world at ~$200m/day in transaction volume (Visa $18 billion/day, SWIFT wire $5 trillion/day) and ~10 million users (5 billion in banks). And while transactions per day on Bitcoin seem to be increasing at a healthy pace, the actual $ volume of transactions on Bitcoin is not growing much.

Bitcoin transaction volume in peak times compared to other networks — we’ve got a long way to go

Meanwhile, the core development team in Ethereum is focused. This is evident from the Ethereum blog. When I started reading it, it was everything I found myself thinking about for the present and future of Bitcoin but didn’t see being discussed much: scaling the network, the viability of proof of stake, how to create a stable digital currency, what a blockchain based company (DAO) would look like, amongst other topics. These are very ambitious ideas and some won’t work. But some probably will work, and they will be important — moving to proof of stake and eliminating physical mining being one of the most promising.

Ethereum is making faster and more consistent technical progress on the core protocol

In Bitcoin, we have mostly been stuck on the block size debate for the last year and a half. Some minor improvements have been made (CHECKLOCKTIMEVERIFY to enable the time locking functionality mentioned earlier), and others are in development but not yet live (Segregated Witness to make the network more efficient). None of these changes have sparked much in the way of application development yet.

Meanwhile, beyond the more robust programming language, Ethereum is making advancements that are core to even basic transactions. Its mining allows for much quicker blocks, and thus, transaction confirmation times — about 14 seconds on Ethereum compared to 10 minutes on Bitcoin (not an apples to apples comparison, but the larger point holds). This is largely due to the concept of miners getting paid for the work they put in whether or not they are the first to solve the next block (a system called “uncle blocks”). While this system isn’t perfect yet, it’s meaningful forward progress towards quicker transaction confirmations.

Counterargument and caveats

Ethereum is young and it’s prudent to highlight the risks:

Ethereum has been able to take more risk with new features because it is has had less to lose. Most of Ethereum’s history has occurred while it has held in the hundreds of millions of dollars, while Bitcoin is in the billions. As Ethereum continues to grow, it may not be able to “move fast and break things” in the same way. In practice I think this mostly comes down to the quality of the core development team — if they continue to make progress and build trust with the community execution can still be rapid, as shown by Linus Torvalds with Linux as an open source project.

Ethereum hasn’t gone through a governance crisis. Vitalik acknowledged this at an Ethereum meetup we hosted at Coinbase. Like any project that has success, it’s inevitable to hit bumps as peoples’ vested interests get bigger.

Ethereum allows you to do more than you currently can in Bitcoin, and that brings increased regulatory risk. This is less of a systemic risk to Ethereum as a network, rather more of a risk to specific applications of Ethereum. A good example would be decentralized organizations (ex: the DAO) and regulation which would normally apply to a corporation.

There is a greater security risk with Ethereum. Having a more robust programming language creates a greater surface area for things to go wrong. Bitcoin has been battle tested for 7 years. Ethereum has been live for 9 months and now stores about $1bn. While there hasn’t been a major issue yet, it is possible there are issues people are not yet aware of. This probability goes down with each passing day. People will definitely create smart contracts with bugs in Ethereum. This won’t be because of a failure of the core Ethereum protocol though, much like the failure of Mt. Gox was not an error in the Bitcoin protocol.

Ethereum may attempt to move to proof of stake. This would be a huge breakthrough if it works as it would eliminate the need for proof of work and all of the hardware and electricity use that goes with it, but also presents a large risk. I believe this risk is manageable because there would be extensive testing beforehand.

Scaling the network is harder when it supports mini programs in addition to basic transaction processing. This was the biggest question I had when I started to read about the idea in 2014. While there is no silver bullet here, I think some combination of solutions will be developed over time as they are with any evolving technology. Some possibilities for Ethereum are sharding the network, computing power and networks naturally getting faster over time, and the economics of the Ethereum blockchain only running the most important things as a forcing function. There is a decent argument (best articulated by Gavin Andresen in his article Bit-thereum) that it’s better to keep the base transaction layer dumb for scaling reasons with advanced logic in higher layers. It’s possible we come full circle and end up back there, but this isn’t how interesting things are being created at the moment because it’s harder to 1) create and 2) get decent adoption of multiple layers in the stack than it is to have it all out of the box in Ethereum.

Wait — why is this a contest? Are Bitcoin and Ethereum competitors or complementary?

This remains to be seen. It’s possible Bitcoin remains the protocol that people are comfortable storing their value in because it is more stable and reliable. This would allow Ethereum to continue to take more risk by trying less tested advancements. In this scenario, Bitcoin is more of a settlement network while Ethereum is used to run decentralized applications (where most of the transaction volume occurs is up in the air). The two could be quite complementary.

What is very real, though, is the possibility that Ethereum blows past Bitcoin entirely. There is nothing that Bitcoin can do which Ethereum can’t. While Ethereum is less battle tested, it is moving faster, has better leadership, and has more developer mindshare. First mover advantage is challenging to overcome, but at current pace, it’s conceivable.

What does all this mean?

It’s all good news for digital currency. Ethereum is pushing the envelope and I am more excited than ever. Competition and new ideas create better outcomes for everyone. Even if Ethereum goes up in flames our collective knowledge in digital currency will have leveled up significantly. I have not given up on Bitcoin and it’s hard to argue with a network that has been so resilient. I, and Coinbase, plan on supporting both. We’ll probably support other things that haven’t been invented yet in the future. At the end of the day, I have no allegiance to any particular network; I just want whatever brings the most benefit to the world.

Taking a step back, it feels like the rate of change in digital currency is accelerating.

Digital currency is a unique field because of how ambitious the scope is: creating a better transaction network for the entire world (for currency, assets, our online identities, and many other things). Like the Internet itself, this is not one company selling its own proprietary product, it is a series of low-level protocols that will connect everyone someday. And, like the Internet, it will (and has) taken longer to develop, but the impact will be immense.

Fasten your seatbelts.