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>
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>
Source§fn config(&self) -> &GoldilocksPermutationConfig<P>
fn config(&self) -> &GoldilocksPermutationConfig<P>
Stark config
Source§fn max_constraint_degree(&self) -> Option<usize>
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>
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.
fn keygen_builder(&self) -> MultiStarkKeygenBuilder<'_, SC>
fn prover<'a>(&'a self) -> Coordinator<SC, CpuBackend<SC>, CpuDevice<'a, SC>>where
Self: 'a,
fn verifier(&self) -> MultiTraceStarkVerifier<'_, SC>
Source§fn set_up_keygen_builder(
&self,
keygen_builder: &mut MultiStarkKeygenBuilder<'_, SC>,
airs: &[Arc<dyn AnyRap<SC>>],
) -> Vec<usize>
fn set_up_keygen_builder( &self, keygen_builder: &mut MultiStarkKeygenBuilder<'_, SC>, airs: &[Arc<dyn AnyRap<SC>>], ) -> Vec<usize>
Add AIRs and get AIR IDs
fn prove_then_verify( &self, mpk: &MultiStarkProvingKey<SC>, proof_input: ProofInput<SC>, ) -> Result<(), VerificationError>
fn prove( &self, mpk: &MultiStarkProvingKey<SC>, proof_input: ProofInput<SC>, ) -> Proof<SC>
fn verify( &self, vk: &MultiStarkVerifyingKey<SC>, proof: &Proof<SC>, ) -> Result<(), VerificationError>
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>
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.