Bitcoin Review

First we have to consider what makes Bitcoin so special.

Understanding what Bitcoin has to offer allows us better to understand Ethereum’s own value proposition as a smart contract platform.

Remember in week 1, we built Bitcoin from the ground up, and emphasized the importance of four key components: identity, transactions, record keeping, and consensus.

And it’s the careful design and combination of these components that really differentiated Bitcoin from anything else at the time.

It turns out that these ideas are much more fundamental than Bitcoin itself, and will help us understand the key components of Ethereum.

So let’s take some time to review some of what makes Bitcoin so special.

First off, when we built Bitcoin from the ground up, we first emphasized the importance of identity: especially in order to enable authentication and integrity.

We want everyone to control a unique identity, and we also wanted Bitcoin to be pseudonymous.

So, we used ECDSA, the elliptic curve digital signature signature algorithm.

Bonus points to anyone who remembers the specific name of the curve.

Users generate their private key at random, or through some hard to guess manner such as a hashed and key stretched brain wallet mnemonic.

And then they use one way functions to generate a public-facing address.

Also remember that Bitcoin is secure since all the numbers we’re dealing with are massive.

Think back to the grains of sand on earth example in week 1.

Of course the main idea of Bitcoin was to be able to send transactions between users, so naturally, we have a way to do this.

However, the way we did this with Bitcoin was with UTXOs, which might’ve been not that intuitive at first.

UTXOs made it easier to enable higher degrees of privacy, for example, if you sent all your change UTXOs to different addresses under your control.

On the other hand, to calculate your entire balance in bitcoin, you would have to sum up all your UTXOs.

You’d also potentially have to reference more than one UTXO when making a transaction, and in some cases this isn’t that desirable.

Still, implementing UTXOs was the innovation that enabled transactions in Bitcoin, and it works well despite the tradeoffs it makes.

Next, of course, we have the blockchain: the famous data structure that enables record keeping in the network.

Every full node in the network has a copy of the blockchain.

We did this to avoid centralization of power: to avoid having a central bank, we made everyone the bank.

And the blockchain is constructed in a tamper evident manner too.

Each block in the blockchain refers to the hash of the previous block’s header.

And also, within each block, we construct a merkle root, which is a tamper evident “summary” of all the transactions in that block.

So any time a previous transaction is altered in the blockchain, that changes the the transaction’s hash, which bubbles up to change the merkle root, which then changes the block header hash.

This then invalidates the block, since all blocks refer to the previous block hash So with the blockchain, we have an efficient way to not only store data, but also to make sure that the data is tamper evident: and this is crucial especially since we’re deploying this for the public, where we can’t expect everyone to be honest.

And finally, we have Proof-of-Work consensus.

Nodes on the Bitcoin network needed a way to come to consensus on updates to the blockchain, so we implemented a voting system.

However, it wasn’t as easy as assigning each user a single vote, since it’s so easy to generate new identities.

So, we saw the need to assign weights to our votes.

So, the innovation here was to have everyone solve a cryptographic hash puzzle, incentivized by block reward.

And so whoever solved the cryptographic hash puzzle first, and provided proof that they solved it correctly, would propose the new update to the blockchain.

And the more compute power you had, the more likely you’d solve the hash puzzle first and get to propose the new block.

So, voting power is limited by compute power — a physical limitation — rather than by the number of identities a user holds.

And by carefully designing Bitcoin like that, we have all these nice benefits: Bitcoin is pseudonymous.

Cryptographic identities allow for integrity and authentication, meaning also that we have accountability — for example if someone tries to double spend or do something malicious, we can catch that.

Bitcoin is democratic, in that decisions made through Proof-of-Work consensus don’t require you to trust anybody else on the network.

You just have to trust the math behind consensus, and that there’s an honest majority on the network, so the network proceeds in a healthy manner.

Also, we can see that the blockchain is an immutable ledger of truth.

Everyone sees the same version of the truth since we have consensus.

And we also have tamper evident data structures in place so that no one can just go in and change history.

Bitcoin was also designed to be uncensorable.

To censor transactions, you would have to control a large proportion of the network, and for any one party, this would be considerably difficult.

Finally, Bitcoin is distributed.

There’s no central point of failure.

Instead, the execution of transactions depends on a network of miners located around the world.

All these properties seem pretty nice, and it would be awesome if we could include them in our smart contract platform.

So, we’ll keep Bitcoin’s architecture in mind.

Smart Contracts Overview