Expand description
§Poseidon2
§Overview
This is Starkom’s implementation of the Poseidon2 algebraic hash.
This crate uses version 2 of the permutation. For version 1 see the
starkom-poseidon crate.
The implementation is generic and works on any prime field.
Configurations for the BLS12-381, Goldilocks, and BlueSky prime fields are provided; the BLS12-381 and BlueSky configurations support T=3 and T=4, while the Goldilocks configurations support T=12 and T=16.
[!NOTE] All predefined configurations are gated behind feature flags to avoid including all constants in all builds. The currently defined feature flags are
bls12_381,goldilocks, andbluesky, all disabled by default.
§Usage
The following example functions instantiate Poseidon2 with T=3 and T=4 respectively, squeezing a single element from the output. Both use a single element for capacity.
use starkom_bluesky::Scalar;
use starkom_poseidon2;
fn hash_t3(inputs: impl IntoIterator<Item = Scalar>) -> Scalar {
starkom_poseidon2::hash::<starkom_poseidon2::bluesky::BlueSkyConfig3, Scalar, 3, 2, 1>(inputs)[0]
}
fn hash_t4(inputs: impl IntoIterator<Item = Scalar>) -> Scalar {
starkom_poseidon2::hash::<starkom_poseidon2::bluesky::BlueSkyConfig4, Scalar, 4, 3, 1>(inputs)[0]
}Re-exports§
pub use bluesky::*;pub use bls12_381::*;pub use goldilocks::*;
Modules§
Structs§
- Decryptor
- Decrypts an arbitrary number of field elements in batches of
Rusing the Poseidon permutation with state sizeT. - Encryptor
- Encrypts an arbitrary number of field elements in batches of
Rusing the Poseidon permutation with state sizeT.
Traits§
- Config
- Poseidon2 instance configuration trait.
Functions§
- hash
- Generic Poseidon2 implementation over the prime field
Fwith state sizeT. - hash0
- Convenience function for hashing with Poseidon2 and squeezing the first element.
- permutation
- Runs the Poseidon2 permutation.
- sbox5
- Standard x^5 S-box.