Skip to content

Latest commit

 

History

History
48 lines (37 loc) · 2.56 KB

README.md

File metadata and controls

48 lines (37 loc) · 2.56 KB

Go implementation of Fast Finality in Filecoin

Go Test codecov

This repository contains the golang implementation of the Fast Finality (F3) protocol for Filecoin as specified by FIP-0086. This protocol uses GossipPBFT consensus protocol to finalize tipsets when voted for by more than two-thirds of the storage power.

Key Features

  • Core Implementation of GossipBFT Consensus Protocol: The heart of Go-F3.
  • F3 Filecoin Integration Module: Streamlines the integration of the F3 protocol within the broader Filecoin ecosystem, specifically Lotus and other Filecoin full nodes.
  • Simulation Package: Includes a robust simulation environment with various adversary models, enabling rigorous testing of the protocol under different network conditions and attack scenarios.
  • Emulator Package: Facilitates message-by-message interaction with the GossipPBFT protocol, providing a detailed view of protocol mechanics and performance.
  • Standalone F3 Participant Implementation: A complete implementation of an F3 protocol participant, capable of operating independently within the Filecoin network.
  • Finality Certificate: Implements the generation and management of finality certificates, which cary transportable proofs of finality.
  • Finality Certificate Exchange Protocol: Features an adaptive self-configuring polling mechanism, enhancing the efficiency and reliability of certificate exchange among participants.

Status

🧪 Under Passive Testing

The implementation of Go-F3 is complete and is currently undergoing passive testing in nv23. It has also been integrated into Lotus.

Project Structure

  • blssig: BLS signature schemes.
  • certexchange: Certificate exchange mechanisms.
  • certstore: Certificate storage.
  • cmd: Command line to run a standalone F3 participant.
  • ec: Expected Consensus utilities.
  • emulator: Network emulation tools.
  • gpbft: GossipPBFT protocol implementation.
  • merkle: Merkle tree implementations.
  • sim: Simulation harness.
  • test: Test suite for various components.

License

This project is dual-licensed under the MIT and Apache 2.0 licenses. See LICENSE-APACHE and LICENSE-MIT for more details.