pub enum ExecutionWitnessMode {
Legacy,
Canonical,
}Expand description
Controls how execution witnesses are generated.
Variants§
Legacy
Produces the legacy execution witness format.
Canonical
Produces the canonical spec currently implemented in ethereum/execution-specs@projects/zkevm. The main differences with the legacy format are:
- For the
bytecodefield:- It contains only bytecodes required for execution, compared to Legacy which also contains created bytecode.
- Compared to Legacy, it does not include empty bytecodes (i.e. 0x80).
- Values are sorted lexicographically ascending.
- For the
statefield:- Avoids including empty nodes (i.e. 0x80).
- Compared to legacy, it does not include storage trie root nodes if no storage is accessed.
- It contains the minimum amount of siblings for post-state root calculation, since it does updates/insertions first and then deletions. Compared to legacy which does the post-state calculation with removals and then insertions/updates, which results in more siblings.
- Values are sorted lexicographically ascending.
Implementations§
Source§impl ExecutionWitnessMode
impl ExecutionWitnessMode
Sourcepub const fn is_canonical(self) -> bool
pub const fn is_canonical(self) -> bool
Returns true if the mode is Self::Canonical.
Trait Implementations§
Source§impl Clone for ExecutionWitnessMode
impl Clone for ExecutionWitnessMode
impl Copy for ExecutionWitnessMode
Source§impl Debug for ExecutionWitnessMode
impl Debug for ExecutionWitnessMode
Source§impl Default for ExecutionWitnessMode
impl Default for ExecutionWitnessMode
Source§impl<'de> Deserialize<'de> for ExecutionWitnessMode
Available on crate feature serde only.
impl<'de> Deserialize<'de> for ExecutionWitnessMode
Available on crate feature
serde only.Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for ExecutionWitnessMode
Source§impl PartialEq for ExecutionWitnessMode
impl PartialEq for ExecutionWitnessMode
Source§impl Serialize for ExecutionWitnessMode
Available on crate feature serde only.
impl Serialize for ExecutionWitnessMode
Available on crate feature
serde only.impl StructuralPartialEq for ExecutionWitnessMode
Auto Trait Implementations§
impl Freeze for ExecutionWitnessMode
impl RefUnwindSafe for ExecutionWitnessMode
impl Send for ExecutionWitnessMode
impl Sync for ExecutionWitnessMode
impl Unpin for ExecutionWitnessMode
impl UnsafeUnpin for ExecutionWitnessMode
impl UnwindSafe for ExecutionWitnessMode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreimpl<T> MaybeDebug for Twhere
T: Debug,
impl<T> MaybeSerde for Twhere
T: Serialize + for<'de> Deserialize<'de>,
§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 1 byte
Size for each variant:
Legacy: 0 bytesCanonical: 0 bytes