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.
- 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.
🧪 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.
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.
This project is dual-licensed under the MIT and Apache 2.0 licenses. See LICENSE-APACHE and LICENSE-MIT for more details.