16 releases

0.1.1 Dec 18, 2024
0.1.0 May 24, 2024
0.0.1 Feb 2, 2024
0.0.1-beta6 Jan 30, 2024
0.0.1-alpha2 Aug 31, 2023

#10 in #duplex

Download history 1418/week @ 2026-02-21 822/week @ 2026-02-28 1091/week @ 2026-03-07 1475/week @ 2026-03-14 1280/week @ 2026-03-21 1402/week @ 2026-03-28 1212/week @ 2026-04-04 1265/week @ 2026-04-11 1368/week @ 2026-04-18 1666/week @ 2026-04-25 1253/week @ 2026-05-02 1242/week @ 2026-05-09 1642/week @ 2026-05-16 1667/week @ 2026-05-23 894/week @ 2026-05-30 658/week @ 2026-06-06

5,132 downloads per month

BSD-3-Clause

115KB
2K SLoC

spongefish: a duplex sponge Fiat–Shamir library 🧽🐟

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 three crates:

  • spongefish: the core library and trait implementations for arkworks/zkcrypto types together with the duplex sponge API.
  • spongefish-pow: proof‑of‑work helpers for deriving Fiat–Shamir challenges via grinding.
  • spongefish-poseidon2: Poseidon2 permutations and wrappers you can compose with the duplex sponge interface today.

Hash function can also be derived via bridges to Rust's generic Digest API, and XofReader.

More information

Check out the documentation and some examples/.

Funding

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.

NLnet foundation logo NGI Zero Logo

Dependencies

~1.1–2.4MB
~50K SLoC