pub struct DoubleVotingProof<Number, Id, Signature> {
pub first: VoteMessage<Number, Id, Signature>,
pub second: VoteMessage<Number, Id, Signature>,
}Expand description
Proof showing that an authority voted twice in the same round.
One type of misbehavior in BEEFY happens when an authority votes in the same round/block for different payloads. Proving is achieved by collecting the signed commitments of conflicting votes.
Fields§
§first: VoteMessage<Number, Id, Signature>The first vote in the equivocation.
second: VoteMessage<Number, Id, Signature>The second vote in the equivocation.
Implementations§
Source§impl<Number, Id, Signature> DoubleVotingProof<Number, Id, Signature>
impl<Number, Id, Signature> DoubleVotingProof<Number, Id, Signature>
Sourcepub fn offender_id(&self) -> &Id
pub fn offender_id(&self) -> &Id
Returns the authority id of the equivocator.
Sourcepub fn round_number(&self) -> &Number
pub fn round_number(&self) -> &Number
Returns the round number at which the equivocation occurred.
Sourcepub fn set_id(&self) -> ValidatorSetId
pub fn set_id(&self) -> ValidatorSetId
Returns the set id at which the equivocation occurred.
Trait Implementations§
Source§impl<Number: Clone, Id: Clone, Signature: Clone> Clone for DoubleVotingProof<Number, Id, Signature>
impl<Number: Clone, Id: Clone, Signature: Clone> Clone for DoubleVotingProof<Number, Id, Signature>
Source§fn clone(&self) -> DoubleVotingProof<Number, Id, Signature>
fn clone(&self) -> DoubleVotingProof<Number, Id, Signature>
Returns a duplicate of the value. Read more
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<Number: Debug, Id: Debug, Signature: Debug> Debug for DoubleVotingProof<Number, Id, Signature>
impl<Number: Debug, Id: Debug, Signature: Debug> Debug for DoubleVotingProof<Number, Id, Signature>
Source§impl<Number, Id, Signature> Decode for DoubleVotingProof<Number, Id, Signature>where
VoteMessage<Number, Id, Signature>: Decode,
impl<Number, Id, Signature> Decode for DoubleVotingProof<Number, Id, Signature>where
VoteMessage<Number, Id, Signature>: Decode,
Source§fn decode<__CodecInputEdqy: Input>(
__codec_input_edqy: &mut __CodecInputEdqy,
) -> Result<Self, Error>
fn decode<__CodecInputEdqy: Input>( __codec_input_edqy: &mut __CodecInputEdqy, ) -> Result<Self, Error>
Attempt to deserialise the value from input.
Source§fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
fn decode_into<I>(
input: &mut I,
dst: &mut MaybeUninit<Self>,
) -> Result<DecodeFinished, Error>where
I: Input,
Attempt to deserialize the value from input into a pre-allocated piece of memory. Read more
Source§impl<Number, Id, Signature> Encode for DoubleVotingProof<Number, Id, Signature>where
VoteMessage<Number, Id, Signature>: Encode,
impl<Number, Id, Signature> Encode for DoubleVotingProof<Number, Id, Signature>where
VoteMessage<Number, Id, Signature>: Encode,
Source§fn size_hint(&self) -> usize
fn size_hint(&self) -> usize
If possible give a hint of expected size of the encoding. Read more
Source§fn encode_to<__CodecOutputEdqy: Output + ?Sized>(
&self,
__codec_dest_edqy: &mut __CodecOutputEdqy,
)
fn encode_to<__CodecOutputEdqy: Output + ?Sized>( &self, __codec_dest_edqy: &mut __CodecOutputEdqy, )
Convert self to a slice and append it to the destination.
Source§fn using_encoded<R, F>(&self, f: F) -> R
fn using_encoded<R, F>(&self, f: F) -> R
Convert self to a slice and then invoke the given closure with it.
Source§fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Calculates the encoded size. Read more
Source§impl<Number: PartialEq, Id: PartialEq, Signature: PartialEq> PartialEq for DoubleVotingProof<Number, Id, Signature>
impl<Number: PartialEq, Id: PartialEq, Signature: PartialEq> PartialEq for DoubleVotingProof<Number, Id, Signature>
Source§fn eq(&self, other: &DoubleVotingProof<Number, Id, Signature>) -> bool
fn eq(&self, other: &DoubleVotingProof<Number, Id, Signature>) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl<Number, Id, Signature> TypeInfo for DoubleVotingProof<Number, Id, Signature>where
VoteMessage<Number, Id, Signature>: TypeInfo + 'static,
Number: TypeInfo + 'static,
Id: TypeInfo + 'static,
Signature: TypeInfo + 'static,
impl<Number, Id, Signature> TypeInfo for DoubleVotingProof<Number, Id, Signature>where
VoteMessage<Number, Id, Signature>: TypeInfo + 'static,
Number: TypeInfo + 'static,
Id: TypeInfo + 'static,
Signature: TypeInfo + 'static,
impl<Number, Id, Signature> DecodeWithMemTracking for DoubleVotingProof<Number, Id, Signature>where
VoteMessage<Number, Id, Signature>: DecodeWithMemTracking,
impl<Number, Id, Signature> EncodeLike for DoubleVotingProof<Number, Id, Signature>where
VoteMessage<Number, Id, Signature>: Encode,
impl<Number, Id, Signature> StructuralPartialEq for DoubleVotingProof<Number, Id, Signature>
Auto Trait Implementations§
impl<Number, Id, Signature> Freeze for DoubleVotingProof<Number, Id, Signature>
impl<Number, Id, Signature> RefUnwindSafe for DoubleVotingProof<Number, Id, Signature>
impl<Number, Id, Signature> Send for DoubleVotingProof<Number, Id, Signature>
impl<Number, Id, Signature> Sync for DoubleVotingProof<Number, Id, Signature>
impl<Number, Id, Signature> Unpin for DoubleVotingProof<Number, Id, Signature>
impl<Number, Id, Signature> UnwindSafe for DoubleVotingProof<Number, Id, Signature>
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)Source§impl<T> DecodeLimit for Twhere
T: Decode,
impl<T> DecodeLimit for Twhere
T: Decode,
Source§impl<T> DecodeWithMemLimit for Twhere
T: DecodeWithMemTracking,
impl<T> DecodeWithMemLimit for Twhere
T: DecodeWithMemTracking,
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>
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 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>
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 moreSource§impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
Source§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
Source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
Source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
Source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of
T. Read moreSource§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
Source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from.Source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
Source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T.