starkom-poseidon 1.0.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.

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]
}