Skip to content

yuxqiu/mim

Repository files navigation

Mím

Mím is a research prototype for verifying committee rotation in quorum-based blockchains using folding-based SNARKs.

✨ Key Features

  • 🌀 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's FCircuit, enabling proof generation via folding schemes
  • 🌲 On-circuit and off-circuit implementation of Leveled Merkle Forests (LMFs)

🚀 Getting Started

Add Mím as a dependency in your Cargo.toml:

[dependencies]
mim = { git = "https://github.com/yuxqiu/mim", package = "sig" }

📦 Module Overview

  • bc — Abstractions for quorum-based blockchains and committee structures
  • bls — BLS signature implementation (off-circuit and on-circuit)
  • folding — Folding circuits for verifying committee rotation
  • hash — Hash-to-curve R1CS gadgets for BLS12 curves
  • merkle — Merkle tree and Leveled Merkle Forest implementations (off-circuit and on-circuit)
  • tests — Test harnesses and debug utilities, including a known issue with EmulatedFpVar causing unsatisfiable constraints

📊 Example usage and benchmarking experiments are located in sig/benches, with experiment outputs stored in exp.

📄 License

This project is licensed under the MIT License.

🙏 Acknowledgments

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.

About

Mím

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published