rust-poseidon-bn254-rv32im

Self-contained, pure Rust implementation of Poseidon and Poseidon2 hash functions over the BN254 curve's scalar field, using 32 bit limbs internally.

It's intended to be used on 32-bit platforms eg. 32-bit RISC-V (though porting to 64 bits shouldn't be a big effort).

The algebra implementation is based on zikkurat-algebra and staging-agda.

TODO

  • optimize squaring to use less multiplication
  • benchmark RISC-V cycles
  • add a 64 bit version
  • add more Poseidon2 state widths than t=3
  • implement circomlib-compatible Poseidon
  • further optimizations
Description
Self-contained Rust implementation of Poseidon hashes over BN254
Readme
Languages
Haskell 46.4%
Circom 43.9%
Rust 9.1%
Sage 0.6%