Struct miden_objects::block::Block

source ·
pub struct Block { /* private fields */ }
Expand description

A block in the Miden chain.

A block contains information resulting from executing a set of transactions against the chain state defined by the previous block. It consists of 3 main components:

  • A set of change descriptors for all accounts updated in this block. For private accounts, the block contains only the new account state hashes; for public accounts, the block also contains a set of state deltas which can be applied to the previous account state to get the new account state.
  • A set of new notes created in this block. For private notes, the block contains only note IDs and note metadata; for public notes, full note details are recorded.
  • A set of new nullifiers created for all notes that were consumed in the block.

In addition to the above components, a block also contains a block header which contains commitments to the new state of the chain as well as a ZK proof attesting that a set of valid transactions was executed to transition the chain into the state described by this block (the ZK proof part is not yet implemented).

Implementations§

source§

impl Block

source

pub fn new( header: BlockHeader, updated_accounts: Vec<BlockAccountUpdate>, created_notes: Vec<NoteBatch>, created_nullifiers: Vec<Nullifier>, ) -> Result<Self, BlockError>

Returns a new Block instantiated from the provided components.

Note: consistency of the provided components is not validated.

source

pub fn hash(&self) -> Digest

Returns a commitment to this block.

source

pub fn header(&self) -> BlockHeader

Returns the header of this block.

source

pub fn updated_accounts(&self) -> &[BlockAccountUpdate]

Returns a set of account update descriptions for all accounts updated in this block.

source

pub fn created_notes(&self) -> &[NoteBatch]

Returns a set of note batches containing all notes created in this block.

source

pub fn notes(&self) -> impl Iterator<Item = (BlockNoteIndex, &OutputNote)>

Returns an iterator over all notes created in this block.

Each note is accompanied by a corresponding index specifying where the note is located in the blocks note tree.

source

pub fn build_note_tree(&self) -> BlockNoteTree

Returns a note tree containing all notes created in this block.

source

pub fn created_nullifiers(&self) -> &[Nullifier]

Returns a set of nullifiers for all notes consumed in the block.

source

pub fn transactions( &self, ) -> impl Iterator<Item = (TransactionId, AccountId)> + '_

Returns an iterator over all transactions which affected accounts in the block with corresponding account IDs.

source

pub fn compute_tx_hash(&self) -> Digest

Computes a commitment to the transactions included in this block.

Trait Implementations§

source§

impl Clone for Block

source§

fn clone(&self) -> Block

Returns a copy 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 Block

source§

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

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

impl Deserializable for Block

source§

fn read_from<R: ByteReader>( source: &mut R, ) -> Result<Self, DeserializationError>

Reads a sequence of bytes from the provided source, attempts to deserialize these bytes into Self, and returns the result. Read more
source§

fn read_from_bytes(bytes: &[u8]) -> Result<Self, DeserializationError>

Attempts to deserialize the provided bytes into Self and returns the result. Read more
source§

impl Serializable for Block

source§

fn write_into<W: ByteWriter>(&self, target: &mut W)

Serializes self into bytes and writes these bytes into the target.
source§

fn to_bytes(&self) -> Vec<u8>

Serializes self into a vector of bytes.
source§

fn get_size_hint(&self) -> usize

Returns an estimate of how many bytes are needed to represent self. Read more

Auto Trait Implementations§

§

impl Freeze for Block

§

impl RefUnwindSafe for Block

§

impl Send for Block

§

impl Sync for Block

§

impl Unpin for Block

§

impl UnwindSafe for Block

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§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

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

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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>,

§

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

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more