[][src]Trait pallet_grandpa::HandleEquivocation

pub trait HandleEquivocation<T: Trait> {
    type Offence: GrandpaOffence<T::KeyOwnerIdentification>;
    fn report_offence(
        reporters: Vec<T::AccountId>,
        offence: Self::Offence
    ) -> Result<(), OffenceError>;
fn is_known_offence(
        offenders: &[T::KeyOwnerIdentification],
        time_slot: &<Self::Offence as Offence<T::KeyOwnerIdentification>>::TimeSlot
    ) -> bool;
fn submit_unsigned_equivocation_report(
        equivocation_proof: EquivocationProof<T::Hash, T::BlockNumber>,
        key_owner_proof: T::KeyOwnerProof
    ) -> DispatchResult;
fn block_author() -> Option<T::AccountId>; }

A trait with utility methods for handling equivocation reports in GRANDPA. The offence type is generic, and the trait provides , reporting an offence triggered by a valid equivocation report, and also for creating and submitting equivocation report extrinsics (useful only in offchain context).

Associated Types

type Offence: GrandpaOffence<T::KeyOwnerIdentification>

The offence type used for reporting offences on valid equivocation reports.

Loading content...

Required methods

fn report_offence(
    reporters: Vec<T::AccountId>,
    offence: Self::Offence
) -> Result<(), OffenceError>

Report an offence proved by the given reporters.

fn is_known_offence(
    offenders: &[T::KeyOwnerIdentification],
    time_slot: &<Self::Offence as Offence<T::KeyOwnerIdentification>>::TimeSlot
) -> bool

Returns true if all of the offenders at the given time slot have already been reported.

fn submit_unsigned_equivocation_report(
    equivocation_proof: EquivocationProof<T::Hash, T::BlockNumber>,
    key_owner_proof: T::KeyOwnerProof
) -> DispatchResult

Create and dispatch an equivocation report extrinsic.

fn block_author() -> Option<T::AccountId>

Fetch the current block author id, if defined.

Loading content...

Implementations on Foreign Types

impl<T: Trait> HandleEquivocation<T> for ()[src]

Loading content...

Implementors

impl<T, R, O> HandleEquivocation<T> for EquivocationHandler<T::KeyOwnerIdentification, R, O> where
    T: Trait + Trait + SendTransactionTypes<Call<T>>,
    R: ReportOffence<T::AccountId, T::KeyOwnerIdentification, O>,
    O: GrandpaOffence<T::KeyOwnerIdentification>, 
[src]

type Offence = O

Loading content...