Two Types of Potential Problems on the Blockchain

There are two types of problems that are critical on the blockchain: Sybil attacks and the Byzantine General Problem. It is important to understand these two issues in order to create a governance model that recognizes and avoids these two issues.

The Sybil Attack

A Sybil attack involves a remote node forging multiple fake identities to gain undue influence in a peer-to-peer network. The question for developers to focus on is can the local entity (node) reliably verify the uniqueness of identities provided by remote entities?

There are two ways to broach this. One is direct validation, where a local entity can give out a large enough work to all entities simultaneously and make sure all answers come back within a given time. This form of validation uses proof of work and energy distribution to ensure that all nodes are operating honestly. By constraining resources, resource usage validation ensures that only one entity can complete the work in a certain amount of time.

The second form, indirect validation establishes a chain of validity. A local node can establish validity with a remote node and then that same remote node can vouch for the validity of other nodes. Unlike direct validation though, remote nodes have the potential to collude and vouch for faulty nodes.

The Byzantine General Problem

Famously described in 1982 by Lamport, Shostak, and Pease, the Byzantine General Problem describes a group of more than two generals who need to decide whether to attack their common enemy. The caveat is that one or more of the generals may lie about their choice. In order to reach consensus here, the commander and every lieutenant must agree on the same decision (ie. to attack or retreat).

Two important constraints must be met:

  • IC1: All loyal generals must agree upon a common decision

  • IC2: If a loyal general asks another general to ‘attack’, then that loyal general obeys that order. Same for ‘retreat’ command from one loyal general to another.

In the case of three generals, it is impossible to meet consensus according to the above conditions if there is one traitor. This means that if there are m + 1 generals, then at most there can be m/3 traitors in the group. If this condition is not met there cannot be consensus.

The Byzantine Fault Tolerance is the characteristic which defines a system that can tolerate the types of failures caused by the Byzantine Generals Issue. For the blockchain, this formula is helpful for misbehaving nodes. In the case of misbehaving m nodes, at least 3m + 1 level of good nodes are needed to reach consensus.