Trait sp1_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

source§

type Val = BabyBear

source§

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

source§

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

source§

type Challenge = BinomialExtensionField<BabyBear, 4>

source§

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

source§

impl StarkGenericConfig for BabyBearPoseidon2Inner

source§

type Val = BabyBear

source§

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

source§

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

source§

type Challenge = BinomialExtensionField<BabyBear, 4>

source§

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