starkom-poseidon 1.1.0

Starkom's implementation of the Poseidon algebraic hash.
Documentation

Poseidon

CI crates.io license

Overview

This is Starkom's implementation of the Poseidon algebraic hash.

Note that this crate uses version 1 of the permutation. For version 2 see the starkom-poseidon2 crate.

The implementation is generic and works on any prime field.

Configurations for the BLS12-381 and BlueSky prime fields are provided; they support T=3 (R=2, C=1) and T=4 (R=3, C=1).

[!NOTE] The BLS12-381 configurations are controlled by the bls12_381 feature flag, which is disabled by default.

Usage

The following example functions instantiate Poseidon 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_poseidon;

fn hash_t3(inputs: &[Scalar]) -> Scalar {
    starkom_poseidon::hash::<starkom_poseidon::bluesky::BlueSkyConfig3, Scalar, 3, 2, 1>(inputs)[0]
}

fn hash_t4(inputs: &[Scalar]) -> Scalar {
    starkom_poseidon::hash::<starkom_poseidon::bluesky::BlueSkyConfig4, Scalar, 4, 3, 1>(inputs)[0]
}