Skip to content

Latest commit

 

History

History
114 lines (102 loc) · 6.94 KB

artefact-evaluation-guide.md

File metadata and controls

114 lines (102 loc) · 6.94 KB

Artefact Evaluation Guide

DOI

This document is adapted from the original README file accompanying the research artefact for the paper Compositional Verification of Composite Byzantine Protocols accepted to the 31st ACM Conference on Computer and Communications Security (CCS 2024).

Getting Started

To get started, you will need to first compile the whole project, and then do a test run of the extracted OCaml implementation. Check INSTALL.md for details.

Recommended Order of Artefact Evaluation

We recommend starting by reviewing the implementations of the case study protocols, and then checking their safety and liveness specifications. During this process, sometimes it may help to refer to the code belonging to the Bythos framework. For information on file organisation and the mapping between paper sections and code, please see the sections below.

After reviewing the Coq formalisations, We recommend trying to run the extracted protocols and observing the nodes' behaviour in different scenarios. For details, please refer to the Extraction/ directory and its scripts/ subdirectory.

Organisation

For reference, we present the file organisation of the entire project, along with brief explanations of the contents of each directory and file. The directories are listed in dependency order (below depends on above).

  • Utils/: Utility files, including a small extension of CoqTLA and other non-specific lemmas, definitions and tactics
  • Structures/: Formalisation of datatypes
    • Address.v: Axiomatisation of the address type, and some instantiations
    • Types.v: Axiomatisations of commonly used datatypes, and some instantiations (the former half being about cryptographic primitives, while the latter half being about messages, packets and others)
  • Systems/: Formalisation of generic distributed systems with Byzantine fault model
    • Protocol.v: Axiomatisation of Byzantine distributed protocols
    • States.v: Definitions related to system state and packet soup
    • Network.v: Definition of system semantics and some generic lemmas about it
  • Properties/: Useful tools for helping prove safety and liveness specifications for given protocols
  • Composition/: Definitions of sequentially composed protocols that build on top of sub-protocols, and lemmas for deriving properties of the composed protocol from those of sub-protocols
  • Protocols/: Formalized protocols and proofs about their specifications
  • Extraction/: Toolset for extracting protocols defined in Coq, and running their extracted OCaml implementation

Each formalised protocol has a corresponding directory in Protocols/, which typically contains the following files:

  • Types.v: Definitions and instantiations of datatypes used by the protocol
  • Protocol.v: Instantiation of the protocol
  • Network.v: Instantiation of the byzConstraint for the protocol, and the system semantics instantiated by the protocol
  • Invariant.v: Proofs of knowledge lemmas
  • Safety.v: Proofs of safety specifications
  • Liveness.v: Proofs of liveness specifications, in a form more primitive than the TLA-style ones
  • Liveness_tla.v: Proofs of TLA-style liveness specifications

Paper-Code Mapping

For reference, we indicate the source files along with the definitions in them related to each section of the paper.

  1. Introduction
  2. Overview
  3. Bythos Under the Hood
  4. More Case Studies
  5. Related Work