Heimdall is the backbone of Shibarium’s validator and state management, built on a customized Cosmos-SDK and a forked Tendermint (Peppermint). It manages validators, block producer selection, spans, state sync between Ethereum and Shibarium, and more.
Architecture Overview
- Manages Validators: Handles validator set, power, and selection.
- Span & Producer Selection: Allocates slots and shuffles for fair, weighted block producer selection.
- State Sync: Relays and commits state between Ethereum and Shibarium.
- Governance: Parameter changes and voting via on-chain proposals.

Heimdall's role in Shibarium PoS architecture
Validator & Producer Selection
1
Slot Allocation Shibd on Validator Power
Each validator receives slots proportional to their power (e.g., power 10 = 10 slots). Higher power = higher chance of selection.
2
Shuffling & Selection
Slots are shuffled using a seed from the Ethereum block hash for each span. The first
producerCount
are selected as block producers using the Ethereum 2.0 shuffle algorithm.Span Structure & Producer Selection Code
Span Structure & Producer Selection Code
Span & Producer Parameters
Span & Producer Parameters
Key | Type | Default value | Duration |
---|---|---|---|
SprintDuration | uint64 | 16 blocks | 32 seconds |
SpanDuration | uint64 | 100 * SprintDuration = 1,600 blocks | 3,200 seconds (~53 min) |
ProducerCount | uint64 | 4 blocks | 8 seconds |
Messages & Types
MsgProposeSpan
MsgProposeSpan
ChainParams Structure
ChainParams Structure
CLI Commands
Span Management
Span Management
- Propose a span:
- Query current span:
- Query span by id:
Parameters & Chain Management
Parameters & Chain Management
- Print all params:
- Chain manager params:
Governance
Governance
- View governance params:
- Submit a proposal:
- List all proposals:
- Query a proposal:
- Vote on a proposal:
REST APIs
Name | Method | Endpoint |
---|---|---|
Span details | GET | /bor/span/span-id |
Get latest span | GET | /bor/latest-span |
Get params | GET | /bor/params |
Chain params | GET | chainmanager/params |
All proposals | GET | /gov/proposals |
Proposal detail | GET | /gov/proposals/ |
Proposal votes | GET | /gov/proposals//votes |
Governance Overview
- Proposal Submission: Validators submit proposals with a deposit. If the deposit threshold is met, voting begins.
- Voting: Validators vote on proposals. Each BONE token = 1 vote.
- Tallying: After the voting period, votes are tallied based on quorum, threshold, and veto parameters.
- Param Change Proposals: Used to update Heimdall module parameters (e.g., tx fees).