pub type NonRootCommittedExe = VmCommittedExe<SC>;
Aliased Type§
struct NonRootCommittedExe {
pub exe: VmExe<MontyField31<BabyBearParameters>>,
pub committed_program: CommittedTraceData<StarkConfig<TwoAdicFriPcs<MontyField31<BabyBearParameters>, Radix2DitParallel<MontyField31<BabyBearParameters>>, MerkleTreeMmcs<PackedMontyField31Neon<BabyBearParameters>, PackedMontyField31Neon<BabyBearParameters>, PaddingFreeSponge<Poseidon2<PackedMontyField31Neon<BabyBearParameters>, Poseidon2ExternalLayerMonty31<BabyBearParameters, 16>, Poseidon2InternalLayerMonty31<BabyBearParameters, 16, BabyBearInternalLayerParameters>, 16, 7>, 16, 8, 8>, TruncatedPermutation<Poseidon2<PackedMontyField31Neon<BabyBearParameters>, Poseidon2ExternalLayerMonty31<BabyBearParameters, 16>, Poseidon2InternalLayerMonty31<BabyBearParameters, 16, BabyBearInternalLayerParameters>, 16, 7>, 2, 8, 16>, 8>, ExtensionMmcs<MontyField31<BabyBearParameters>, BinomialExtensionField<MontyField31<BabyBearParameters>, 4>, MerkleTreeMmcs<PackedMontyField31Neon<BabyBearParameters>, PackedMontyField31Neon<BabyBearParameters>, PaddingFreeSponge<Poseidon2<PackedMontyField31Neon<BabyBearParameters>, Poseidon2ExternalLayerMonty31<BabyBearParameters, 16>, Poseidon2InternalLayerMonty31<BabyBearParameters, 16, BabyBearInternalLayerParameters>, 16, 7>, 16, 8, 8>, TruncatedPermutation<Poseidon2<PackedMontyField31Neon<BabyBearParameters>, Poseidon2ExternalLayerMonty31<BabyBearParameters, 16>, Poseidon2InternalLayerMonty31<BabyBearParameters, 16, BabyBearInternalLayerParameters>, 16, 7>, 2, 8, 16>, 8>>>, FriLogUpPhase<MontyField31<BabyBearParameters>, BinomialExtensionField<MontyField31<BabyBearParameters>, 4>, DuplexChallenger<MontyField31<BabyBearParameters>, Poseidon2<PackedMontyField31Neon<BabyBearParameters>, Poseidon2ExternalLayerMonty31<BabyBearParameters, 16>, Poseidon2InternalLayerMonty31<BabyBearParameters, 16, BabyBearInternalLayerParameters>, 16, 7>, 16, 8>>, BinomialExtensionField<MontyField31<BabyBearParameters>, 4>, DuplexChallenger<MontyField31<BabyBearParameters>, Poseidon2<PackedMontyField31Neon<BabyBearParameters>, Poseidon2ExternalLayerMonty31<BabyBearParameters, 16>, Poseidon2InternalLayerMonty31<BabyBearParameters, 16, BabyBearInternalLayerParameters>, 16, 7>, 16, 8>>>,
}
Fields§
§exe: VmExe<MontyField31<BabyBearParameters>>
Raw executable.
committed_program: CommittedTraceData<StarkConfig<TwoAdicFriPcs<MontyField31<BabyBearParameters>, Radix2DitParallel<MontyField31<BabyBearParameters>>, MerkleTreeMmcs<PackedMontyField31Neon<BabyBearParameters>, PackedMontyField31Neon<BabyBearParameters>, PaddingFreeSponge<Poseidon2<PackedMontyField31Neon<BabyBearParameters>, Poseidon2ExternalLayerMonty31<BabyBearParameters, 16>, Poseidon2InternalLayerMonty31<BabyBearParameters, 16, BabyBearInternalLayerParameters>, 16, 7>, 16, 8, 8>, TruncatedPermutation<Poseidon2<PackedMontyField31Neon<BabyBearParameters>, Poseidon2ExternalLayerMonty31<BabyBearParameters, 16>, Poseidon2InternalLayerMonty31<BabyBearParameters, 16, BabyBearInternalLayerParameters>, 16, 7>, 2, 8, 16>, 8>, ExtensionMmcs<MontyField31<BabyBearParameters>, BinomialExtensionField<MontyField31<BabyBearParameters>, 4>, MerkleTreeMmcs<PackedMontyField31Neon<BabyBearParameters>, PackedMontyField31Neon<BabyBearParameters>, PaddingFreeSponge<Poseidon2<PackedMontyField31Neon<BabyBearParameters>, Poseidon2ExternalLayerMonty31<BabyBearParameters, 16>, Poseidon2InternalLayerMonty31<BabyBearParameters, 16, BabyBearInternalLayerParameters>, 16, 7>, 16, 8, 8>, TruncatedPermutation<Poseidon2<PackedMontyField31Neon<BabyBearParameters>, Poseidon2ExternalLayerMonty31<BabyBearParameters, 16>, Poseidon2InternalLayerMonty31<BabyBearParameters, 16, BabyBearInternalLayerParameters>, 16, 7>, 2, 8, 16>, 8>>>, FriLogUpPhase<MontyField31<BabyBearParameters>, BinomialExtensionField<MontyField31<BabyBearParameters>, 4>, DuplexChallenger<MontyField31<BabyBearParameters>, Poseidon2<PackedMontyField31Neon<BabyBearParameters>, Poseidon2ExternalLayerMonty31<BabyBearParameters, 16>, Poseidon2InternalLayerMonty31<BabyBearParameters, 16, BabyBearInternalLayerParameters>, 16, 7>, 16, 8>>, BinomialExtensionField<MontyField31<BabyBearParameters>, 4>, DuplexChallenger<MontyField31<BabyBearParameters>, Poseidon2<PackedMontyField31Neon<BabyBearParameters>, Poseidon2ExternalLayerMonty31<BabyBearParameters, 16>, Poseidon2InternalLayerMonty31<BabyBearParameters, 16, BabyBearInternalLayerParameters>, 16, 7>, 16, 8>>>
Committed program trace.
Implementations
Source§impl<SC> VmCommittedExe<SC>where
SC: StarkGenericConfig,
<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val: PrimeField32,
impl<SC> VmCommittedExe<SC>where
SC: StarkGenericConfig,
<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val: PrimeField32,
Sourcepub fn commit(
exe: VmExe<<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val>,
pcs: &<SC as StarkGenericConfig>::Pcs,
) -> VmCommittedExe<SC>
pub fn commit( exe: VmExe<<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val>, pcs: &<SC as StarkGenericConfig>::Pcs, ) -> VmCommittedExe<SC>
Creates VmCommittedExe from VmExe by using pcs
to commit to the
program code as a cached trace matrix.
pub fn get_program_commit( &self, ) -> <<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Commitment
Sourcepub fn compute_exe_commit(
&self,
memory_config: &MemoryConfig,
) -> <<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Commitmentwhere
<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Commitment: AsRef<[<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val; 8]> + From<[<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val; 8]>,
pub fn compute_exe_commit(
&self,
memory_config: &MemoryConfig,
) -> <<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Commitmentwhere
<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Commitment: AsRef<[<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val; 8]> + From<[<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val; 8]>,
Computes a commitment to VmCommittedExe. This is a Merklelized hash of:
- Program code commitment (commitment of the cached trace)
- Merkle root of the initial memory
- Starting program counter (
pc_start
)
The program code commitment is itself a commitment (via the proof system PCS) to the program code.
The Merklelization uses Poseidon2 as a cryptographic hash function (for the leaves) and a cryptographic compression function (for internal nodes).
Note: This function recomputes the Merkle tree for the initial memory image.
Trait Implementations
Source§impl<SC> Clone for VmCommittedExe<SC>where
SC: StarkGenericConfig,
<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Commitment: Clone,
impl<SC> Clone for VmCommittedExe<SC>where
SC: StarkGenericConfig,
<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Commitment: Clone,
Source§fn clone(&self) -> VmCommittedExe<SC>
fn clone(&self) -> VmCommittedExe<SC>
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<'de, SC> Deserialize<'de> for VmCommittedExe<SC>where
SC: StarkGenericConfig,
VmExe<<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val>: Deserialize<'de>,
CommittedTraceData<SC>: Deserialize<'de>,
impl<'de, SC> Deserialize<'de> for VmCommittedExe<SC>where
SC: StarkGenericConfig,
VmExe<<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val>: Deserialize<'de>,
CommittedTraceData<SC>: Deserialize<'de>,
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<VmCommittedExe<SC>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<VmCommittedExe<SC>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<SC> Serialize for VmCommittedExe<SC>where
SC: StarkGenericConfig,
VmExe<<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val>: Serialize,
CommittedTraceData<SC>: Serialize,
impl<SC> Serialize for VmCommittedExe<SC>where
SC: StarkGenericConfig,
VmExe<<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val>: Serialize,
CommittedTraceData<SC>: Serialize,
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more