Type Alias GoldilocksPoseidonEngine

Source
pub type GoldilocksPoseidonEngine = GoldilocksPermutationEngine<Poseidon<Goldilocks, MdsMatrixGoldilocks, WIDTH, 7>>;

Aliased Type§

struct GoldilocksPoseidonEngine {
    pub config: StarkConfig<TwoAdicFriPcs<Goldilocks, Radix2DitParallel<Goldilocks>, MerkleTreeMmcs<Goldilocks, Goldilocks, PaddingFreeSponge<Poseidon<Goldilocks, MdsMatrixGoldilocks, 8, 7>, 8, 4, 4>, TruncatedPermutation<Poseidon<Goldilocks, MdsMatrixGoldilocks, 8, 7>, 2, 4, 8>, 4>, ExtensionMmcs<Goldilocks, BinomialExtensionField<Goldilocks, 2>, MerkleTreeMmcs<Goldilocks, Goldilocks, PaddingFreeSponge<Poseidon<Goldilocks, MdsMatrixGoldilocks, 8, 7>, 8, 4, 4>, TruncatedPermutation<Poseidon<Goldilocks, MdsMatrixGoldilocks, 8, 7>, 2, 4, 8>, 4>>>, FriLogUpPhase<Goldilocks, BinomialExtensionField<Goldilocks, 2>, DuplexChallenger<Goldilocks, Poseidon<Goldilocks, MdsMatrixGoldilocks, 8, 7>, 8, 4>>, BinomialExtensionField<Goldilocks, 2>, DuplexChallenger<Goldilocks, Poseidon<Goldilocks, MdsMatrixGoldilocks, 8, 7>, 8, 4>>,
    pub perm: Poseidon<Goldilocks, MdsMatrixGoldilocks, 8, 7>,
    pub max_constraint_degree: usize,
    /* private fields */
}

Fields§

§config: StarkConfig<TwoAdicFriPcs<Goldilocks, Radix2DitParallel<Goldilocks>, MerkleTreeMmcs<Goldilocks, Goldilocks, PaddingFreeSponge<Poseidon<Goldilocks, MdsMatrixGoldilocks, 8, 7>, 8, 4, 4>, TruncatedPermutation<Poseidon<Goldilocks, MdsMatrixGoldilocks, 8, 7>, 2, 4, 8>, 4>, ExtensionMmcs<Goldilocks, BinomialExtensionField<Goldilocks, 2>, MerkleTreeMmcs<Goldilocks, Goldilocks, PaddingFreeSponge<Poseidon<Goldilocks, MdsMatrixGoldilocks, 8, 7>, 8, 4, 4>, TruncatedPermutation<Poseidon<Goldilocks, MdsMatrixGoldilocks, 8, 7>, 2, 4, 8>, 4>>>, FriLogUpPhase<Goldilocks, BinomialExtensionField<Goldilocks, 2>, DuplexChallenger<Goldilocks, Poseidon<Goldilocks, MdsMatrixGoldilocks, 8, 7>, 8, 4>>, BinomialExtensionField<Goldilocks, 2>, DuplexChallenger<Goldilocks, Poseidon<Goldilocks, MdsMatrixGoldilocks, 8, 7>, 8, 4>>§perm: Poseidon<Goldilocks, MdsMatrixGoldilocks, 8, 7>§max_constraint_degree: usize

Trait Implementations

Source§

impl<P> StarkEngine<StarkConfig<TwoAdicFriPcs<Goldilocks, Radix2DitParallel<Goldilocks>, MerkleTreeMmcs<<Goldilocks as Field>::Packing, <Goldilocks as Field>::Packing, PaddingFreeSponge<P, WIDTH, RATE, DIGEST_WIDTH>, TruncatedPermutation<P, 2, DIGEST_WIDTH, WIDTH>, DIGEST_WIDTH>, ExtensionMmcs<Goldilocks, BinomialExtensionField<Goldilocks, 2>, MerkleTreeMmcs<<Goldilocks as Field>::Packing, <Goldilocks as Field>::Packing, PaddingFreeSponge<P, WIDTH, RATE, DIGEST_WIDTH>, TruncatedPermutation<P, 2, DIGEST_WIDTH, WIDTH>, DIGEST_WIDTH>>>, FriLogUpPhase<Goldilocks, BinomialExtensionField<Goldilocks, 2>, DuplexChallenger<Goldilocks, P, WIDTH, RATE>>, BinomialExtensionField<Goldilocks, 2>, DuplexChallenger<Goldilocks, P, WIDTH, RATE>>> for GoldilocksPermutationEngine<P>
where P: CryptographicPermutation<[Goldilocks; 8]> + CryptographicPermutation<[<Goldilocks as Field>::Packing; 8]> + Clone,

Source§

fn config(&self) -> &GoldilocksPermutationConfig<P>

Stark config
Source§

fn max_constraint_degree(&self) -> Option<usize>

During keygen, the circuit may be optimized but it will try to keep the constraint degree at most this value.
Source§

fn new_challenger(&self) -> Challenger<P>

Creates a new challenger with a deterministic state. Creating new challenger for prover and verifier separately will result in them having the same starting state.
Source§

fn keygen_builder(&self) -> MultiStarkKeygenBuilder<'_, SC>

Source§

fn prover<'a>(&'a self) -> Coordinator<SC, CpuBackend<SC>, CpuDevice<'a, SC>>
where Self: 'a,

Source§

fn verifier(&self) -> MultiTraceStarkVerifier<'_, SC>

Source§

fn set_up_keygen_builder( &self, keygen_builder: &mut MultiStarkKeygenBuilder<'_, SC>, airs: &[Arc<dyn AnyRap<SC>>], ) -> Vec<usize>

Add AIRs and get AIR IDs
Source§

fn prove_then_verify( &self, mpk: &MultiStarkProvingKey<SC>, proof_input: ProofInput<SC>, ) -> Result<(), VerificationError>

Source§

fn prove( &self, mpk: &MultiStarkProvingKey<SC>, proof_input: ProofInput<SC>, ) -> Proof<SC>

Source§

fn verify( &self, vk: &MultiStarkVerifyingKey<SC>, proof: &Proof<SC>, ) -> Result<(), VerificationError>

Source§

fn debug( &self, airs: &[Arc<dyn AnyRap<SC>>], pk: &[StarkProvingKey<SC>], proof_inputs: &[AirProofInput<SC>], )

Source§

fn run_test_impl( &self, airs: Vec<Arc<dyn AnyRap<SC>>>, air_proof_inputs: Vec<AirProofInput<SC>>, ) -> Result<VerificationData<SC>, VerificationError>

Runs a single end-to-end test for a given set of chips and traces partitions. This includes proving/verifying key generation, creating a proof, and verifying the proof.