How do you explain Bitcoin? What is a blockchain? What’s so great about it and if it is that great why hasn’t it take over the world yet? You think that you know? I thought so too.

I’ve been surrounded with Bitcoin for 4 years now. I’m an experienced software developer and consider myself an advanced Bitcoin enthusiast. And I recently joined Colu, a company that is building the digital equivalent of physical cash.

So, I work with Bitcoin full-time. And I’ve been explaining it to friends and family for years. But it wasn’t until I attended the Scaling Bitcoin conference that I finally understood what it is.

It is hard to explain Bitcoin to newcomers. But last week I learned it’s even harder to explain Bitcoin to bitcoiners. Allow me to try.

It’s all about consensus, stupid

The best feature of the bitcoin blockchain is reaching and maintaining consensus. All nodes can come to an agreement on what happened, and just as important, on what didn’t happen.

The most common application of this is the bitcoin currency itself. It allows all nodes to agree that a certain amount of coins were sent to Alice. They can also agree that Alice spent some part of that amount. Finally they can agree that she did not spend another part.

It is by being able to agree on what Alice did not spend, that we are able to prevent double spend attacks.

You can also put DNS records on the bitcoin blockchain. You can prove that a domain name belongs to Bob, but also that another domain name doesn’t yet belong to anyone.

Affordable consensus

Did he though? Well, that depends on who you ask.

Agreeing on what happened, and what didn’t happen, is hard. Look at this election season. Did Trump say Obama wasn’t American, or didn’t he? Did Clinton? And who said it first? That probably depends on who you ask.

So the problem with having everyone in consensus, is that they all need to know everything. To agree on who owns which bitcoin, the network requires all nodes to be aware of all the transactions ever made. It turns out that this is a lot of data to handle, so it takes a long time, and it’s expensive.

And remember, Bitcoin is not really a payment network. It’s a tool that helps us (faulty) humans reach consensus. So what do we really mean when looking for ways to “scale bitcoin?” What we are looking for is ways to make reaching consensus affordable.

Here are 3 ways to do that, that were mentioned out at Scaling Bitcoin:

1. Bitcoin fungibility: how about some privacy?

According to Wikipedia:

Fungibility is the property of a good or a commodity whose individual units are capable of mutual substitution.

So for Bitcoin to be fungible, one bitcoin must be completely identical to any other bitcoin. Currently that’s not the case, as all bitcoins have a public history. One bitcoin could conceivably be worth less than another, if it is known to have “dubious” history.

I won’t get into the influence of this on bitcoin economics here, but it’s important to note how privacy and anonymity in bitcoin go hand in hand with making it fungible.

How is all this related to making consensus affordable (or “scaling bitcoin”)? Well, turns out that the most efficient way to maintain your privacy is to just keep some things to yourself, and limit the things we must all agree on.

One interesting idea presented at Scaling Bitcoin is MimbleWimble. MimbleWimble is a design for a new blockchain. Instead of agreeing on the history of all transactions, let’s only agree on the current state!

A few months ago, an anonymous author published the whitepaper detailing the crypto magic required to make this work. Once miners process transactions, the entire blockchain history can be compressed to only the current state. And so the entire blockchain that weighs 100GB today could be compressed to less than 1MB, and you won’t be able to tell who sent how much to who. For more on MimbleWimble, check out the Scaling Bitcoin presentation or the less technical Crypto Show podcast.

Another idea is using the Lightning Network for privacy…

2. Lightning Network: Need-to-know basis

A lot has been said about Lightning. It’s a second-layer network that should enable bitcoin users to transact without writing to the blockchain, that is, without reaching worldwide consensus. It’s helpful for privacy and fungibility, but also much more.

Instead of registering transactions on blockchains, users transact with cryptographic proofs (think of them as IOUs). These show that they intend (and are able) to settle the payment in the future. Whenever Alice wants to convert the IOUs she received to bitcoins registered on the blockchain, she can ask Bob to pay up.

If he refuses, Alice can submit these IOUs to the blockchain, which will act as a “judge” and automatically make sure Bob pays and Alice gets her fair share.

But the trick is, Alice only has to do this if for some reason she wants everyone to have global consensus about her ownership of these coins. If she doesn’t want (or care for) everyone to know, she might very well never register that transaction on the blockchain.

She can continue to transact with other users on the Lightning Network and perhaps neither of them will ever cash out!

(Some of you probably noticed that I’m oversimplifying. But you can’t really explain how Lightning works in a few paragraphs. Bitcoin Magazine has a great three-parter on this subject: Part 1, Part 2, Part 3)

The Lightning protocol still needs a lot of work, and the 3 related presentations at the conference (I recommend watching them all) raised a lot of questions.

At Colu, we will provide our users the benefits of the Lightning network as soon as it launches. Expect to hear more very soon!

3. Client side validation

The final presentation was given by Peter Todd, who, for me, finally drove the point home.

He named the most revolutionary blockchain feature for consensus Proof of Publication (remember? That’s agreeing on what happened, and on what didn’t happen). Then he asked the surprising question:

If miners are validating blocks, what are full nodes doing?

or in other words:

Do miners need to validate blocks?

Protocols like Colu’s Colored Coins take care of all validation on the client-side, on full nodes. Miners don’t care about the transaction data created by colored coins implementations. We pay them in bitcoins to put the data in the blockchain and they are happy to take the deal.

The idea of client-side validation for bitcoin is: why do miners need to even validate bitcoin transactions at all? Bitcoin could be transitioned to become an asset in a future protocol like Colored Coins. Miners could ignore all transactions and their validity (except for transaction that pay them directly).

They can dump all data they receive in blocks, as long as they are being paid enough. The upside is that miners don’t even need to be able to read the data! That allows all sorts of tricks with encryption, compression, aggregation, etc.

Full nodes will take care of validations and ignore all data that is invalid. And if they want to go for a new set of rules or features, they don’t need to seek approval from miners!

Today, Bitcoin as an ecosystem is deeply rooted in the idea of miners validating blocks. But going forward, I think discussions on the notion of client-only validations could be very interesting.

Final thoughts: the inefficient blockchain

People keep saying “Blockchains provide an efficient way to make payments”. This couldn’t be further from the truth, and Scaling Bitcoin was unapologetic about this. Blockchains are inherently inefficient. They are slow and expensive by design. And their capacity for growth is, compared to other data structures, limited. The reason they were made this way, was because their only true goal is to reach consensus.

The way to scale bitcoin, isn’t to make it faster or easier to agree on everything. It’s using non-blockchain, second layer protocols, to limit what we must agree on.

During the coming weeks, expect to hear more from us at Colu on our plans for the world’s first network of digital fiat currencies — using the blockchain for consensus where it makes sense, and second layer protocols where it doesn’t. Stay tuned…

If you liked this post, click the💚 below so other people will see it on Medium!