Trait pallet_grandpa::HandleEquivocation [−][src]
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.
Required methods
fn report_offence(
reporters: Vec<T::AccountId>,
offence: Self::Offence
) -> Result<(), OffenceError>
[src]
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
[src]
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
[src]
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>
[src]
Fetch the current block author id, if defined.
Implementations on Foreign Types
impl<T: Trait> HandleEquivocation<T> for ()
[src]
type Offence = GrandpaEquivocationOffence<T::KeyOwnerIdentification>
fn report_offence(
_reporters: Vec<T::AccountId>,
_offence: GrandpaEquivocationOffence<T::KeyOwnerIdentification>
) -> Result<(), OffenceError>
[src]
_reporters: Vec<T::AccountId>,
_offence: GrandpaEquivocationOffence<T::KeyOwnerIdentification>
) -> Result<(), OffenceError>
fn is_known_offence(
_offenders: &[T::KeyOwnerIdentification],
_time_slot: &GrandpaTimeSlot
) -> bool
[src]
_offenders: &[T::KeyOwnerIdentification],
_time_slot: &GrandpaTimeSlot
) -> bool
fn submit_unsigned_equivocation_report(
_equivocation_proof: EquivocationProof<T::Hash, T::BlockNumber>,
_key_owner_proof: T::KeyOwnerProof
) -> DispatchResult
[src]
_equivocation_proof: EquivocationProof<T::Hash, T::BlockNumber>,
_key_owner_proof: T::KeyOwnerProof
) -> DispatchResult
fn block_author() -> Option<T::AccountId>
[src]
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]
T: Trait + Trait + SendTransactionTypes<Call<T>>,
R: ReportOffence<T::AccountId, T::KeyOwnerIdentification, O>,
O: GrandpaOffence<T::KeyOwnerIdentification>,
type Offence = O
fn report_offence(
reporters: Vec<T::AccountId>,
offence: O
) -> Result<(), OffenceError>
[src]
reporters: Vec<T::AccountId>,
offence: O
) -> Result<(), OffenceError>
fn is_known_offence(
offenders: &[T::KeyOwnerIdentification],
time_slot: &O::TimeSlot
) -> bool
[src]
offenders: &[T::KeyOwnerIdentification],
time_slot: &O::TimeSlot
) -> bool
fn submit_unsigned_equivocation_report(
equivocation_proof: EquivocationProof<T::Hash, T::BlockNumber>,
key_owner_proof: T::KeyOwnerProof
) -> DispatchResult
[src]
equivocation_proof: EquivocationProof<T::Hash, T::BlockNumber>,
key_owner_proof: T::KeyOwnerProof
) -> DispatchResult