Byzantine buzz on chain.
Decentralized networks are considered to be a reliable medium for managing trust-sensitive
information. But how do we know that this bizarre encrypted blockchain is more trustworthy
then a centralized server?
Because obviously centralized servers are faster and cheaper to operate.
To cut a long story short, we pay for the whole blockchain network to reach a consensus
about the legitimacy of our transactions. A centralized server is running software which
decides whether the transaction is legit or not.
However, on top of this there is always an administrator whom can intervene. He or she can
alter the transactions outcome.
These administrators are human beings and as we all know, human beings arent always the
most secure elements of a system, since they aren`t black or white.
Every single node of the network is operated by a human administrator, but the whole of the
blockchain doesnt have anybody watching over it.
So, since the administrators can alter the outcome of the transaction and have the final say
there must be some anti-cheat system build in right? Especially since they receive big
incentives for doing exactly this. Right?
The blockchain was designed with the above problem in mind. Computer scientists and
decision theorists even tackled this problem long before the existence of the blockchain, since
its a common problem of any distributed system in which any part can give a wrong output,
but the system as a whole still behaves like its functioning properly in every other respect.
This kind of problem is named "Byzantine generals problem". Decision theorists are
apparently good at naming problems and coming up with fancy stories.
The fable goes like this this:
The army of Byzantine is laying a siege on a town. The generals are about to decide whether
they will attack, or whether they will hold their ground. The decision has to be well-
coordinated. If the army attacks at the same time and as a group they will likely win. If they
hold their ground together... well... at least nothing terrible will happen.
But, if some generals attack while other hold their ground, then those who will attack will be
overwhelmed, which is a disaster for the whole empire, since it will result in a big loss.
For some reason there is no such thing as an armys HQ, where all general can gather f.e. to
make decisions. Therefore the generals have to vote by mail.
Each general will send a mail to all other generals with their decision whether to attack or
not. However, to complicate the process even more, it quickly turned out that there are
traitors among the generals.
To confuse the generals, the traitors decided to send them random votes, so some will attack
while others hold their ground.
Long story short, if the amount otraitors are less then one third, the generals can use a
simple voting procedure to figure out their stance. The voting does include some smart tricks
to prevent the duplication of votes (like mailing each other votes they receive from other
generals) and to figure out who the traitors are.
The migration of this mathematical solution into code is called the "Byzantine consensus
However, the actual implementation of the Byzantine consensus algorithm within distributed
networks has some more nuances.
For example, imagine you are Satoshi Nakamoto and are designing worlds first blockchain.
You just implemented the Byzantine consensus algorithm into your software for the Bitcoin
network. Next you will be facing the following issue:
The more computers you have within your network, the more computing power.
The more computing power your network has, the faster it will mine new Bitcoins as a
reward for participating the computation.
How does one avoid this state, when all the limited amount of Bitcoins has been mined and
there is no more incentive to join the network as a miner? The answer to this issue was what
we nowadays call "Proof of Work" consensus
Interpreting Proof of Work in terms of the Byzantine consensus problem, would look like
this: Imagine that anyone can become a Byzantine general. Now, that would make a messy army
for sure, wouldnt it?
So, instead of this, it got decided that for one to become a general one has to pass some test.
After the participant passes the test, he becomes a general and can vote for strategic
movements. The more generals there are, the more complicated the test becomes.
A general always keeps on learning, so in order for him to stay in position he has a returning
test he needs to pass.
The salary of the general now depends on how good he is performing at the test in
comparison to the other generals.
Because of the amount of time put into preparation and actually participating in the tests, the
poor generals almost have got no spare time. But the spare time they do have left they spend
on mailing and military action.
Now, the good news is that the Byzantine Empire has gotten smarter generals whom are a lot
harder to fool. Since they became smarter they will more easily detect cheaters, so if you
cheat you almost instantly get kicked out.
Besides the humiliation of being fired as a general, you also wasted tons of time preparing
and participating in the tests.
However, the flip side of this is that the generals are now too busy preparing and participating
in those constantly returning tests, so only a tiny fraction of their mental capacity can be
actually devoted to doing strategic planning.
The above metaphor is the exact state of the Bitcoin blockchain. The biggest part of the
network resources has been devoted to do the "Proof of Work" hash factorisation instead of...
well.... actually processing transactions.
And because of this the network is stuck at a miserable 7 transactions per second.
Computational resources that are spent doing Proof of Work calculations turned out to be a
complete waste of valuable energy.
So, its obvious we need to find another way to manage our generals. What about the good
old shareholders voting?
Sure, lets give it a try! So, now the rules are as follows:
1. The generals dont waste time studying and participating in tests. There are no tests to
become a general nor are there any tests to remain one.
2. Everyone who is rich enough can become a general. No tests, money is power
3. You want to bring out your vote? Sure! Just attach some money to along that vote of
yours and you will be heard! This we call a "stake".
4. The value of your vote is proportional to your stake value. So your importance is
measured by the amount of money you own.
5. If the one who counts the votes decided that you are a fraud, you lose all your money.
6. And finally, you can focus on going to war!
The above solution is what the Ethereum network will implement in their future updates and
everyone will live happily ever after that.
Oh... wait... Except that when we talk about computers with near instantaneous
communication then we dont actually want to wait for every single computer to agree on a
block right? We could just dynamically switch network resources between sending new
emails and counting the votes to filter out all misalignment? Right?
Well, thats a topic for another day. And spoiler alert: this is the reason why SilentNotary
decided to make its own platform which will use directed acyclyc graph (DAG), witnessed by
delegated proof-of-stake consensus instead of blockchains.