Skip to main content

State

Struct State 

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

The rollup state.

Implementations§

Source§

impl State

Source

pub async fn get_account( &self, account_request: AccountRequest, ) -> Result<AccountResponse, GetAccountError>

Returns an account witness and optionally account details at a specific block.

The witness is a Merkle proof of inclusion in the account tree, proving the account’s state commitment. If details is requested, the method also returns the account’s code, vault assets, and storage data. Account details are only available for public accounts.

If block_num is provided, returns the state at that historical block; otherwise, returns the latest state. Note that historical states are only available for recent blocks close to the chain tip.

Source§

impl State

Source

pub fn block_subscription( self: &Arc<Self>, from: BlockNumber, ) -> BlockSubscriptionStream

Streams committed blocks starting from from, replaying historical blocks first and then following live commits.

Source

pub fn proof_subscription( self: &Arc<Self>, from: BlockNumber, ) -> ProofSubscriptionStream

Streams block proofs starting from from, replaying historical proofs first and then following newly proven blocks.

Source§

impl State

Source

pub async fn apply_block_with_proving_inputs( &self, ordered_batches: OrderedBatches, block_inputs: BlockInputs, signed_block: SignedBlock, ) -> Result<(), ApplyBlockWithProvingInputsError>

Saves proving inputs for a signed block and applies it to the state.

Used by the in-process block producer after it has built and signed a block.

Source

pub async fn apply_block( &self, signed_block: SignedBlock, ) -> Result<(), ApplyBlockError>

Apply changes of a new block to the DB and in-memory data structures.

§Note on state consistency

The server contains in-memory representations of the existing trees, the in-memory representation must be kept consistent with the committed data, this is necessary so to provide consistent results for all endpoints. In order to achieve consistency, the following steps are used:

  • the request data is validated, prior to starting any modifications.
  • block is being saved into the store in parallel with updating the DB, but before committing. This block is considered as candidate and not yet available for reading because the latest block pointer is not updated yet.
  • a transaction is open in the DB and the writes are started.
  • while the transaction is not committed, concurrent reads are allowed, both the DB and the in-memory representations, which are consistent at this stage.
  • prior to committing the changes to the DB, an exclusive lock to the in-memory data is acquired, preventing concurrent reads to the in-memory data, since that will be out-of-sync w.r.t. the DB.
  • the DB transaction is committed, and requests that read only from the DB can proceed to use the fresh data.
  • the in-memory structures are updated, including the latest block pointer and the lock is released.
Source

pub async fn save_proving_inputs( &self, block_num: BlockNumber, proving_inputs: &BlockProofRequest, ) -> Result<()>

Saves the proving inputs for the given block to the block store.

Source§

impl State

Source

pub async fn apply_proof( &self, block_num: BlockNumber, proof_bytes: Vec<u8>, ) -> Result<()>

Saves a block proof, advances the proven-in-sequence tip, and notifies replica subscribers.

Source§

impl State

Source

pub fn bootstrap(genesis: GenesisBlock, data_directory: &Path) -> Result<()>

Bootstraps the store state, creating the database state and inserting the genesis block data.

Source§

impl State

Source

pub fn spawn_disk_monitor(&self) -> JoinHandle<()>

Spawns a background task that periodically records the on-disk size of every store data path as OTel span attributes.

Source§

impl State

Source

pub async fn sync_transactions( &self, account_ids: Vec<AccountId>, block_range: RangeInclusive<BlockNumber>, ) -> Result<(BlockNumber, Vec<TransactionRecord>), DatabaseError>

Returns the complete transaction records for the specified accounts within the specified block range, including state commitments and note IDs.

Source

pub async fn sync_chain_mmr( &self, block_range: RangeInclusive<BlockNumber>, ) -> Result<(MmrDelta, BlockHeader, Signature), StateSyncError>

Returns the chain MMR delta and the block_to block header for the specified block range.

Source

pub async fn sync_notes( &self, note_tags: Vec<u32>, block_range: RangeInclusive<BlockNumber>, ) -> Result<(Vec<(NoteSyncUpdate, MmrProof)>, BlockNumber), NoteSyncError>

Loads data to synchronize a client’s notes.

Returns as many blocks with matching notes as fit within the response payload limit (MAX_RESPONSE_PAYLOAD_BYTES). Each block includes its header and MMR proof at forest block_range.end() + 1.

Also returns the last block number checked. If this equals block_range.end(), the sync is complete.

Source

pub async fn sync_nullifiers( &self, prefix_len: u32, nullifier_prefixes: Vec<u32>, block_range: RangeInclusive<BlockNumber>, ) -> Result<(Vec<NullifierInfo>, BlockNumber), DatabaseError>

Source

pub async fn sync_account_vault( &self, account_id: AccountId, block_range: RangeInclusive<BlockNumber>, ) -> Result<(BlockNumber, Vec<AccountVaultValue>), DatabaseError>

Returns account vault updates for specified account within a block range.

Source

pub async fn sync_account_storage_maps( &self, account_id: AccountId, block_range: RangeInclusive<BlockNumber>, ) -> Result<StorageMapValuesPage, DatabaseError>

Returns storage map values for syncing within a block range.

Source§

impl State

Source

pub async fn load( data_path: &Path, storage_options: StorageOptions, ) -> Result<Self, StateInitializationError>

Loads the state from the data directory.

The loaded state owns all store data structures and exposes subscription methods for sequencer and replica tasks.

Source

pub async fn load_with_database_options( data_path: &Path, storage_options: StorageOptions, database_options: DatabaseOptions, ) -> Result<Self, StateInitializationError>

Loads the state from the data directory using explicit database options.

The loaded state owns all store data structures and exposes subscription methods for sequencer and replica tasks.

Source

pub fn subscribe_committed_tip(&self) -> Receiver<BlockNumber>

Returns a watch receiver that wakes every time a new block is committed.

Source

pub async fn load_proving_inputs( &self, block_num: BlockNumber, ) -> Result<Option<Vec<u8>>>

Loads serialized block proving inputs from the block store.

Source

pub async fn get_block_header( &self, block_num: Option<BlockNumber>, include_mmr_proof: bool, ) -> Result<(Option<BlockHeader>, Option<MmrProof>), GetBlockHeaderError>

Queries a BlockHeader from the database, and returns it alongside its inclusion proof.

If None is given as the value of block_num, the data for the latest BlockHeader is returned.

Source

pub async fn get_notes_by_id( &self, note_ids: Vec<NoteId>, ) -> Result<Vec<NoteRecord>, DatabaseError>

Queries a list of notes from the database.

If the provided list of NoteId given is empty or no note matches the provided NoteId an empty list is returned.

Source

pub async fn get_batch_inputs( &self, tx_reference_blocks: BTreeSet<BlockNumber>, unauthenticated_note_commitments: BTreeSet<Word>, ) -> Result<BatchInputs, GetBatchInputsError>

Fetches the inputs for a transaction batch from the database.

§Inputs

The function takes as input:

  • The tx reference blocks are the set of blocks referenced by transactions in the batch.
  • The unauthenticated note commitments are the set of commitments of unauthenticated notes consumed by all transactions in the batch. For these notes, we attempt to find inclusion proofs. Not all notes will exist in the DB necessarily, as some notes can be created and consumed within the same batch.
§Outputs

The function will return:

  • A block inclusion proof for all tx reference blocks and for all blocks which are referenced by a note inclusion proof.
  • Note inclusion proofs for all notes that were found in the DB.
  • The block header that the batch should reference, i.e. the latest known block.
Source

pub async fn get_block_inputs( &self, account_ids: Vec<AccountId>, nullifiers: Vec<Nullifier>, unauthenticated_note_commitments: BTreeSet<Word>, reference_blocks: BTreeSet<BlockNumber>, ) -> Result<BlockInputs, GetBlockInputsError>

Returns data needed by the block producer to construct and prove the next block.

Source

pub async fn get_transaction_inputs( &self, account_id: AccountId, nullifiers: &[Nullifier], unauthenticated_note_commitments: Vec<Word>, ) -> Result<TransactionInputs, DatabaseError>

Returns data needed by the block producer to verify transactions validity.

Source

pub async fn filter_network_accounts( &self, account_ids: &[AccountId], ) -> Result<HashSet<AccountId>, DatabaseError>

Filters account_ids down to the subset classified as network accounts.

Source

pub async fn chain_tip(&self, finality: Finality) -> BlockNumber

Returns the effective chain tip for the given finality level.

  • Finality::Committed: returns the latest committed block number (from in-memory MMR).
  • Finality::Proven: returns the latest proven-in-sequence block number (cached via watch channel, updated by the proof scheduler).
Source

pub async fn load_block( &self, block_num: BlockNumber, ) -> Result<Option<Vec<u8>>, DatabaseError>

Loads a block from the block store. Return Ok(None) if the block is not found.

Source

pub async fn load_proof( &self, block_num: BlockNumber, ) -> Result<Option<Vec<u8>>, DatabaseError>

Loads a block proof from the block store. Returns Ok(None) if the proof is not found.

Source

pub async fn get_note_script_by_root( &self, root: Word, ) -> Result<Option<NoteScript>, DatabaseError>

Returns the script for a note by its root.

Auto Trait Implementations§

§

impl !Freeze for State

§

impl !RefUnwindSafe for State

§

impl !UnwindSafe for State

§

impl Send for State

§

impl Sync for State

§

impl Unpin for State

§

impl UnsafeUnpin for State

Blanket Implementations§

Source§

impl<T> AggregateExpressionMethods for T

Source§

fn aggregate_distinct(self) -> Self::Output
where Self: DistinctDsl,

DISTINCT modifier for aggregate functions Read more
Source§

fn aggregate_all(self) -> Self::Output
where Self: AllDsl,

ALL modifier for aggregate functions Read more
Source§

fn aggregate_filter<P>(self, f: P) -> Self::Output
where P: AsExpression<Bool>, Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,

Add an aggregate function filter Read more
Source§

fn aggregate_order<O>(self, o: O) -> Self::Output
where Self: OrderAggregateDsl<O>,

Add an aggregate function order Read more
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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Send + Sync>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> IntoSql for T

Source§

fn into_sql<T>(self) -> Self::Expression

Convert self to an expression for Diesel’s query builder. Read more
Source§

fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
where &'a Self: AsExpression<T>, T: SqlType + TypedExpressionType,

Convert &self to an expression for Diesel’s query builder. Read more
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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

Source§

impl<T> WindowExpressionMethods for T

Source§

fn over(self) -> Self::Output
where Self: OverDsl,

Turn a function call into a window function call Read more
Source§

fn window_filter<P>(self, f: P) -> Self::Output
where P: AsExpression<Bool>, Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,

Add a filter to the current window function Read more
Source§

fn partition_by<E>(self, expr: E) -> Self::Output
where Self: PartitionByDsl<E>,

Add a partition clause to the current window function Read more
Source§

fn window_order<E>(self, expr: E) -> Self::Output
where Self: OrderWindowDsl<E>,

Add a order clause to the current window function Read more
Source§

fn frame_by<E>(self, expr: E) -> Self::Output
where Self: FrameDsl<E>,

Add a frame clause to the current window function Read more
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