Trait sp1_core::stark::StarkGenericConfig

source ·
pub trait StarkGenericConfig: 'static + Send + Sync + Serialize + DeserializeOwned + Clone {
    type Val: PrimeField;
    type Domain: PolynomialSpace<Val = Self::Val> + Sync;
    type Pcs: Pcs<Self::Challenge, Self::Challenger, Domain = Self::Domain> + Sync;
    type Challenge: ExtensionField<Self::Val>;
    type Challenger: FieldChallenger<Val<Self>> + CanObserve<<Self::Pcs as Pcs<Self::Challenge, Self::Challenger>>::Commitment> + CanSample<Self::Challenge>;

    // Required methods
    fn pcs(&self) -> &Self::Pcs;
    fn challenger(&self) -> Self::Challenger;
}

Required Associated Types§

source

type Val: PrimeField

source

type Domain: PolynomialSpace<Val = Self::Val> + Sync

source

type Pcs: Pcs<Self::Challenge, Self::Challenger, Domain = Self::Domain> + Sync

The PCS used to commit to trace polynomials.

source

type Challenge: ExtensionField<Self::Val>

The field from which most random challenges are drawn.

source

type Challenger: FieldChallenger<Val<Self>> + CanObserve<<Self::Pcs as Pcs<Self::Challenge, Self::Challenger>>::Commitment> + CanSample<Self::Challenge>

The challenger (Fiat-Shamir) implementation used.

Required Methods§

source

fn pcs(&self) -> &Self::Pcs

Get the PCS used by this configuration.

source

fn challenger(&self) -> Self::Challenger

Initialize a new challenger.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl StarkGenericConfig for BabyBearPoseidon2

§

type Val = BabyBear

§

type Domain = <TwoAdicFriPcs<BabyBear, Radix2DitParallel, FieldMerkleTreeMmcs<<BabyBear as Field>::Packing, <BabyBear as Field>::Packing, PaddingFreeSponge<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 16, 8, 8>, TruncatedPermutation<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 2, 8, 16>, 8>, ExtensionMmcs<BabyBear, BinomialExtensionField<BabyBear, 4>, FieldMerkleTreeMmcs<<BabyBear as Field>::Packing, <BabyBear as Field>::Packing, PaddingFreeSponge<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 16, 8, 8>, TruncatedPermutation<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 2, 8, 16>, 8>>> as Pcs<BinomialExtensionField<BabyBear, 4>, DuplexChallenger<BabyBear, Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 16, 8>>>::Domain

§

type Pcs = TwoAdicFriPcs<BabyBear, Radix2DitParallel, FieldMerkleTreeMmcs<<BabyBear as Field>::Packing, <BabyBear as Field>::Packing, PaddingFreeSponge<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 16, 8, 8>, TruncatedPermutation<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 2, 8, 16>, 8>, ExtensionMmcs<BabyBear, BinomialExtensionField<BabyBear, 4>, FieldMerkleTreeMmcs<<BabyBear as Field>::Packing, <BabyBear as Field>::Packing, PaddingFreeSponge<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 16, 8, 8>, TruncatedPermutation<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 2, 8, 16>, 8>>>

§

type Challenge = BinomialExtensionField<BabyBear, 4>

§

type Challenger = DuplexChallenger<BabyBear, Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 16, 8>

source§

impl StarkGenericConfig for BabyBearBlake3

source§

impl StarkGenericConfig for BabyBearKeccak

source§

impl StarkGenericConfig for BabyBearPoseidon2Inner

§

type Val = BabyBear

§

type Domain = <TwoAdicFriPcs<BabyBear, Radix2DitParallel, FieldMerkleTreeMmcs<<BabyBear as Field>::Packing, <BabyBear as Field>::Packing, PaddingFreeSponge<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 16, 8, 8>, TruncatedPermutation<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 2, 8, 16>, 8>, ExtensionMmcs<BabyBear, BinomialExtensionField<BabyBear, 4>, FieldMerkleTreeMmcs<<BabyBear as Field>::Packing, <BabyBear as Field>::Packing, PaddingFreeSponge<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 16, 8, 8>, TruncatedPermutation<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 2, 8, 16>, 8>>> as Pcs<BinomialExtensionField<BabyBear, 4>, DuplexChallenger<BabyBear, Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 16, 8>>>::Domain

§

type Pcs = TwoAdicFriPcs<BabyBear, Radix2DitParallel, FieldMerkleTreeMmcs<<BabyBear as Field>::Packing, <BabyBear as Field>::Packing, PaddingFreeSponge<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 16, 8, 8>, TruncatedPermutation<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 2, 8, 16>, 8>, ExtensionMmcs<BabyBear, BinomialExtensionField<BabyBear, 4>, FieldMerkleTreeMmcs<<BabyBear as Field>::Packing, <BabyBear as Field>::Packing, PaddingFreeSponge<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 16, 8, 8>, TruncatedPermutation<Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 2, 8, 16>, 8>>>

§

type Challenge = BinomialExtensionField<BabyBear, 4>

§

type Challenger = DuplexChallenger<BabyBear, Poseidon2<BabyBear, Poseidon2ExternalMatrixGeneral, DiffusionMatrixBabyBear, 16, 7>, 16, 8>