report_equivocation_unsigned
Call v101 → v148, v149 → current #1Reports GRANDPA equivocation without requiring a signed transaction.
View calls on chainCall Workflow
This diagram shows the call execution flow: starting with report_equivocation_unsigned, 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
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
See [`Pallet::report_equivocation_unsigned`].
Input Parameters
| # | Name | Type | Description |
|---|---|---|---|
| 0 | equivocation_proof | EquivocationProof Box<EquivocationProof<T::Hash, BlockNumberFor<T>>> | equivocation_proof (EquivocationProof) |
| 1 | key_owner_proof | Void T::KeyOwnerProof | 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
- 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
// ----------------------------------------------------------------------
// HEADS UP: 1 arg below has a complex type with no usable default.
// Look for `undefined as any` and replace it with real value
// before running — the snippet compiles, but will fail at runtime as-is.
// ----------------------------------------------------------------------
import { createClient, Binary } from "polkadot-api";
import { getWsProvider } from "polkadot-api/ws";
import { sub } from "@polkadot-api/descriptors"; // generated by: npx papi add sub -w wss://entrypoint-finney.opentensor.ai:443
const client = createClient(getWsProvider("wss://entrypoint-finney.opentensor.ai:443"));
const api = client.getTypedApi(sub);
// Build report_equivocation_unsigned call (typed, named args)
const equivocation_proof = undefined as any /* EquivocationProof — replace with real value */;
const tx = api.tx.Grandpa.report_equivocation_unsigned({
equivocation_proof,
});Version History
v101 block 1 2 args
v149 block 3,014,339 2 args Current
Runtime Info
- Pallet Index
- 4
- Call Index
- 1
- First Version
- v101
- Current Version
- v411