mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 07:01:03 +00:00
babe: enable equivocation reporting on all runtimes (#1330)
* enable BABE equivocation reporting on all runtimes * runtime: fix parachains mock test runtime * cargo update -p sp-io Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
This commit is contained in:
@@ -169,6 +169,21 @@ impl babe::Trait for Runtime {
|
||||
|
||||
// session module is the trigger
|
||||
type EpochChangeTrigger = babe::ExternalTrigger;
|
||||
|
||||
type KeyOwnerProofSystem = Historical;
|
||||
|
||||
type KeyOwnerProof = <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(
|
||||
KeyTypeId,
|
||||
babe::AuthorityId,
|
||||
)>>::Proof;
|
||||
|
||||
type KeyOwnerIdentification = <Self::KeyOwnerProofSystem as KeyOwnerProofSystem<(
|
||||
KeyTypeId,
|
||||
babe::AuthorityId,
|
||||
)>>::IdentificationTuple;
|
||||
|
||||
type HandleEquivocation =
|
||||
babe::EquivocationHandler<Self::KeyOwnerIdentification, Offences>;
|
||||
}
|
||||
|
||||
parameter_types! {
|
||||
@@ -913,7 +928,7 @@ construct_runtime! {
|
||||
RandomnessCollectiveFlip: randomness_collective_flip::{Module, Storage},
|
||||
|
||||
// Must be before session.
|
||||
Babe: babe::{Module, Call, Storage, Config, Inherent(Timestamp)},
|
||||
Babe: babe::{Module, Call, Storage, Config, Inherent(Timestamp), ValidateUnsigned},
|
||||
|
||||
Timestamp: timestamp::{Module, Call, Storage, Inherent},
|
||||
Indices: indices::{Module, Call, Storage, Config<T>, Event<T>},
|
||||
@@ -1170,6 +1185,29 @@ sp_api::impl_runtime_apis! {
|
||||
fn current_epoch_start() -> babe_primitives::SlotNumber {
|
||||
Babe::current_epoch_start()
|
||||
}
|
||||
|
||||
fn generate_key_ownership_proof(
|
||||
_slot_number: babe_primitives::SlotNumber,
|
||||
authority_id: babe_primitives::AuthorityId,
|
||||
) -> Option<babe_primitives::OpaqueKeyOwnershipProof> {
|
||||
use codec::Encode;
|
||||
|
||||
Historical::prove((babe_primitives::KEY_TYPE, authority_id))
|
||||
.map(|p| p.encode())
|
||||
.map(babe_primitives::OpaqueKeyOwnershipProof::new)
|
||||
}
|
||||
|
||||
fn submit_report_equivocation_unsigned_extrinsic(
|
||||
equivocation_proof: babe_primitives::EquivocationProof<<Block as BlockT>::Header>,
|
||||
key_owner_proof: babe_primitives::OpaqueKeyOwnershipProof,
|
||||
) -> Option<()> {
|
||||
let key_owner_proof = key_owner_proof.decode()?;
|
||||
|
||||
Babe::submit_unsigned_equivocation_report(
|
||||
equivocation_proof,
|
||||
key_owner_proof,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl authority_discovery_primitives::AuthorityDiscoveryApi<Block> for Runtime {
|
||||
|
||||
Reference in New Issue
Block a user