report_equivocation_unsigned
Call v101 → current #1Reports GRANDPA equivocation without requiring a signed transaction.
View calls on chainCall Workflow
Click items to navigate. Pan and zoom to explore.
The Big Picture
This is the unsigned variant of equivocation reporting, designed for block authors. When a validator building a block detects an equivocation, they can include this unsigned extrinsic in their block. The chain validates the proof and accepts the report without requiring a signature, since block authorship itself proves authorization.
Use Cases
- Allow block authors to report equivocations without paying fees
- Enable automated equivocation detection in validator software
- Ensure equivocations are reported even if the detector lacks funds
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. This extrinsic must be called unsigned and it is expected that only block authors will call it (validated in `ValidateUnsigned`), as such if the block author is defined it will be defined as the equivocation reporter.
Input Parameters
| # | Name | Type | Description |
|---|---|---|---|
| 0 | equivocation_proof | EquivocationProof | equivocation_proof (EquivocationProof) |
| 1 | key_owner_proof | Void | key_owner_proof (Void) |
Permissions
Permission data inferred from metadata. May be incomplete.
Requirements
- Equivocation proof is valid and demonstrates double voting
- Key ownership proof validates the offender
- Call is submitted by a block author (validated via ValidateUnsigned)
- Same equivocation has not already been reported
Effects
Postconditions
- Equivocation offence is recorded on-chain
- Block author is credited as the reporter
Side Effects
- May trigger validator slashing
- No transaction fee charged (inherent-like behavior)
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_unsigned 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_unsigned")](
equivocation_proof,
key_owner_proof
);Runtime Info
- Pallet Index
- 4
- Call Index
- 1
- First Version
- v101
- Current Version
- v393