Skip to main content

Grandpa

Calls

noteStalled

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.

Namespace

api.tx.grandpa.noteStalled

Type

function noteStalled(
  delay: u32,
  best_finalized_block_number: u32
)

reportEquivocation

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.

Namespace

api.tx.grandpa.reportEquivocation

Type

function reportEquivocation(
  equivocation_proof: SpFinalityGrandpaEquivocationProof,
  key_owner_proof: SpCoreVoid
)

reportEquivocationUnsigned

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.

Namespace

api.tx.grandpa.reportEquivocationUnsigned

Type

function reportEquivocationUnsigned(
  equivocation_proof: SpFinalityGrandpaEquivocationProof,
  key_owner_proof: SpCoreVoid
)

Storage

currentSetId

The number of changes (both in terms of keys and underlying economic responsibilities) in the "set" of Grandpa validators from genesis.

Namespace

api.query.grandpa.currentSetId

Type

function currentSetId(

): u64

nextForced

next block number where we can force a change.

Namespace

api.query.grandpa.nextForced

Type

function nextForced(

): Option<u32>

pendingChange

Pending change: (signaled at, scheduled change).

Namespace

api.query.grandpa.pendingChange

Type

function pendingChange(

): Option<PalletGrandpaStoredPendingChange>

setIdSession

A mapping from grandpa set ID to the index of the most recent session for which its members were responsible.

TWOX-NOTE: SetId is not under user control.

Namespace

api.query.grandpa.setIdSession

Type

function setIdSession(
  u64
): Option<u32>

stalled

true if we are currently stalled.

Namespace

api.query.grandpa.stalled

Type

function stalled(

): Option<(u32,u32)>

state

State of the current authority set.

Namespace

api.query.grandpa.state

Type

function state(

): PalletGrandpaStoredState

Events

NewAuthorities

New authority set has been applied.

Namespace

api.events.grandpa.NewAuthorities

Type

type NewAuthorities = {
  authority_set: Vec<(SpFinalityGrandpaAppPublic,u64)>
}

Paused

Current authority set has been paused.

Namespace

api.events.grandpa.Paused

Type

type Paused = {

}

Resumed

Current authority set has been resumed.

Namespace

api.events.grandpa.Resumed

Type

type Resumed = {

}

Errors

ChangePending

Attempt to signal GRANDPA change with one already pending.

Namespace

api.errors.grandpa.ChangePending

DuplicateOffenceReport

A given equivocation report is valid but already previously reported.

Namespace

api.errors.grandpa.DuplicateOffenceReport

InvalidEquivocationProof

An equivocation proof provided as part of an equivocation report is invalid.

Namespace

api.errors.grandpa.InvalidEquivocationProof

InvalidKeyOwnershipProof

A key ownership proof provided as part of an equivocation report is invalid.

Namespace

api.errors.grandpa.InvalidKeyOwnershipProof

PauseFailed

Attempt to signal GRANDPA pause when the authority set isn't live (either paused or already pending pause).

Namespace

api.errors.grandpa.PauseFailed

ResumeFailed

Attempt to signal GRANDPA resume when the authority set isn't paused (either live or already pending resume).

Namespace

api.errors.grandpa.ResumeFailed

TooSoon

Cannot signal forced change so soon after last.

Namespace

api.errors.grandpa.TooSoon

Constants

maxAuthorities

Max Authorities in use

Namespace

api.consts.grandpa.maxAuthorities

Type

type maxAuthorities = u32

JSON-RPC Methods

proveFinality

Prove finality for the given block number, returning the Justification for the last block in the set.

Interface

api.rpc.grandpa.proveFinality(blockNumber: BlockNumber): Option<EncodedFinalityProofs>

JSON

{ "id":1, "jsonrpc":"2.0", "method":"grandpa_proveFinality", "params":[blockNumber: BlockNumber] }

roundState

Returns the state of the current best round state as well as the ongoing background rounds

Interface

api.rpc.grandpa.roundState(): ReportedRoundStates

JSON

{ "id":1, "jsonrpc":"2.0", "method":"grandpa_roundState", "params":[] }

subscribeJustifications

Subscribes to grandpa justifications

Interface

api.rpc.grandpa.subscribeJustifications(): JustificationNotification

JSON

{ "id":1, "jsonrpc":"2.0", "method":"grandpa_subscribeJustifications", "params":[] }