One of the fundamental problems of distributed computing that tolerates errors is the problem of the Byzantine agreement. The Byzantine agreement requires a group of parties to agree on a value in a dispersed environment, even if some of the parties are corrupt. We consider the randomized Byzantine Mousing protocol ABBA (Asynchronous Binary Byzantine Agreement) of Cachin, Kursawe and Shoup [CKS00], which is placed in a completely asynchronous environment that allows the maximum number of corrupted parts and uses cryptography and randomization. There are n parties, an opponent who cannot corrupt as many of them as much as possible (t < n/3) and a trusted dealer. Parties can go through an unlimited number of rounds: in each round, they try to agree by voting on the basis of the votes of other parties. The aim is to automate the analysis of the ABBA protocol using the methodology established in our previous paper [KNS01a] on the basis of [MQS00]. In [KNS01a], we used Cadence SMV and probabilistic model tester PRISM to test the simpler randomised MOU for Aspnes and Herlihy [AH90] which only tolerates benign shutdown errors. We achieved this through a combination of mechanical inductive proofs (for all n for non-probabilistic properties) and tests (on finished configurations with probabilistic properties) and high-quality manual proof. However, the ABBA protocol presented us with a number of difficulties that were not encountered earlier: the Byzantine agreement is a classic problem that focuses on a single piece of data in a network of n-Displaystyle n players, whose t-Displaystyle-T players may be defective.
Each player starts with a bit b i display b_ and the goal is for all non-defective players to emit the same bit of displaystyle (Accord), limiting that d`b i `displaystyle` b_`i` is for a node i `displaystyle i` (validity). The difficulty of this task depends on the error model of the defective players. In a Byzantine agreement, defective players can behave at will (including active protocol break, collusion, etc.). The Byzantine agreement is an important problem in conventional distributed systems, which are used to ensure consistency between distributed data structures. In the Byzantine setting, node defects are modeled as Byzantine errors. In this error model, missing nodes can behave at will, including the malicious attempt to prevent defective nodes from reaching an agreement. In particular, missing nodes may collide. A Byzantine contract protocol is formally defined to meet the criteria of agreement, validity and termination. The agreement simply requires that each non-defective player spend the same bit.
Validity excludes the trivial solution of always pronouncing a specific bit by requiring that the value of the contract be offered at least once.