On distributed systems and achieving consensus with Bitcoin

The rise of Blockchain in public conversations has led to the increasing fascination with another element which makes the blockchain what it is: distributed systems (inspired by this very well-explained article).

A distributed system is a group of computers working together as to appear as a single computer to the end-user.

Consensus protocols go some way to deploying a database to each of these different computers and agreeing on a specific message (e.g. processing a bunch of inputs and having an accurate record of the new value/database).

A big problem I’ve thought about (developed through lots of interesting conversations) is how to achieve consensus across groups of computers. What if 51% have been corrupted somehow? This is what could happen with a public database, where anyone could join and propose transactions to the system. If anyone can join the system, you can’t tell who’s who or verify that the parties are acting lawfully.

Sure, Satoshi and Bitcoin have come along and proposed the proof-of-work mechanism. Identities aren’t needed, so Bitcoin can be deployed in the permissionless setting. This signifies a move away from the voting on a proposal (how it’s been done for decades) to a system where values use a weight attached to each proposal. The weight is the proof-of-work, which solves a cryptographic puzzle. Proposals are linked together, where the heaviest (AKA most time-consuming, complex puzzles) chain of proposals form the “correct” history – this is basically Bitcoin.

However, I still have an issue with mining (how you create proposals in the proof-of-work mechanism). This is because surely this can be controlled to actually control the consensus. If you control the mining and the work, you control the proposals, which means you control the outcome. Surely, when applied to rigorous endeavours (e.g. the authenticity of ownership (e.g. land, property etc)), this can be corrupted and gamed.