pub trait HandleEquivocation<T: Config> {
    type ReportLongevity: Get<u64>;

    // Required methods
    fn report_offence(
        reporters: Vec<T::AccountId>,
        offence: BabeEquivocationOffence<T::KeyOwnerIdentification>
    ) -> Result<(), OffenceError>;
    fn is_known_offence(
        offenders: &[T::KeyOwnerIdentification],
        time_slot: &Slot
    ) -> bool;
    fn submit_unsigned_equivocation_report(
        equivocation_proof: EquivocationProof<T::Header>,
        key_owner_proof: T::KeyOwnerProof
    ) -> DispatchResult;
    fn block_author() -> Option<T::AccountId>;
}
Expand description

A trait with utility methods for handling equivocation reports in BABE. The trait provides methods for reporting an offence triggered by a valid equivocation report, checking the current block author (to declare as the reporter), and also for creating and submitting equivocation report extrinsics (useful only in offchain context).

Required Associated Types§

source

type ReportLongevity: Get<u64>

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).

Required Methods§

source

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

Report an offence proved by the given reporters.

source

fn is_known_offence( offenders: &[T::KeyOwnerIdentification], time_slot: &Slot ) -> bool

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

source

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

Create and dispatch an equivocation report extrinsic.

source

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

Fetch the current block author id, if defined.

Implementations on Foreign Types§

source§

impl<T: Config> HandleEquivocation<T> for ()

Implementors§