Table of Contents
Fetching ...

Verifying the Hashgraph Consensus Algorithm

Karl Crary

TL;DR

This paper discusses the experience formalizing the Hashgraph algorithm and its correctness proof using the Rocq proof assistant, and includes a complete discussion of the algorithm and its correctness argument in English.

Abstract

The Hashgraph consensus algorithm is an algorithm for asynchronous Byzantine fault tolerance intended for distributed shared ledgers. Its main distinguishing characteristic is it achieves consensus without exchanging any extra messages; each participant's votes can be determined from public information, so votes need not be transmitted. In this paper, we discuss our experience formalizing the Hashgraph algorithm and its correctness proof using the Rocq proof assistant. The paper is self-contained; it includes a complete discussion of the algorithm and its correctness argument in English.

Verifying the Hashgraph Consensus Algorithm

TL;DR

This paper discusses the experience formalizing the Hashgraph algorithm and its correctness proof using the Rocq proof assistant, and includes a complete discussion of the algorithm and its correctness argument in English.

Abstract

The Hashgraph consensus algorithm is an algorithm for asynchronous Byzantine fault tolerance intended for distributed shared ledgers. Its main distinguishing characteristic is it achieves consensus without exchanging any extra messages; each participant's votes can be determined from public information, so votes need not be transmitted. In this paper, we discuss our experience formalizing the Hashgraph algorithm and its correctness proof using the Rocq proof assistant. The paper is self-contained; it includes a complete discussion of the algorithm and its correctness argument in English.

Paper Structure

This paper contains 20 sections, 14 theorems, 1 figure.

Key Result

Lemma 2.2

Figures (1)

  • Figure 1: A Hashgraph

Theorems & Definitions (20)

  • Definition 2.1
  • Lemma 2.2
  • Lemma 2.3: Strongly Seeing
  • Lemma 2.4
  • Lemma 2.5
  • Lemma 2.6: Broadcast
  • Lemma 2.7: Progress
  • Definition 2.8: Voting
  • Definition 2.9: Decision
  • Lemma 2.10: Decision-Vote Consistency
  • ...and 10 more