pub enum Activity<V: Variant, D: Digest> {
Notarize(Notarize<V, D>),
Notarization(Notarization<V, D>),
Nullify(Nullify<V>),
Nullification(Nullification<V>),
Finalize(Finalize<V, D>),
Finalization(Finalization<V, D>),
ConflictingNotarize(ConflictingNotarize<V, D>),
ConflictingFinalize(ConflictingFinalize<V, D>),
NullifyFinalize(NullifyFinalize<V, D>),
}
Expand description
Activity represents all possible activities that can occur in the consensus protocol. This includes both regular consensus messages and fault evidence.
Some activities issued by consensus are not verified. To determine if an activity has been verified,
use the verified
method.
§Warning
After collecting t
PartialSignatures for the same Activity, an attacker can derive
the PartialSignature for the n-t
remaining participants.
For this reason, it is not sound to use PartialSignature-backed Activity to reward participants for their contributions (as an attacker, for example, could forge contributions from offline participants).
Variants§
Notarize(Notarize<V, D>)
A single validator notarize over a proposal
Notarization(Notarization<V, D>)
A threshold signature for a notarization
Nullify(Nullify<V>)
A single validator nullify to skip the current view
Nullification(Nullification<V>)
A threshold signature for a nullification
Finalize(Finalize<V, D>)
A single validator finalize over a proposal
Finalization(Finalization<V, D>)
A threshold signature for a finalization
ConflictingNotarize(ConflictingNotarize<V, D>)
Evidence of a validator sending conflicting notarizes (Byzantine behavior)
ConflictingFinalize(ConflictingFinalize<V, D>)
Evidence of a validator sending conflicting finalizes (Byzantine behavior)
NullifyFinalize(NullifyFinalize<V, D>)
Evidence of a validator sending both nullify and finalize for the same view (Byzantine behavior)
Implementations§
Trait Implementations§
Source§impl<V: Variant, D: Digest> EncodeSize for Activity<V, D>
impl<V: Variant, D: Digest> EncodeSize for Activity<V, D>
Source§fn encode_size(&self) -> usize
fn encode_size(&self) -> usize
Source§impl<V: Variant, D: Digest> Read for Activity<V, D>
impl<V: Variant, D: Digest> Read for Activity<V, D>
impl<V: Eq + Variant, D: Eq + Digest> Eq for Activity<V, D>
impl<V: Variant, D: Digest> StructuralPartialEq for Activity<V, D>
Auto Trait Implementations§
impl<V, D> Freeze for Activity<V, D>
impl<V, D> RefUnwindSafe for Activity<V, D>
impl<V, D> Send for Activity<V, D>
impl<V, D> Sync for Activity<V, D>
impl<V, D> Unpin for Activity<V, D>
impl<V, D> UnwindSafe for Activity<V, D>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Encode for Twhere
T: Write + EncodeSize,
impl<T> Encode for Twhere
T: Write + EncodeSize,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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 more