pub struct ValidatedBlockCertificate { /* private fields */ }Expand description
Certificate for a ValidatedBlock instance, certified in some round whose ValidatedBlock
voters signed an unlocking round.
A validated block certificate means the block is valid (but not necessarily finalized yet). Since only one block per round is validated, there can be at most one such certificate in every round. It wraps the signed quorum and carries the justification chain that grounds the unlocking round the voters signed.
Implementations§
Source§impl ValidatedBlockCertificate
impl ValidatedBlockCertificate
Sourcepub fn new(
value: ValidatedBlock,
round: Round,
signatures: Vec<(ValidatorPublicKey, ValidatorSignature)>,
) -> Self
pub fn new( value: ValidatedBlock, round: Round, signatures: Vec<(ValidatorPublicKey, ValidatorSignature)>, ) -> Self
Creates a validated block certificate with an empty justification chain (unlocking round None).
Sourcepub fn from_parts(
quorum: GenericCertificate<ValidatedBlock>,
justification: JustificationChain,
) -> Self
pub fn from_parts( quorum: GenericCertificate<ValidatedBlock>, justification: JustificationChain, ) -> Self
Creates a validated block certificate from a signed quorum and its justification chain.
Sourcepub fn quorum(&self) -> &GenericCertificate<ValidatedBlock>
pub fn quorum(&self) -> &GenericCertificate<ValidatedBlock>
Returns the signed quorum of ValidatedBlock votes.
Sourcepub fn justification(&self) -> &JustificationChain
pub fn justification(&self) -> &JustificationChain
Returns the chain of validated quorums in rounds below this certificate’s.
Sourcepub fn into_parts(
self,
) -> (GenericCertificate<ValidatedBlock>, JustificationChain)
pub fn into_parts( self, ) -> (GenericCertificate<ValidatedBlock>, JustificationChain)
Consumes this certificate, returning the signed quorum and the justification chain.
Sourcepub fn into_value(self) -> ValidatedBlock
pub fn into_value(self) -> ValidatedBlock
Consumes this certificate, returning the validated block it contains.
Sourcepub fn into_inner(self) -> ValidatedBlock
pub fn into_inner(self) -> ValidatedBlock
Consumes this certificate, returning the validated block it contains.
Sourcepub fn full_justification(&self) -> JustificationChain
pub fn full_justification(&self) -> JustificationChain
Returns the full justification chain that a certificate certified in a higher round on top of this one would carry: the chain below it, with this certificate’s own quorum appended as the new top link.
Sourcepub fn full_justification_commitment(&self) -> CryptoHash
pub fn full_justification_commitment(&self) -> CryptoHash
Returns the justification commitment that a vote citing this certificate signs: the hash
of this certificate’s own quorum as a CommittedQuorum, which transitively commits to
the chain below it. Equals full_justification’s commitment.
Sourcepub fn check(&self, committee: &Committee) -> Result<(), ChainError>
pub fn check(&self, committee: &Committee) -> Result<(), ChainError>
Verifies the certificate: its signatures, its justification chain, that the unlocking round
matches the top of the chain, and that the chain lies in rounds strictly below this
certificate’s. Delegates to LiteCertificate::check, the single source of truth for the
quorum-to-chain binding.
Sourcepub fn lite_certificate(&self) -> LiteCertificate<'_>
pub fn lite_certificate(&self) -> LiteCertificate<'_>
Returns the LiteCertificate corresponding to this certificate, borrowing the chain.
Methods from Deref<Target = GenericCertificate<ValidatedBlock>>§
Sourcepub fn unlocking_round(&self) -> Option<Round>
pub fn unlocking_round(&self) -> Option<Round>
Returns the unlocking round the ValidatedBlock voters signed, if any.
Sourcepub fn first_round(&self) -> bool
pub fn first_round(&self) -> bool
Returns the first-round attestation the ConfirmedBlock voters signed.
Sourcepub fn justification_commitment(&self) -> Option<CryptoHash>
pub fn justification_commitment(&self) -> Option<CryptoHash>
Returns the justification commitment the voters signed, if any.
Sourcepub fn value(&self) -> &T
pub fn value(&self) -> &T
Returns a reference to the Hashed value contained in this certificate.
Sourcepub fn hash(&self) -> CryptoHash
pub fn hash(&self) -> CryptoHash
Returns the certified value’s hash.
Sourcepub fn signatures(&self) -> &Vec<(ValidatorPublicKey, ValidatorSignature)>
pub fn signatures(&self) -> &Vec<(ValidatorPublicKey, ValidatorSignature)>
Returns the list of signatures on the certified value.
Sourcepub fn is_signed_by(&self, validator_name: &ValidatorPublicKey) -> bool
pub fn is_signed_by(&self, validator_name: &ValidatorPublicKey) -> bool
Returns whether the validator is among the signatories of this certificate.
Sourcepub fn check(&self, committee: &Committee) -> Result<(), ChainError>where
T: CertificateValue,
pub fn check(&self, committee: &Committee) -> Result<(), ChainError>where
T: CertificateValue,
Verifies the certificate.
Sourcepub fn lite_certificate_without_justification(&self) -> LiteCertificate<'_>where
T: CertificateValue,
pub fn lite_certificate_without_justification(&self) -> LiteCertificate<'_>where
T: CertificateValue,
Returns the LiteCertificate corresponding to this certificate, without the value and
with an empty justification chain.
Named explicitly because a block certificate’s real chain lives on its wrapper
(ConfirmedBlockCertificate/ValidatedBlockCertificate), not on the inner quorum:
calling this on the quorum would silently produce a chainless lite certificate that fails
verification at the receiver. The wrappers use it and then attach their chain; Timeout
certificates carry no chain, so for them it is complete on its own.
Sourcepub fn outgoing_message_count(&self) -> usize
pub fn outgoing_message_count(&self) -> usize
Returns the total number of outgoing messages in the certified block.
Trait Implementations§
Source§impl Certified for ValidatedBlockCertificate
impl Certified for ValidatedBlockCertificate
Source§type Value = ValidatedBlock
type Value = ValidatedBlock
Source§fn value(&self) -> &ValidatedBlock
fn value(&self) -> &ValidatedBlock
Source§fn unlocking_round(&self) -> Option<Round>
fn unlocking_round(&self) -> Option<Round>
ValidatedBlock voters signed, if any.Source§fn signatures(&self) -> &Vec<(ValidatorPublicKey, ValidatorSignature)>
fn signatures(&self) -> &Vec<(ValidatorPublicKey, ValidatorSignature)>
Source§fn lite_certificate(&self) -> LiteCertificate<'_>
fn lite_certificate(&self) -> LiteCertificate<'_>
LiteCertificate corresponding to this certificate, without the value but
with the justification chain.Source§fn check(&self, committee: &Committee) -> Result<(), ChainError>
fn check(&self, committee: &Committee) -> Result<(), ChainError>
Source§fn hash(&self) -> CryptoHash
fn hash(&self) -> CryptoHash
Source§fn is_signed_by(&self, validator_name: &ValidatorPublicKey) -> bool
fn is_signed_by(&self, validator_name: &ValidatorPublicKey) -> bool
Source§impl Clone for ValidatedBlockCertificate
impl Clone for ValidatedBlockCertificate
Source§fn clone(&self) -> ValidatedBlockCertificate
fn clone(&self) -> ValidatedBlockCertificate
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ValidatedBlockCertificate
impl Debug for ValidatedBlockCertificate
Source§impl Deref for ValidatedBlockCertificate
impl Deref for ValidatedBlockCertificate
Source§type Target = GenericCertificate<ValidatedBlock>
type Target = GenericCertificate<ValidatedBlock>
Source§impl<'de> Deserialize<'de> for ValidatedBlockCertificate
impl<'de> Deserialize<'de> for ValidatedBlockCertificate
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>,
Source§impl From<ValidatedBlockCertificate> for Certificate
impl From<ValidatedBlockCertificate> for Certificate
Source§fn from(cert: ValidatedBlockCertificate) -> Certificate
fn from(cert: ValidatedBlockCertificate) -> Certificate
Source§impl TryFrom<Certificate> for ValidatedBlockCertificate
impl TryFrom<Certificate> for ValidatedBlockCertificate
Source§type Error = ConversionError
type Error = ConversionError
impl Eq for ValidatedBlockCertificate
impl StructuralPartialEq for ValidatedBlockCertificate
Auto Trait Implementations§
impl Freeze for ValidatedBlockCertificate
impl RefUnwindSafe for ValidatedBlockCertificate
impl Send for ValidatedBlockCertificate
impl Sync for ValidatedBlockCertificate
impl Unpin for ValidatedBlockCertificate
impl UnsafeUnpin for ValidatedBlockCertificate
impl UnwindSafe for ValidatedBlockCertificate
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
Source§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> 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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T> MockResults for T
impl<T> MockResults for T
Source§type Results = T
type Results = T
MockInstance.Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§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 moreSource§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 moreSource§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
Source§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
Source§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.Source§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.Source§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.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<M, I> RuntimeMemory<&mut I> for Mwhere
M: RuntimeMemory<I>,
impl<M, I> RuntimeMemory<&mut I> for Mwhere
M: RuntimeMemory<I>,
Source§fn read<'instance>(
&self,
instance: &'instance &mut I,
location: GuestPointer,
length: u32,
) -> Result<Cow<'instance, [u8]>, RuntimeError>
fn read<'instance>( &self, instance: &'instance &mut I, location: GuestPointer, length: u32, ) -> Result<Cow<'instance, [u8]>, RuntimeError>
Reads length bytes from memory from the provided location.
Source§fn write(
&mut self,
instance: &mut &mut I,
location: GuestPointer,
bytes: &[u8],
) -> Result<(), RuntimeError>
fn write( &mut self, instance: &mut &mut I, location: GuestPointer, bytes: &[u8], ) -> Result<(), RuntimeError>
Writes the bytes to memory at the provided location.
Source§impl<T> Tap for T
impl<T> Tap for T
Source§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.