Skip to content

ImOnline pallet

Derived from live runtime metadata on TRN root (pallet index 13, captured 2026-05-02). For prose-style documentation see ImOnline on the curated reference side.

Pallet index
13
Calls
1
Events
3
Errors
2
Storage items
4
Constants
1

Calls (extrinsics)

ImOnline.heartbeat

See [Pallet::heartbeat].

ts
api.tx.imOnline.heartbeat(heartbeat: {"blockNumber":"u32","sessionIndex":"u32","authorityIndex":"u32","validatorsLen":"u32"}, signature: [u8;64])
ArgumentTypeDoc
heartbeat{"blockNumber":"u32","sessionIndex":"u32","authorityIndex":"u32","validatorsLen":"u32"}Heartbeat<BlockNumberFor<T>>
signature[u8;64]<T::AuthorityId as RuntimeAppPublic>::Signature

Call index: 0

Events

ImOnline.HeartbeatReceived

A new heartbeat was received from AuthorityId.

FieldTypeDoc
authority_id[u8;32]

ImOnline.AllGood

At the end of the session, no offence was committed.

No payload.

ImOnline.SomeOffline

At the end of the session, at least one validator was found to be offline.

FieldTypeDoc
offlineVec&lt;(SeedPrimitivesSignatureAccountId20,PalletStakingExposure)&gt;

Errors

ImOnline.InvalidKey

Non existent public key.

ImOnline.DuplicatedHeartbeat

Duplicated heartbeat.

Storage

ImOnline.HeartbeatAfter

The block number after which it's ok to send heartbeats in the current session. At the beginning of each session we set this to a value that should fall roughly in the middle of the session duration. The idea is to first wait for the validators to produce a block in the current session, so that the heartbeat later on will not be necessary. This value will only be used as a fallback if we fail to get a proper session progress estimate from NextSessionRotation, as those estimates should be more accurate then the value we calculate for HeartbeatAfter.

ts
await api.query.imOnline.heartbeatAfter()

Returns: u32

Modifier: Default

ImOnline.Keys

The current set of keys that may issue a heartbeat.

ts
await api.query.imOnline.keys()

Returns: Vec<PalletImOnlineSr25519AppSr25519Public>

Modifier: Default

ImOnline.ReceivedHeartbeats

For each session index, we keep a mapping of SessionIndex and AuthIndex.

ts
await api.query.imOnline.receivedHeartbeats(key1, key2)
  • Key: (u32,u32) (hashers: Twox64Concat, Twox64Concat)
  • Returns: bool

Modifier: Optional

ImOnline.AuthoredBlocks

For each session index, we keep a mapping of ValidatorId&lt;T&gt; to the number of blocks authored by the given authority.

ts
await api.query.imOnline.authoredBlocks(key1, key2)
  • Key: (u32,SeedPrimitivesSignatureAccountId20) (hashers: Twox64Concat, Twox64Concat)
  • Returns: u32

Modifier: Default

Constants

ImOnline.UnsignedPriority

A configuration for base priority of unsigned transactions. This is exposed so that it can be tuned for particular runtime, when multiple pallets send unsigned transactions.

Type: u64
SCALE-encoded value: 0xffffffffffffffff

Source: live chain metadata from wss://root.rootnet.live/archive/ws · captured 2026-05-02

Curated independently by Codeology. Source-attributed reference for The Root Network. Not affiliated with Futureverse / TRN Labs.