Better Democracy Without Elections
Implementing fault-tolerant consensus at scale without electing representatives.
In this new series, I want to discuss, and potentially solve, some sequential and inter-connected problems that can radically change how we do democracy.
This post will start by discussing:
Logistical inefficiency of letting every citizen propose an idea.
Implementing coordinated consensus in the presence of traitors.
Future posts will discuss:
Writing our policies not in the English grammar but in the form of code.
Outsourcing the power to authorize policy ideas for implementation from elected representatives to a more democractic structure.
Alternative vote-weighing strategies than just one-person-one-vote.
I think my district’s Superintendent of Police is a nightmare. I want this guy gone. But other residents of my district also have an opinion on this and, therefore, I can’t simply get him replaced without registering everyone’s opinion through individual votes. It’s also not just about the fancy ideas that I have. Other residents also have their own ideas that they wish to implement. If we were to allow this, the nodal authority of our country i.e. the Election Commission, will have to setup electioneering infrastructure for every single one of such motions by every random citizen about any random issue. To overcome this logistical inefficiency we award everyone a once-in-every-five-year opportunity to bet on a random dude out a pool of random dudes through a popularity contest and trust him to take decisions both on our behalf and in our interest. This popularity contest is called an “election” and has been traditionally accepted as a solution to for the aforementioned logistical inefficiency.
Agency is our ability to model the future. And the trust that we bestow on elected representatives comes at the cost of our agency. Because we now bet on the agency of these folks to accurately model our future and engineer it subject to the ideas they deem fit. Needless to mention, their agency also enables them to hack their own reward function, play currency (votes) management and dissociate from the terminal goal of working in our (the voters) favour. This goes all the way back to how the worst way to solve a problem is to establish a permanent institution dedicated toward solving it. Human administrators are, therefore, a problem. Not just elected representatives but also the civil services. Purely because they are more agentic (or not automatic enough) than we’d like them to be.
But what if there was a better solution for the logistical inefficiency, of letting every citizen propose a policy change, than running an election? Can we somehow delete the managerial layers comprising of human administrators and dilute this power down the masses?
What if there was a way to vote on motions and policy changes without outsourcing our agency to elected representatives?
To achieve this design you’ll need two things:
A mobile app where every citizen can propose a motion, everyone else gets to vote on it and the motion is implemented if it qualifies.
The policy changes that your motion is proposing i.e. rules, conditions or instructions, should be written in/as code. Essentially in the form of decision tree based logic than can be computationally verified instead of using English language grammar.
If we were to build any mobile app with a conventional tech stack then it will have to be backed by a centralized database that is hosted by the government. This database contains information about your motions and votes cast for/against it.
Conventional centralized databases come with two problems:
Their password/key will have to be made available to at least one agent of the State to be able to access the data once voting is over.
Anyone with the password can mutate (change or modify) data written inside the database.
The chosen agent of the State, let’s say the Chief Election Commissioner, is a centralized node with access (and editing) permissions and is, therefore, more than enough to compromise the entire voting exercise and naturally can never be trusted with the authenticity of the information in the database. This proposes the challenge of unverifiable information if we were to move away from current vote-recording methods (EVMs or ballot boxes) to a mobile app backed by a centralized database.
If, however, we replaced this database with an alternative technology that keeps our information:
Read-only or immutable: Implying that the information cannot be changed once written. At least, not without accurately logging the changes.
Reliable through verification: Let us mathematically prove the authenticity of the information.
We will radically transform democracy, as we know it.
The Roman empire of Byzantine was once involved in planning an attack on an enemy city. Multiple regiments of the Byzantine army were stationed at various areas outside that city. The only way to overcome enemy defenses and achieve a successful attack was by ensuring that at least a sufficient number of generals are honest and will lead their regiments into the attack at the same time. And in order to achieve this, the generals had to properly coordinate with each other before launching an attack.
If the generals were to use messengers to communicate with each other, you can imagine obvious problems with it:
The messengers can be compromised i.e. the message has been intercepted, and tampered with, by the enemy.
The messengers got killed midway.
At least one general is compromised and intentionally sending conflicting information to other parts of the system.
This problem is infamously called the “Byzantine Generals’ Problem“ which introduced us to the problem of coordinating consensus among participants in distributed, or decentralized, systems. A faulty or malfunctioning node i.e. a compromised general or messenger, can prevent the system from operating normally.
This problem doesn’t seem that tough to solve in the first glance. But it is the primary reason why we’ve needed to stick with centralized databases for so long. Because the information in decentralized systems could never be proved for reliability.
Thankfully, the Bitcoin paper came out in 2008. And here is how the the bitcoin algorithm solved this problem. I won’t go into it’s details. But this is why Bitcoin is important to engineers. Not because it is a fancy-a*se crypto-currency that allows us to say “f**k you“ to the State but because it was the first solution that managed to implement fault tolerant consensus at scale.
With that achievement, Bitcoin became the first decentralized data storing technology that can be rolled out *at scale* while keeping our information immutable, mathematically reliable and trustworthy without relying on a centralized database.
Mind you, the incentives assigned in the bitcoin algorithm have proven their case well enough that the bitcoin network has never been successfully attacked since it’s launch in 2009.
Let’s go back to discussing democracy.
Now that we can use this decentralized data storing technology (blockchain) as the modern day rail-road where the information about our voting campaigns can safely be trusted for reliability, we can effectively consider letting every citizen propose their fancy ideas, running a voting campaign over those ideas without hosting a centralized database with the government, and post the voting phase - allow everyone to verify their votes and campaign results on-demand.
However, replacing the present-day human representative isn’t just about making them execute fundamental functions. Migrating to a more democratic voting system isn’t enough. We now have to automate more complex decision making tasks which were earlier managed by the agency and intelligence of our human representatives.
Once a motion is passed, how does the policy get implemented with as less human intervention (of civil servants or otherwise) as possible?
Who maintains oversight on the civil services?
How do citizens on the ground gain sufficient insight to efficiently take decisions at the national/federal level?
A portion of these questions hold their answers in writing our policies not in the English grammar but in the form of code. Let’s talk about it in future posts.