Block propagation and block relay
· The lack of scalability is known
to be the foremost obstacle standing in the way of mass adoption of blockchain
technology.
· All
existing blockchain projects look for solutions that could improve the performance of their
network.
· After the invention of decentralized peer-to-peer
network Bitcoin, researchers got interested in what determines the limits of
Bitcoin’s scaling.
· Soon the
core issue was determined and described in terms of block propagation time or block propagation delay.
· It is an average time that is
needed for the new block to reach most nodes in the network.
· In a
large-decentralized network like Bitcoin, whenever the new block is generated, it is
broadcasted according to the Gossip protocol.
· If some node has got the new valid block, it
informs nodes connected to it about its new possession.
· Then the node transfers this block to those nodes which
asked it to do that. Before
the block reaches each full-node in the network,
it passes through 7 intermediary nodes.
· It is
important that every
honest node verifies the block before relaying it to other peers.
· It is
important that even in the
worst-case scenario, the propagation delay should be reasonable so that miners will keep
their nodes synchronized most of the time and will always verify proposed
blocks.
· Whenever
people talk about the scalability
of the blockchain, they mention the transaction throughput of the system.
· However, people forgot that improvements
in transaction throughput
shouldn’t compromise the network’s security or raise
data storage requirements for nodes desiring to participate in the
network.
· These modifications could decrease the number of
independent transaction validators in the network, thereby reducing
decentralization.
· Transaction throughput in Bitcoin could be
easily calculated using the formula:
where
·
Bsize is the
block size in bytes,
·
Tsize is the
average size of transaction record in the block,
·
Btime is the
average time between consecutive blocks in the blockchain.
Working with Consensus in Bitcoin
A blockchain is a decentralized peer-to-peer system with no central authority figure.
While this creates a system that is devoid of corruption from a single source,
it still creates a major problem.
· How are any
decisions made?
· How does
anything get done?
Think of a normal centralized
organization.
All the decisions are taken by the
leader or a board of decision makers. This is not possible in a blockchain
because a blockchain has no “leader”. For the blockchain to make decisions,
they need to come to a consensus using “consensus mechanisms”.
So,
1. How do these consensus mechanisms work and why did we need them?
2. What are some of the consensus mechanisms used in
cryptocurrencies?
What are consensus mechanisms?
Consensus decision-making is a group decision-making process in which group members develop, and agree to support a decision in the best
interest of the whole.
Consensus is a dynamic way of reaching
agreement in a group. While voting just settles for a majority rule
without any thought for the feelings and well-being of the minority, a
consensus on the other hand makes sure that an agreement is reached which could
benefit the entire group as a whole.
From a more
idealistic point-of-view, Consensus
can be used by a group of people scattered around the world to create a
more equal and fair society.
A method by which consensus
decision-making is achieved is called “consensus mechanism”.
Objectives of a consensus mechanism
are:
Agreement Seeking:
A consensus
mechanism should bring about as much agreement from the group as possible.
Collaborative:
All the
participants should aim to work together to achieve a result that puts the best
interest of the group first.
Cooperative:
All the
participants should not put their own interests first and work as a team more than individuals.
Egalitarian:
A group
trying to achieve consensus should be as egalitarian as possible. What this
basically means that each vote has equal weightage. One person’s vote cannot be
more important than another’s.
Inclusive:
As many
people as possible should be involved in the consensus process. It should not
be like normal voting where people do not really feel like voting because they
believe that their vote won’t have any weightage in
the long run.
Participatory:
The
consensus mechanism should be such that everyone should actively participate in
the overall process.
We have
defined what consensus mechanisms are and what they should aim for.
We need to
think - which consensus
mechanisms should be used for an entity like blockchain.
Before bitcoin, there were loads of iterations of
peer-to-peer decentralized currency systems which failed because they were
unable to answer the biggest problem when it came to reaching a consensus. This
problem is called “Byzantine Generals Problem”.
Imagine
that there is a group of Byzantine generals and
they want to attack a city. They are facing two very distinct problems:
·
The generals and their armies are
extremely far apart so centralized authority is impossible, which makes
coordinated attack very tough.
·
The city has a huge army and the
only way that they can win is if they all attack at once.
This is where we face a problem.
This
has clear references to blockchain as well. The chain is a huge network; how
can you possibly trust them? If you were sending someone 4 Ether from your
wallet, how would you know for sure that someone in the network isn’t going to tamper with it and change 4 to 40 Ether?
List of
consensus mechanisms which can solve the Byzantine Generals problem.