Skip to content

Golang implementation of Fast Finality in Filecoin (F3)

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

filecoin-project/go-f3

Repository files navigation

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.