Byzantine Fault Tolerant System

·       In a blockchain, the distributed systems in question are individual devices.

o   With each individual member of the network being known as a

§  “node”, “peer”, “miner”, “validator”, or “actor”, amongst many other terms.

What are the key features of a distributed system?

1.   Concurrency


Each computer within the network will complete in agreement, meaning they are working concurrently. To put it simply, each node in the network does everything at the same time.

2.   Timing difficulties

In order to coordinate

it’s quite hard to say which computers in a distributed system did a thing first…

In other words, it’s tricky to see which node discovered, mined, or validated the block first.

This is due to the fact that computers, even if they are set at the same time, naturally move out of sync. Which is an unfortunate consequence, because in distributed systems we need a way of telling what event happened first.

3.   Ability to deal with faulty components.

Every system will have faults at some point or another. Whether that’s process crashing; message rejection, distortion or duplication; or even a network partitioning, delaying or dropping messages. Sometimes systems just go confused.

This is why it’s important for systems to be “Fault-tolerant”, meaning they can still carry out their job despite failing components.

For example: Going back to our hybrid car analogy, just because the battery dies doesn’t mean the car crushes to an immediate halt, the gasoline tank will kick in allowing the car to still operate.

Faults and failures can be grouped into three categories:

 

 

Being Fault Tolerant

So bringing this all back, it’s important that our distributed system (i.e. everything within the ecosystem) is fault-tolerant.

There are three types of fault-tolerance you need to know:

1.    Simple fault-tolerance

In this type of system, the network makes the assumption that each computer/node does one of two things: they either play by the rules, or they fail. In principle, this handles things like crash-failures and omissions (see above), but cannot handle malicious nodes.

 

2.    Byzantine Fault Tolerant (BFT)

A Byzantine Fault Tolerant system is designed to handle nodes that choose to be “Byantine” as well as those which just simply crash.

3.    Byzantine and Rational (BAR) fault-tolerance

While nodes can be downright malicious and Byzantine, sometimes nodes will deviate from the network rules if it rational to do so. Therefore, a BAR fault-tolerant system understands that sometimes nodes can be either: Byzantine, Honest and always following protocol, or Rational (only following protocol if it makes sense).

In order to be a fully functioning and secure distributed system, a blockchain requires adequate protocols that manage and successfully navigate these faults. Otherwise, it wouldn’t be secure, safe, or effective enough for confident usage.

Early blockchain ecosystems used Proof of Work, Proof of Stake and many other protocol variations struggled when it came to BFT and BAR. This stopped many industries adopting blockchain technology, particularly in the IoT space where security is paramount.

It’s for this reason that New thought came together to develop the customized and revolutionary protocol: Proof of Honesty.