pub struct SeqTypes;Trait Implementations§
Source§impl BlockHeader<SeqTypes> for Header
impl BlockHeader<SeqTypes> for Header
Source§fn builder_commitment(&self) -> BuilderCommitment
fn builder_commitment(&self) -> BuilderCommitment
From 0.7 the header carries none. The trait wants a value, so those headers report the digest of no bytes.
Source§type Error = InvalidBlockHeader
type Error = InvalidBlockHeader
Source§async fn new(
parent_state: &ValidatedState,
instance_state: &NodeState,
parent_leaf: &Leaf2,
payload_commitment: VidCommitment,
builder_commitment: BuilderCommitment,
metadata: <<SeqTypes as NodeType>::BlockPayload as BlockPayload<SeqTypes>>::Metadata,
builder_fee: BuilderFee<SeqTypes>,
version: Version,
view_number: u64,
) -> Result<Self, Self::Error>
async fn new( parent_state: &ValidatedState, instance_state: &NodeState, parent_leaf: &Leaf2, payload_commitment: VidCommitment, builder_commitment: BuilderCommitment, metadata: <<SeqTypes as NodeType>::BlockPayload as BlockPayload<SeqTypes>>::Metadata, builder_fee: BuilderFee<SeqTypes>, version: Version, view_number: u64, ) -> Result<Self, Self::Error>
Source§fn genesis(
instance_state: &NodeState,
payload: <SeqTypes as NodeType>::BlockPayload,
metadata: &<<SeqTypes as NodeType>::BlockPayload as BlockPayload<SeqTypes>>::Metadata,
_: Version,
) -> Self
fn genesis( instance_state: &NodeState, payload: <SeqTypes as NodeType>::BlockPayload, metadata: &<<SeqTypes as NodeType>::BlockPayload as BlockPayload<SeqTypes>>::Metadata, _: Version, ) -> Self
Source§fn timestamp_millis(&self) -> u64
fn timestamp_millis(&self) -> u64
Source§fn block_number(&self) -> u64
fn block_number(&self) -> u64
Source§fn payload_commitment(&self) -> VidCommitment
fn payload_commitment(&self) -> VidCommitment
Source§fn metadata(
&self,
) -> &<<SeqTypes as NodeType>::BlockPayload as BlockPayload<SeqTypes>>::Metadata
fn metadata( &self, ) -> &<<SeqTypes as NodeType>::BlockPayload as BlockPayload<SeqTypes>>::Metadata
Source§fn get_light_client_state(&self, view: ViewNumber) -> Result<LightClientState>
fn get_light_client_state(&self, view: ViewNumber) -> Result<LightClientState>
Source§impl BlockPayload<SeqTypes> for Payload
impl BlockPayload<SeqTypes> for Payload
Source§fn transaction_commitments(
&self,
metadata: &Self::Metadata,
) -> Vec<Commitment<Self::Transaction>>
fn transaction_commitments( &self, metadata: &Self::Metadata, ) -> Vec<Commitment<Self::Transaction>>
The per-transaction Keccak256 is the serial tail of block recovery: it
runs between the parallel erasure decode and the vote, and grows linearly
with the block’s transaction count. Each hash is independent. Each runs
in a tx_hash debug span.
Indices are materialized first — an NsIndex plus a position, far smaller
than the transactions themselves — so only the hashing goes wide, and only
past MIN_PARALLEL_TRANSACTIONS or MIN_PARALLEL_BYTES.
Order must match Self::transactions: callers pair a commitment index
with a transaction index. par_iter is an indexed parallel iterator, so
collect preserves it, and the index sequence is iter’s, exactly as the
serial default gets it through enumerate.
Source§fn num_transactions(&self, metadata: &Self::Metadata) -> usize
fn num_transactions(&self, metadata: &Self::Metadata) -> usize
Counts the indices iter yields. The default builds every transaction, copying its
bytes, only to count it.
Source§type Error = BlockBuildingError
type Error = BlockBuildingError
Source§type Transaction = Transaction
type Transaction = Transaction
Source§type ValidatedState = ValidatedState
type ValidatedState = ValidatedState
Source§fn from_transactions<'life0, 'life1, 'life2, 'async_trait>(
transactions: &'life0 [Self::Transaction],
validated_state: &'life1 Self::ValidatedState,
instance_state: &'life2 Self::Instance,
) -> Pin<Box<dyn Future<Output = Result<(Self, Self::Metadata), Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn from_transactions<'life0, 'life1, 'life2, 'async_trait>(
transactions: &'life0 [Self::Transaction],
validated_state: &'life1 Self::ValidatedState,
instance_state: &'life2 Self::Instance,
) -> Pin<Box<dyn Future<Output = Result<(Self, Self::Metadata), Self::Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn from_bytes(block_payload_bytes: &[u8], ns_table: &Self::Metadata) -> Self
fn from_bytes(block_payload_bytes: &[u8], ns_table: &Self::Metadata) -> Self
Source§fn builder_commitment(&self, metadata: &Self::Metadata) -> BuilderCommitment
fn builder_commitment(&self, metadata: &Self::Metadata) -> BuilderCommitment
Source§fn transactions<'a>(
&'a self,
metadata: &'a Self::Metadata,
) -> impl 'a + Iterator<Item = Self::Transaction>
fn transactions<'a>( &'a self, metadata: &'a Self::Metadata, ) -> impl 'a + Iterator<Item = Self::Transaction>
impl Copy for SeqTypes
Source§impl<'de> Deserialize<'de> for SeqTypes
impl<'de> Deserialize<'de> for SeqTypes
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>,
impl Eq for SeqTypes
Source§impl ExplorerHeader<SeqTypes> for Header
impl ExplorerHeader<SeqTypes> for Header
Source§fn reward_balance(&self) -> Self::BalanceAmount
fn reward_balance(&self) -> Self::BalanceAmount
reward_balance at the moment is only implemented as a stub, as block rewards have not yet been implemented.
TODO: update implementation when rewards have been created / supported. Issue: https://github.com/EspressoSystems/espresso-network/issues/1453
Source§type BalanceAmount = FeeAmount
type BalanceAmount = FeeAmount
Source§type WalletAddress = Vec<FeeAccount>
type WalletAddress = Vec<FeeAccount>
Source§type ProposerId = Vec<FeeAccount>
type ProposerId = Vec<FeeAccount>
Source§fn proposer_id(&self) -> Self::ProposerId
fn proposer_id(&self) -> Self::ProposerId
Source§fn fee_info_account(&self) -> Self::WalletAddress
fn fee_info_account(&self) -> Self::WalletAddress
Source§fn fee_info_balance(&self) -> Self::BalanceAmount
fn fee_info_balance(&self) -> Self::BalanceAmount
Source§fn namespace_ids(&self) -> Vec<NamespaceId>
fn namespace_ids(&self) -> Vec<NamespaceId>
Source§impl ExplorerTransaction<SeqTypes> for Transaction
impl ExplorerTransaction<SeqTypes> for Transaction
Source§fn namespace_id(&self) -> NamespaceId
fn namespace_id(&self) -> NamespaceId
Source§fn payload_size(&self) -> u64
fn payload_size(&self) -> u64
Source§impl Membership<SeqTypes> for EpochCommittees
impl Membership<SeqTypes> for EpochCommittees
Source§async fn load_stake_table(&self, epoch: EpochNumber) -> bool
async fn load_stake_table(&self, epoch: EpochNumber) -> bool
Load the committee for epoch from storage.
Everything persisted for the epoch is restored: the stake table, the epoch root header, and the randomized committee (rebuilt from the DRB result).
Source§async fn add_epoch_root(
&self,
block_header: Header,
coordinator: &EpochMembershipCoordinator<SeqTypes>,
) -> Result<(), Self::Error>
async fn add_epoch_root( &self, block_header: Header, coordinator: &EpochMembershipCoordinator<SeqTypes>, ) -> Result<(), Self::Error>
Adds the epoch committee and block reward for a given epoch, either by fetching from L1 or using local state if available. It also calculates and stores the block reward based on header version.
type Error = EpochCommitteesError
Source§type Snapshot = EpochSnapshot
type Snapshot = EpochSnapshot
Self::snapshot.Source§fn snapshot(&self, epoch: EpochNumber) -> Option<Self::Snapshot>
fn snapshot(&self, epoch: EpochNumber) -> Option<Self::Snapshot>
Source§fn genesis_stake_tables(&self) -> Arc<GenesisStakeTables<SeqTypes>> ⓘ
fn genesis_stake_tables(&self) -> Arc<GenesisStakeTables<SeqTypes>> ⓘ
Source§async fn get_epoch_root(
&self,
epoch: EpochNumber,
coordinator: &EpochMembershipCoordinator<SeqTypes>,
) -> Result<Leaf2, Self::Error>
async fn get_epoch_root( &self, epoch: EpochNumber, coordinator: &EpochMembershipCoordinator<SeqTypes>, ) -> Result<Leaf2, Self::Error>
Source§async fn get_epoch_drb(
&self,
epoch: EpochNumber,
coordinator: &EpochMembershipCoordinator<SeqTypes>,
) -> Result<DrbResult, Self::Error>
async fn get_epoch_drb( &self, epoch: EpochNumber, coordinator: &EpochMembershipCoordinator<SeqTypes>, ) -> Result<DrbResult, Self::Error>
Source§fn add_drb_result(&self, epoch: EpochNumber, drb: DrbResult)
fn add_drb_result(&self, epoch: EpochNumber, drb: DrbResult)
Source§fn first_epoch(&self) -> EpochNumber
fn first_epoch(&self) -> EpochNumber
Source§fn highest_known_epoch(&self) -> Option<EpochNumber>
fn highest_known_epoch(&self) -> Option<EpochNumber>
None if no stake tables are loaded. It is where catchup resumes
from, so an implementation that leaves it at None makes catchup
rediscover that point one epoch at a time.Source§fn add_da_committee(
&self,
first_epoch: EpochNumber,
committee: Vec<PeerConfig<SeqTypes>>,
)
fn add_da_committee( &self, first_epoch: EpochNumber, committee: Vec<PeerConfig<SeqTypes>>, )
first_epoch.Source§impl MembershipSnapshot<SeqTypes> for EpochSnapshot
impl MembershipSnapshot<SeqTypes> for EpochSnapshot
Source§fn lookup_leader(&self, view: ViewNumber) -> Result<PubKey, Self::Error>
fn lookup_leader(&self, view: ViewNumber) -> Result<PubKey, Self::Error>
Returns the leader’s public key for a given view number in this epoch.
§Errors
Returns LeaderLookupError if the snapshot’s epoch is before
first_epoch, the randomized committee is missing, or the epoch has
no eligible leader.
type Error = EpochCommitteesError
type StakeTableHash = StakeTableState
Source§fn epoch(&self) -> EpochNumber
fn epoch(&self) -> EpochNumber
Source§fn first_epoch(&self) -> EpochNumber
fn first_epoch(&self) -> EpochNumber
Source§fn has_drb(&self) -> bool
fn has_drb(&self) -> bool
Source§fn stake_table(
&self,
) -> impl ExactSizeIterator<Item = &PeerConfig<SeqTypes>> + Send
fn stake_table( &self, ) -> impl ExactSizeIterator<Item = &PeerConfig<SeqTypes>> + Send
Source§fn da_stake_table(
&self,
) -> impl ExactSizeIterator<Item = &PeerConfig<SeqTypes>> + Send
fn da_stake_table( &self, ) -> impl ExactSizeIterator<Item = &PeerConfig<SeqTypes>> + Send
Source§fn committee_members(
&self,
_: ViewNumber,
) -> impl ExactSizeIterator<Item = &PubKey> + Send
fn committee_members( &self, _: ViewNumber, ) -> impl ExactSizeIterator<Item = &PubKey> + Send
Source§fn da_committee_members(
&self,
_: ViewNumber,
) -> impl ExactSizeIterator<Item = &PubKey> + Send
fn da_committee_members( &self, _: ViewNumber, ) -> impl ExactSizeIterator<Item = &PubKey> + Send
Source§fn stake(&self, key: &PubKey) -> Option<PeerConfig<SeqTypes>>
fn stake(&self, key: &PubKey) -> Option<PeerConfig<SeqTypes>>
key, or None if the key is not in the
committee for this epoch.Source§fn da_stake(&self, key: &PubKey) -> Option<PeerConfig<SeqTypes>>
fn da_stake(&self, key: &PubKey) -> Option<PeerConfig<SeqTypes>>
key, or None.Source§fn has_da_stake(&self, key: &PubKey) -> bool
fn has_da_stake(&self, key: &PubKey) -> bool
key has DA stake in this epoch.Source§fn stake_table_hash(&self) -> Option<Commitment<Self::StakeTableHash>>
fn stake_table_hash(&self) -> Option<Commitment<Self::StakeTableHash>>
Source§fn total_nodes(&self) -> usize
fn total_nodes(&self) -> usize
Source§fn da_total_nodes(&self) -> usize
fn da_total_nodes(&self) -> usize
Source§fn total_stake(&self) -> Uint<256, 4>
fn total_stake(&self) -> Uint<256, 4>
Source§fn total_da_stake(&self) -> Uint<256, 4>
fn total_da_stake(&self) -> Uint<256, 4>
Source§fn success_threshold(&self) -> Uint<256, 4>
fn success_threshold(&self) -> Uint<256, 4>
Source§fn da_success_threshold(&self) -> Uint<256, 4>
fn da_success_threshold(&self) -> Uint<256, 4>
Source§fn failure_threshold(&self) -> Uint<256, 4>
fn failure_threshold(&self) -> Uint<256, 4>
Source§fn upgrade_threshold(&self) -> Uint<256, 4>
fn upgrade_threshold(&self) -> Uint<256, 4>
Source§fn leader(
&self,
view: ViewNumber,
) -> Result<<T as NodeType>::SignatureKey, Error>
fn leader( &self, view: ViewNumber, ) -> Result<<T as NodeType>::SignatureKey, Error>
view in this epoch, returning a HotShot-internal
error type. Default impl wraps Self::lookup_leader.Source§impl MerklizedState<SeqTypes, { Self::ARITY }> for BlockMerkleTree
impl MerklizedState<SeqTypes, { Self::ARITY }> for BlockMerkleTree
type Key = <LightWeightMerkleTree<Commitment<Header>, Sha3Digest, u64, 3, Sha3Node> as MerkleTreeScheme>::Index
type Entry = Commitment<Header>
type T = Sha3Node
type Commit = <LightWeightMerkleTree<Commitment<Header>, Sha3Digest, u64, 3, Sha3Node> as MerkleTreeScheme>::Commitment
type Digest = Sha3Digest
Source§fn state_type() -> &'static str
fn state_type() -> &'static str
Source§fn header_state_commitment_field() -> &'static str
fn header_state_commitment_field() -> &'static str
Source§fn tree_height() -> usize
fn tree_height() -> usize
Source§fn insert_path(
&mut self,
key: Self::Key,
proof: &MerkleProof<Self::Entry, Self::Key, Self::T, { Self::ARITY }>,
) -> Result<()>
fn insert_path( &mut self, key: Self::Key, proof: &MerkleProof<Self::Entry, Self::Key, Self::T, { Self::ARITY }>, ) -> Result<()>
Source§impl MerklizedState<SeqTypes, { Self::ARITY }> for FeeMerkleTree
impl MerklizedState<SeqTypes, { Self::ARITY }> for FeeMerkleTree
type Key = <UniversalMerkleTree<FeeAmount, Sha3Digest, FeeAccount, FEE_MERKLE_TREE_ARITY, Sha3Node> as MerkleTreeScheme>::Index
type Entry = <UniversalMerkleTree<FeeAmount, Sha3Digest, FeeAccount, FEE_MERKLE_TREE_ARITY, Sha3Node> as MerkleTreeScheme>::Element
type T = Sha3Node
type Commit = <UniversalMerkleTree<FeeAmount, Sha3Digest, FeeAccount, FEE_MERKLE_TREE_ARITY, Sha3Node> as MerkleTreeScheme>::Commitment
type Digest = Sha3Digest
Source§fn state_type() -> &'static str
fn state_type() -> &'static str
Source§fn header_state_commitment_field() -> &'static str
fn header_state_commitment_field() -> &'static str
Source§fn tree_height() -> usize
fn tree_height() -> usize
Source§fn insert_path(
&mut self,
key: Self::Key,
proof: &MerkleProof<Self::Entry, Self::Key, Self::T, { Self::ARITY }>,
) -> Result<()>
fn insert_path( &mut self, key: Self::Key, proof: &MerkleProof<Self::Entry, Self::Key, Self::T, { Self::ARITY }>, ) -> Result<()>
Source§impl MerklizedState<SeqTypes, { Self::ARITY }> for RewardMerkleTreeV2
impl MerklizedState<SeqTypes, { Self::ARITY }> for RewardMerkleTreeV2
type Key = <UniversalMerkleTree<RewardAmount, Keccak256Hasher, RewardAccountV2, REWARD_MERKLE_TREE_V2_ARITY, KeccakNode> as MerkleTreeScheme>::Index
type Entry = <UniversalMerkleTree<RewardAmount, Keccak256Hasher, RewardAccountV2, REWARD_MERKLE_TREE_V2_ARITY, KeccakNode> as MerkleTreeScheme>::Element
type T = KeccakNode
type Commit = <UniversalMerkleTree<RewardAmount, Keccak256Hasher, RewardAccountV2, REWARD_MERKLE_TREE_V2_ARITY, KeccakNode> as MerkleTreeScheme>::Commitment
type Digest = Keccak256Hasher
Source§fn state_type() -> &'static str
fn state_type() -> &'static str
Source§fn header_state_commitment_field() -> &'static str
fn header_state_commitment_field() -> &'static str
Source§fn tree_height() -> usize
fn tree_height() -> usize
Source§fn insert_path(
&mut self,
key: Self::Key,
proof: &MerkleProof<Self::Entry, Self::Key, Self::T, { Self::ARITY }>,
) -> Result<()>
fn insert_path( &mut self, key: Self::Key, proof: &MerkleProof<Self::Entry, Self::Key, Self::T, { Self::ARITY }>, ) -> Result<()>
Source§impl MerklizedState<SeqTypes, { Self::ARITY }> for RewardMerkleTreeV1
impl MerklizedState<SeqTypes, { Self::ARITY }> for RewardMerkleTreeV1
type Key = <UniversalMerkleTree<RewardAmount, Sha3Digest, RewardAccountV1, REWARD_MERKLE_TREE_V1_ARITY, Sha3Node> as MerkleTreeScheme>::Index
type Entry = <UniversalMerkleTree<RewardAmount, Sha3Digest, RewardAccountV1, REWARD_MERKLE_TREE_V1_ARITY, Sha3Node> as MerkleTreeScheme>::Element
type T = Sha3Node
type Commit = <UniversalMerkleTree<RewardAmount, Sha3Digest, RewardAccountV1, REWARD_MERKLE_TREE_V1_ARITY, Sha3Node> as MerkleTreeScheme>::Commitment
type Digest = Sha3Digest
Source§fn state_type() -> &'static str
fn state_type() -> &'static str
Source§fn header_state_commitment_field() -> &'static str
fn header_state_commitment_field() -> &'static str
Source§fn tree_height() -> usize
fn tree_height() -> usize
Source§fn insert_path(
&mut self,
key: Self::Key,
proof: &MerkleProof<Self::Entry, Self::Key, Self::T, { Self::ARITY }>,
) -> Result<()>
fn insert_path( &mut self, key: Self::Key, proof: &MerkleProof<Self::Entry, Self::Key, Self::T, { Self::ARITY }>, ) -> Result<()>
Source§impl<P: SequencerPersistence> NewProtocolStorage<SeqTypes> for Arc<P>
impl<P: SequencerPersistence> NewProtocolStorage<SeqTypes> for Arc<P>
Source§fn append_high_qc2<'life0, 'async_trait>(
&'life0 self,
high_qc: Certificate1<SeqTypes>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn append_high_qc2<'life0, 'async_trait>(
&'life0 self,
high_qc: Certificate1<SeqTypes>,
) -> 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<SeqTypes>>>> + 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<SeqTypes>>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn append_boundary_qc2<'life0, 'async_trait>(
&'life0 self,
qc: Certificate1<SeqTypes>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn append_boundary_qc2<'life0, 'async_trait>(
&'life0 self,
qc: Certificate1<SeqTypes>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Certificate1 of the last block of an epoch, at the
block’s own view. Read moreSource§impl NodeType for SeqTypes
impl NodeType for SeqTypes
Source§type BlockHeader = Header
type BlockHeader = Header
Source§type BlockPayload = Payload
type BlockPayload = Payload
Source§type SignatureKey = VerKey
type SignatureKey = VerKey
Source§type Transaction = Transaction
type Transaction = Transaction
Source§type InstanceState = NodeState
type InstanceState = NodeState
Source§type ValidatedState = ValidatedState
type ValidatedState = ValidatedState
Source§type Membership = EpochCommittees
type Membership = EpochCommittees
Source§type BuilderSignatureKey = FeeAccount
type BuilderSignatureKey = FeeAccount
Source§type StateSignatureKey = VerKey<EdwardsConfig>
type StateSignatureKey = VerKey<EdwardsConfig>
Source§const UPGRADE_CONSTANTS: UpgradeConstants = DEFAULT_UPGRADE_CONSTANTS
const UPGRADE_CONSTANTS: UpgradeConstants = DEFAULT_UPGRADE_CONSTANTS
Source§impl Ord for SeqTypes
impl Ord for SeqTypes
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialOrd for SeqTypes
impl PartialOrd for SeqTypes
Source§impl QueryableHeader<SeqTypes> for Header
impl QueryableHeader<SeqTypes> for Header
Source§type NamespaceId = NamespaceId
type NamespaceId = NamespaceId
Source§type NamespaceIndex = NsIndex
type NamespaceIndex = NsIndex
Source§fn namespace_id(&self, i: &NsIndex) -> Option<NamespaceId>
fn namespace_id(&self, i: &NsIndex) -> Option<NamespaceId>
Source§impl QueryablePayload<SeqTypes> for Payload
impl QueryablePayload<SeqTypes> for Payload
Source§type InclusionProof = TxProof
type InclusionProof = TxProof
Source§fn iter<'a>(&'a self, _meta: &'a Self::Metadata) -> Self::Iter<'a>
fn iter<'a>(&'a self, _meta: &'a Self::Metadata) -> Self::Iter<'a>
Source§fn transaction(
&self,
_meta: &Self::Metadata,
index: &Index,
) -> Option<Self::Transaction>
fn transaction( &self, _meta: &Self::Metadata, index: &Index, ) -> Option<Self::Transaction>
Source§fn transaction_proof(
&self,
_meta: &Self::Metadata,
vid: &VidCommonQueryData<SeqTypes>,
index: &Index,
) -> Option<Self::InclusionProof>
fn transaction_proof( &self, _meta: &Self::Metadata, vid: &VidCommonQueryData<SeqTypes>, index: &Index, ) -> Option<Self::InclusionProof>
§fn enumerate<'a>(
&'a self,
meta: &'a Self::Metadata,
) -> Box<dyn Iterator<Item = (TransactionIndex<Types>, Self::Transaction)> + 'a>
fn enumerate<'a>( &'a self, meta: &'a Self::Metadata, ) -> Box<dyn Iterator<Item = (TransactionIndex<Types>, Self::Transaction)> + 'a>
§fn nth(
&self,
meta: &Self::Metadata,
n: usize,
) -> Option<TransactionIndex<Types>>
fn nth( &self, meta: &Self::Metadata, n: usize, ) -> Option<TransactionIndex<Types>>
nth transaction.§fn nth_transaction(
&self,
meta: &Self::Metadata,
n: usize,
) -> Option<Self::Transaction>
fn nth_transaction( &self, meta: &Self::Metadata, n: usize, ) -> Option<Self::Transaction>
nth transaction.§fn by_hash(
&self,
meta: &Self::Metadata,
hash: Commitment<Self::Transaction>,
) -> Option<TransactionIndex<Types>>
fn by_hash( &self, meta: &Self::Metadata, hash: Commitment<Self::Transaction>, ) -> Option<TransactionIndex<Types>>
§fn transaction_by_hash(
&self,
meta: &Self::Metadata,
hash: Commitment<Self::Transaction>,
) -> Option<Self::Transaction>
fn transaction_by_hash( &self, meta: &Self::Metadata, hash: Commitment<Self::Transaction>, ) -> Option<Self::Transaction>
Source§impl<P: SequencerPersistence> Storage<SeqTypes> for Arc<P>
impl<P: SequencerPersistence> Storage<SeqTypes> for Arc<P>
Source§fn append_vid<'life0, 'life1, 'async_trait>(
&'life0 self,
proposal: &'life1 Proposal<SeqTypes, VidDisperseShare<SeqTypes>>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn append_vid<'life0, 'life1, 'async_trait>(
&'life0 self,
proposal: &'life1 Proposal<SeqTypes, VidDisperseShare<SeqTypes>>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn append_da<'life0, 'life1, 'async_trait>(
&'life0 self,
proposal: &'life1 Proposal<SeqTypes, DaProposal<SeqTypes>>,
vid_commit: VidCommitment,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn append_da<'life0, 'life1, 'async_trait>(
&'life0 self,
proposal: &'life1 Proposal<SeqTypes, DaProposal<SeqTypes>>,
vid_commit: VidCommitment,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn append_da2<'life0, 'life1, 'async_trait>(
&'life0 self,
proposal: &'life1 Proposal<SeqTypes, DaProposal2<SeqTypes>>,
vid_commit: VidCommitment,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn append_da2<'life0, 'life1, 'async_trait>(
&'life0 self,
proposal: &'life1 Proposal<SeqTypes, DaProposal2<SeqTypes>>,
vid_commit: VidCommitment,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn record_action<'life0, 'async_trait>(
&'life0 self,
view: ViewNumber,
action: HotShotAction,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn record_action<'life0, 'async_trait>(
&'life0 self,
view: ViewNumber,
action: HotShotAction,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn append_proposal_wrapper<'life0, 'life1, 'async_trait>(
&'life0 self,
proposal: &'life1 Proposal<SeqTypes, QuorumProposalWrapper<SeqTypes>>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn append_proposal_wrapper<'life0, 'life1, 'async_trait>(
&'life0 self,
proposal: &'life1 Proposal<SeqTypes, QuorumProposalWrapper<SeqTypes>>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn update_decided_upgrade_certificate<'life0, 'async_trait>(
&'life0 self,
decided_upgrade_certificate: Option<UpgradeCertificate<SeqTypes>>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_decided_upgrade_certificate<'life0, 'async_trait>(
&'life0 self,
decided_upgrade_certificate: Option<UpgradeCertificate<SeqTypes>>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn store_drb_result<'life0, 'async_trait>(
&'life0 self,
epoch: EpochNumber,
drb_result: DrbResult,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn store_drb_result<'life0, 'async_trait>(
&'life0 self,
epoch: EpochNumber,
drb_result: DrbResult,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn store_epoch_root<'life0, 'async_trait>(
&'life0 self,
epoch: EpochNumber,
block_header: <SeqTypes as NodeType>::BlockHeader,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn store_epoch_root<'life0, 'async_trait>(
&'life0 self,
epoch: EpochNumber,
block_header: <SeqTypes as NodeType>::BlockHeader,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn store_drb_input<'life0, 'async_trait>(
&'life0 self,
drb_input: DrbInput,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load_drb_input<'life0, 'async_trait>(
&'life0 self,
epoch: u64,
) -> Pin<Box<dyn Future<Output = Result<DrbInput>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn update_state_cert<'life0, 'async_trait>(
&'life0 self,
state_cert: LightClientStateUpdateCertificateV2<SeqTypes>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_state_cert<'life0, 'async_trait>(
&'life0 self,
state_cert: LightClientStateUpdateCertificateV2<SeqTypes>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load_drb_result<'life0, 'async_trait>(
&'life0 self,
epoch: EpochNumber,
) -> Pin<Box<dyn Future<Output = Result<[u8; 32], Error>> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
impl StructuralPartialEq for SeqTypes
Source§impl ValidatedState<SeqTypes> for ValidatedState
impl ValidatedState<SeqTypes> for ValidatedState
Source§async fn validate_and_apply_header(
&self,
instance: &Self::Instance,
parent_leaf: &Leaf2,
proposed_header: &Header,
payload_byte_len: Option<u32>,
version: Version,
view_number: u64,
) -> Result<(Self, Self::Delta), Self::Error>
async fn validate_and_apply_header( &self, instance: &Self::Instance, parent_leaf: &Leaf2, proposed_header: &Header, payload_byte_len: Option<u32>, version: Version, view_number: u64, ) -> Result<(Self, Self::Delta), Self::Error>
Validate parent against known values (from state) and validate
proposal descends from parent. Returns updated ValidatedState.
Source§fn from_header(block_header: &Header) -> Self
fn from_header(block_header: &Header) -> Self
Construct the state with the given block header.
This can also be used to rebuild the state for catchup.
Source§fn genesis(instance: &Self::Instance) -> (Self, Self::Delta)
fn genesis(instance: &Self::Instance) -> (Self, Self::Delta)
Construct a genesis validated state.
Source§type Error = BlockError
type Error = BlockError
Auto Trait Implementations§
impl Freeze for SeqTypes
impl RefUnwindSafe for SeqTypes
impl Send for SeqTypes
impl Sync for SeqTypes
impl Unpin for SeqTypes
impl UnsafeUnpin for SeqTypes
impl UnwindSafe for SeqTypes
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
impl<'de, T> BorrowedRpcObject<'de> for Twhere
T: RpcBorrow<'de> + RpcSend,
§impl<T> CallHasher for T
impl<T> CallHasher for T
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<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§impl<T> Conv for T
impl<T> Conv for T
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> Element for T
impl<T> Element for T
§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
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
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
impl<T> Index for T
impl<T> Index for T
§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> ⓘ
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> ⓘ
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> JsonSchemaMaybe for T
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<'de, T> RpcBorrow<'de> for T
impl<T> RpcObject for Twhere
T: RpcSend + RpcRecv,
impl<T> RpcRecv for T
impl<T> RpcSend for T
impl<T> RuleType for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.