This repository contains:
poseidon377
: an instantiation of the Poseidon hash function fordecaf377
poseidon-paramgen
: an independent implementation of Poseidon parameter generationposeidon-parameters
: types that represent Poseidon parametersposeidon-permutation
: an independent implementation of the Poseidon permutationposeidon-consistency
: property-based tests for consistency between Poseidon implementationsposeidon-tests
: test vectors forposeidon-parameters
andposeidon377
poseidon-paramgen
was audited by NCC Group in Summer 2022.
Note that the audit covered only the parameter generation described in the original Poseidon paper. The Poseidon2 parameter
generation is not yet audited.
Run criterion
benchmarks using:
cargo bench
This will generate a report at target/criterion/report/index.html
.
Performance benchmarked on commit 9750f5ff01d11f158f111a1a75401901049e5575 on a 2023 Macbook Pro M2 (12 core CPU) with 32 GB memory using our 4-to-1 optimized poseidon hash takes 47.3µs, or ~21,141 hashes/second.
There is a test utility that will generate the proving and verifying keys for the R1CS tests. These keys are pre-generated to guard against breaking changes to the circuits (e.g. when upgrading Arkworks dependencies).
cargo test generate_test_vectors -- --ignored