report_equivocation
Call v101 → current #0Reports GRANDPA voter equivocation (double voting) with ownership proof.
View calls on chainCall Workflow
This diagram shows the call execution flow: starting with report_equivocation, passing through validation
(signature, nonce, mortality, fee payment), then pre-dispatch checks, followed by dispatch, and finally post-dispatch where ExtrinsicSuccess is emitted and fees are settled.
Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.
Click items to navigate. Pan and zoom to explore.
Used by: validatorsdevelopers
The Big Picture
GRANDPA consensus requires honest voting - validators must only vote for one block per round. If a validator votes for two different blocks at the same height (equivocation), they're breaking consensus rules. This call lets anyone submit proof of such misbehavior, which triggers slashing and protects network integrity.
Use Cases
- Report misbehaving GRANDPA validators who vote for conflicting blocks
- Enforce consensus integrity by punishing double voters
- Earn reporter rewards by detecting and reporting equivocations
From Chain Metadata
Report voter equivocation/misbehavior. This method will verify the equivocation proof and validate the given key ownership proof against the extracted offender. If both are valid, the offence will be reported.
Input Parameters
| # | Name | Type | Description |
|---|---|---|---|
| 0 | equivocation_proof | EquivocationProof | equivocation_proof (EquivocationProof) |
| 1 | key_owner_proof | Void | key_owner_proof (Void) |
Permissions
Origin
Unknown
Required Role
Permission data inferred from metadata. May be incomplete.
Requirements
- Equivocation proof is valid and demonstrates double voting
- Key ownership proof validates the offender held the key during that session
- Same equivocation has not already been reported
Effects
Postconditions
- Equivocation offence is recorded on-chain
- Offender may be slashed based on network rules
Side Effects
- May trigger validator slashing
- Offence is added to the offences pallet for processing
Code Examples
import { ApiPromise, WsProvider } from "@polkadot/api";
import { stringCamelCase } from "@polkadot/util";
const provider = new WsProvider("wss://entrypoint-finney.opentensor.ai:443");
const api = await ApiPromise.create({ provider });
// Build report_equivocation call
const equivocation_proof = 0 as any /* EquivocationProof */;
const key_owner_proof = 0 as any /* Void */;
const call = api.tx[stringCamelCase("Grandpa")][stringCamelCase("report_equivocation")](
equivocation_proof,
key_owner_proof
);Runtime Info
- Pallet Index
- 4
- Call Index
- 0
- First Version
- v101
- Current Version
- v393