Reference implementation of the Poseidon hash algorithm optimized for zero-knowledge proofs on the bls12-381 elliptic curve.
Dusk-Poseidon is a Rust implementation of the Poseidon hash algorithm optimized for zero-knowledge proof systems. It provides both native hashing operations on bls12-381 field elements and circuit gadget constructions for generating hashes within zero-knowledge proofs. The library implements the Hades permutation and SAFE sponge framework to create efficient, SNARK-friendly cryptographic hashes.
Cryptography engineers and zero-knowledge proof developers working with the bls12-381 elliptic curve who need efficient, SNARK-friendly hashing for applications like Merkle trees, commitment schemes, and proof systems.
Developers choose Dusk-Poseidon because it's a battle-tested reference implementation specifically optimized for zero-knowledge proof workflows, offering both native performance and circuit compatibility with proper domain separation for different use cases.
Reference implementation for the Poseidon Snark-friendly Hash algorithm.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Operates directly on BlsScalar values from the dusk_bls12_381 crate, enabling efficient cryptographic hashing without field conversions, as demonstrated in the example code using BlsScalar::random.
Provides hashing functionalities that build zero-knowledge proof circuits, allowing seamless use in ZK systems, which is explicitly mentioned as one of the two core hashing techniques.
Supports multiple hash domains like Domain::Merkle4 for Merkle trees with specific arities, enabling versatile and secure application in different cryptographic contexts.
Implements the secure SAFE framework for sponge-based hashing, as referenced in the README, enhancing correctness and performance for zero-knowledge proof systems.
Exclusively tied to the bls12-381 elliptic curve, making it incompatible with projects using other cryptographic curves or fields, which restricts its general utility.
As a specialized library focused on ZK proofs, it has a smaller community and fewer third-party integrations compared to broader hashing libraries, potentially limiting support and resources.
Running benchmarks requires enabling specific features like 'zk' and 'encryption' with cargo flags, adding setup complexity for performance evaluation and testing.