Trait pallet_grandpa::HandleEquivocation[][src]

pub trait HandleEquivocation<T: Config> {
    type Offence: GrandpaOffence<T::KeyOwnerIdentification>;
    type ReportLongevity: Get<u64>;
    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>[src]

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

type ReportLongevity: Get<u64>[src]

The longevity, in blocks, that the equivocation report is valid for. When using the staking pallet this should be equal to the bonding duration (in blocks, not eras).

Loading content...

Required methods

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

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
[src]

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
[src]

Create and dispatch an equivocation report extrinsic.

fn block_author() -> Option<T::AccountId>[src]

Fetch the current block author id, if defined.

Loading content...

Implementations on Foreign Types

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

type Offence = GrandpaEquivocationOffence<T::KeyOwnerIdentification>

type ReportLongevity = ()

Loading content...

Implementors

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

type Offence = O

type ReportLongevity = L

Loading content...