# Problem Definition

Learn the definition of the Byzantine problem.

## We'll cover the following

## Overview

The system model contains a collection of $n$ processes that $f$ processes may exhibit Byzantine behavior, i.e., $n-f$ processes are non-faulty.

For the Byzantine failure model, the agreement and validity conditions are slightly different from those we defined in this definition

### Correctness conditions for the Byzantine agreement problem

There are $n$ processes, of which at most $f$ might exhibit Byzantine behavior, i.e., at least $n-f$ processes are correct, and any non-faulty process $p_{i}$ starts with an initial input value $v_{i} \in\{0,1\}=V$. The non-faulty processes must decide on one of those values, satisfying the following properties:

**Termination**: Every non-faulty process $i$ eventually irreversibly decides on a value $d_{i} \in\{0,1\}$ in finite time.**Agreement**: All non-faulty processes decide for the same value, i.e., no two non-faulty processes decide differently.**Validity**: If all non-faulty processes started by proposing the same initial value $v \in\{0,1\}$, then any non-faulty process in the decided state has chosen that value $v$, i.e., $d_{i}=v$ for all non-faulty processes $i$.

Note:Since the set of initial values only consists of binary values $\{0,1\}$, this kind of agreement is also called theBinary Byzantine agreement. Any algorithm that solves the Byzantine agreement for binary values can be used as a subroutine for solving the general Byzantine agreement.

According to

While only non-crashing processes are able to reach the decided state in the fail-stop model and hence every correct process decided for the same value at the end, faulty processes are able to state an incorrect decision variable at the end of the agreement process in the Byzantine failure model.

Get hands-on with 1200+ tech skills courses.