Sponge FiSh (duplex sponge Fiat–Shamir) is a permutation-agnostic Fiat–Shamir library that believes in random oracles. It facilitates the writing of multi-round public coin protocols. It provides a generic API for generating the verifier's random coins and the prover randomness. The project is split into several crates:
spongefish: the core library and trait implementations for arkworks/zkcrypto types together with the duplex sponge API.spongefish-circuit: constraint builders for permutation-based relations.spongefish-derive: derive macros for codecs and related traits.spongefish-pow: proof‑of‑work helpers for deriving Fiat–Shamir challenges via grinding.
Hash function can also be derived via bridges to Rust's generic Digest API, and XofReader.
Check out the documentation and some examples/.
This project is funded through NGI0 Entrust, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program. Learn more at the NLnet project page.
