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
arkworks
R1CS 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 withEmulatedFpVar
causing 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.