sp1_stark

Trait 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 + ZeroCommitment<Self>;
    type Challenge: ExtensionField<Self::Val>;
    type Challenger: FieldChallenger<Val<Self>> + CanObserve<<Self::Pcs as Pcs<Self::Challenge, Self::Challenger>>::Commitment> + CanSample<Self::Challenge> + Serialize + DeserializeOwned;

    // 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 + ZeroCommitment<Self>

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> + Serialize + DeserializeOwned

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.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so 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, DIGEST_SIZE>, 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, DIGEST_SIZE>, 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, DIGEST_SIZE>, 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, DIGEST_SIZE>, 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, DIGEST_SIZE>, 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, DIGEST_SIZE>, 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, DIGEST_SIZE>, 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, DIGEST_SIZE>, 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>