For additional introductory details, please read our Direction document first.
See our Summary Roadmap here.
Functional Compatibility between Halo2 and Groth16 is achieved when we have all existing Filecoin circuits ported to the new proving system, existing in parallel with our Groth16 proving system. Toward this goal, FilCrypto will have several major dependencies wired for Halo2 support. These include GPU support (either using our native ec-gpu library, or potentially Sppark, which supports a subset of required functionality), integration with Neptune (our Poseidon hashing library), improved Sha256 support (specific to the Halo2 in circuit implementation) and our Halo2 keystore management (parameters, proving and verifying keys, etc).
With all of the main Halo2 tooling and functionality under the hood, we will continue to address both Halo2 circuit optimizations as well as potential Protocol optimizations using the recursive circuit features. This step will allow us to properly assess the initial impact and performance benefits of the new proving system, as well as begin the FIP writing process for introducing the changes. Some design and evaluation remains before this crucial proposal step can begin, and we anticipate it will take some time to be evaluated by the community. At this stage, external APIs will be finalized and we can begin a formal internal audit, followed by an external code audit.
By the end of Q2 we plan to have the finalized FIP(s) and the implementation at production quality. Final testing and performance gathering (including proof recursion) will occur and audit concerns (if any) will be addressed. Integration into Lotus will begin and ideally performance gathering on that side will match results across the board. We intend to work with the Lotus team to schedule the network upgrade either near the end of Q2 or (more likely) in Q3, depending on other network factors and developments.
Post Halo2 launch, we will monitor the network and consider additional circuit optimizations or additional circuit proposals (in coordination with CryptoNetLab). Some ongoing research is finding ways to prove the chain’s state to a particular point in a single proof (e.g. snapshotting/bootstrapping initial sync), and investigating ways to more easily allow Smart Contracts to prove arbitrary things via Halo2, possibly utilizing a system such as Lurk.