Mím is a research prototype for verifying committee rotation in quorum-based blockchains using folding-based SNARKs.
- RFC9380-compliant hash-to-curve implementation for BLS12 curves in the
arkworksR1CS framework - R1CS circuit for verifying BLS signatures, supporting both native and emulated fields
- Integration with
sonobe'sFCircuit, enabling proof generation via folding schemes - On-circuit and off-circuit implementation of Leveled Merkle Forests (LMFs)
Add Mím as a dependency in your Cargo.toml:
[dependencies]
mim = { git = "https://github.com/yuxqiu/mim", package = "sig" }bc— Abstractions for quorum-based blockchains and committee structuresbls— BLS signature implementation (off-circuit and on-circuit)folding— Folding circuits for verifying committee rotationhash— Hash-to-curve R1CS gadgets for BLS12 curvesmerkle— Merkle tree and Leveled Merkle Forest implementations (off-circuit and on-circuit)tests— Test harnesses and debug utilities, including a known issue withEmulatedFpVarcausing unsatisfiable constraints
Example usage and benchmarking experiments are located in sig/benches, with experiment outputs stored in exp.
This project is licensed under the MIT License.
This work builds on the excellent libraries developed by:
Special thanks to Philipp Jovanovic and Alberto Sonnino for their insightful discussions and valuable feedback during development.