primitives.poseidon2#
Poseidon2 hash over BabyBear via Rust FFI.
Wraps Plonky3’s production Poseidon2BabyBear<16> permutation.
- Reference:
p3-symmetric (PaddingFreeSponge, TruncatedPermutation).
Functions#
|
Apply Poseidon2 permutation to width-16 state. |
|
Compress two 8-element digests into one. |
|
Batch compress N pairs of 8-element digests in parallel via rayon. |
|
Batch hash N variable-length inputs to 8-element digests in parallel via rayon. |
|
Hash variable-length input to 8-element digest. |
Module Contents#
- primitives.poseidon2.permute(state: list[int]) list[int][source]#
Apply Poseidon2 permutation to width-16 state.
- Args:
state: 16 BabyBear field elements.
- Returns:
Permuted 16-element state.
- primitives.poseidon2.compress(left: list[int], right: list[int]) list[int][source]#
Compress two 8-element digests into one.
TruncatedPermutation: concatenate inputs, permute, truncate to DIGEST_SIZE.
- Args:
left: First 8-element digest. right: Second 8-element digest.
- Returns:
8-element compressed digest.
- Reference:
p3-symmetric TruncatedPermutation<Perm, 2, 8, 16>
- primitives.poseidon2.compress_batch(lefts: list[list[int]], rights: list[list[int]]) list[list[int]][source]#
Batch compress N pairs of 8-element digests in parallel via rayon.
- Args:
lefts: N left digests (each 8 elements). rights: N right digests (each 8 elements).
- Returns:
N compressed 8-element digests.
- primitives.poseidon2.hash_batch(inputs: list[list[int]]) list[list[int]][source]#
Batch hash N variable-length inputs to 8-element digests in parallel via rayon.
Each input is hashed via PaddingFreeSponge (same as hash_to_digest).
- Args:
inputs: N variable-length lists of BabyBear field elements.
- Returns:
N 8-element digests.
- primitives.poseidon2.hash_to_digest(inputs: list[int]) list[int][source]#
Hash variable-length input to 8-element digest.
PaddingFreeSponge: overwrite rate portion, permute, repeat.
- Args:
inputs: Variable-length list of BabyBear field elements.
- Returns:
8-element digest.
- Reference:
p3-symmetric PaddingFreeSponge<Perm, 16, 8, 8>