Skip to content

On the deprecation of checkInherents #2841

@girazoki

Description

@girazoki

We have recently started to adapt our codebase (both in Tanssi and Moonbeam) to asynchronous backing and we noticed that the CheckInherents trait is being deprecated, and in fact, it has disappeared from most of the cumulus runtimes in the register_validate_block macro:

cumulus_pallet_parachain_system::register_validate_block! {

However both moonbeam and tanssi have additional inherents, e.g., to verify block authorship, to inject randomness or to inject additional state proofs.

What we realized when removing this checkInherents is that a malicious author could decide not to inject one of the inherents (e.g., the inherent that validates block authorship) and the relay would still accept it, while the rest of the network would reject it because they would fail importing the block.

Our question goes in the direction of: why is checkInherents being deprecated? I know parachain-system now has the ConsensusHook trait that can be used to verify a set of things in the set_validation_data inherent but what happens with those inherents that required an additional argument to be injected? (e.g., an additional state proof)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions