Skip to main content

NewProtocolStorage

Trait NewProtocolStorage 

Source
pub trait NewProtocolStorage<T: NodeType>: StorageTrait<T> {
    // Required methods
    fn append_high_qc2<'life0, 'async_trait>(
        &'life0 self,
        high_qc: Certificate1<T>,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn load_high_qc2<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<Option<Certificate1<T>>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn append_boundary_qc2<'life0, 'async_trait>(
        &'life0 self,
        qc: Certificate1<T>,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn load_boundary_qc2<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<Option<Certificate1<T>>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
}
Expand description

New protocol storage extension for data that is not part of the legacy HotShot storage trait.

Required Methods§

Source

fn append_high_qc2<'life0, 'async_trait>( &'life0 self, high_qc: Certificate1<T>, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Persist the locked QC, written before each phase-2 vote so the lock survives a restart instead of regressing to the decided-anchor QC.

Source

fn load_high_qc2<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Option<Certificate1<T>>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Load the persisted locked QC, if any.

Source

fn append_boundary_qc2<'life0, 'async_trait>( &'life0 self, qc: Certificate1<T>, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Persist the own Certificate1 of the last block of an epoch, at the block’s own view.

A re-vote request and the next epoch’s first block name it, and nothing else carries it once the view has passed: without it a restarted node cannot lead either. Implementations keep the latest, ordered by epoch, then view, as a monotonic compare-and-set.

Source

fn load_boundary_qc2<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Option<Certificate1<T>>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Load the persisted boundary certificate, if any.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<T: NodeType> NewProtocolStorage<T> for TestStorage<T>

Source§

fn append_high_qc2<'life0, 'async_trait>( &'life0 self, high_qc: Certificate1<T>, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn load_high_qc2<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Option<Certificate1<T>>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn append_boundary_qc2<'life0, 'async_trait>( &'life0 self, qc: Certificate1<T>, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn load_boundary_qc2<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Option<Certificate1<T>>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Implementors§