note_stalled
Call v101 → current #2Signals that GRANDPA finality has stalled and schedules a forced authority set change.
View calls on chainCall Workflow
Click items to navigate. Pan and zoom to explore.
The Big Picture
Sometimes GRANDPA gets stuck - validators might go offline, network partitions happen, or bugs cause finality to stop. This root call is the emergency recovery mechanism. It schedules a forced transition to a new validator set, allowing the network to resume finality after a safety delay.
Use Cases
- Recover from GRANDPA consensus failures
- Transition to a new validator set when current set is unresponsive
- Emergency recovery when finality has stopped progressing
From Chain Metadata
Note that the current authority set of the GRANDPA finality gadget has stalled. This will trigger a forced authority set change at the beginning of the next session, to be enacted `delay` blocks after that. The `delay` should be high enough to safely assume that the block signalling the forced change will not be re-orged e.g. 1000 blocks. The block production rate (which may be slowed down because of finality lagging) should be taken into account when choosing the `delay`. The GRANDPA voters based on the new authority will start voting on top of `best_finalized_block_number` for new finalized blocks. `best_finalized_block_number` should be the highest of the latest finalized block of all validators of the new authority set. Only callable by root.
Input Parameters
Permissions
Permission data inferred from metadata. May be incomplete.
Requirements
- Caller has root/sudo privileges
- GRANDPA has actually stalled (finality is not progressing)
- Delay parameter is high enough to prevent reorgs (e.g., 1000 blocks)
Effects
Storage Modified
Postconditions
- Forced authority set change is scheduled for the next session
- New validators will start voting from best_finalized_block_number
Side Effects
- May disrupt ongoing finality if called prematurely
- Network transitions to new authority set after delay
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 note_stalled call
const delay = 0;
const best_finalized_block_number = 0;
const call = api.tx[stringCamelCase("Grandpa")][stringCamelCase("note_stalled")](
delay,
best_finalized_block_number
);Runtime Info
- Pallet Index
- 4
- Call Index
- 2
- First Version
- v101
- Current Version
- v393