PrecompileTranscript

Struct PrecompileTranscript 

Source
pub struct PrecompileTranscript { /* private fields */ }
Expand description

Precompile transcript implemented with an RPO256 sponge.

§Structure

Standard RPO256 sponge: 12 elements = capacity (4 elements) + rate (8 elements)

§Operation

  • Record: Each precompile commitment is recorded by absorbing it into the rate, updating the capacity
  • State: The evolving capacity tracks all absorbed commitments in order
  • Finalization: Squeeze with zero rate to extract a transcript digest (the sequential commitment)

§Implementation Note

We store only the 4-element capacity portion between absorptions since since the rate is always overwritten when absorbing blocks that are a multiple of the rate width.

Implementations§

Source§

impl PrecompileTranscript

Source

pub fn new() -> Self

Creates a new sponge with zero capacity.

Source

pub fn from_state(state: PrecompileTranscriptState) -> Self

Creates a transcript from an existing state (for VM operations like log_precompile).

Source

pub fn state(&self) -> PrecompileTranscriptState

Returns the current transcript state (capacity word).

Source

pub fn record(&mut self, commitment: PrecompileCommitment)

Records a precompile commitment into the transcript, updating the state.

Source

pub fn finalize(self) -> PrecompileTranscriptDigest

Finalizes the transcript to a digest (sequential commitment to all recorded requests).

§Details

The output is equivalent to the sequential hash of all PrecompileCommitments, followed by two empty words. This is because

  • Each commitment is represented as two words, a multiple of the rate.
  • The initial capacity is set to the zero word since we absord full double words when calling record or finalize.

Trait Implementations§

Source§

impl Clone for PrecompileTranscript

Source§

fn clone(&self) -> PrecompileTranscript

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PrecompileTranscript

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for PrecompileTranscript

Source§

fn default() -> PrecompileTranscript

Returns the “default value” for a type. Read more
Source§

impl PartialEq for PrecompileTranscript

Source§

fn eq(&self, other: &PrecompileTranscript) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for PrecompileTranscript

Source§

impl Eq for PrecompileTranscript

Source§

impl StructuralPartialEq for PrecompileTranscript

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V