The Bor layer is the core component of the Shibarium network, responsible for fast block production, validator selection, and consensus. Bor operates on the principles of EIP-225 and uses the Clique consensus protocol, ensuring high throughput and security for Shibarium dApps and users.
Diagram showing Shibarium PoS architecture with Bor, Heimdall, and Ethereum layers.

Shibarium Bor Layer Architecture

Validator Committee Selection

  • Committee Selection: Validators are chosen from the pool based on their staked BONE. Selection is shuffled at regular intervals, determined by governance and network parameters.
  • Probability: The chance of being selected as a block producer is proportional to the validator’s stake.
  • Selection Process: Historical Ethereum block data is used as a seed to shuffle validators. The Tendermint proposer selection algorithm chooses a producer for each sprint.

Bor Consensus Mechanics

  • Staking: Participants stake BONE on Ethereum to become validators.
  • Block Producers: Active validators are selected by Heimdall to produce blocks on Bor.
  • Span & Sprint: A span is a set of blocks with a fixed validator set. Within each span, sprints assign a single block producer for a subset of blocks.
  • Block Authorization: Producers sign block hashes. Backup producers are designated in case of failure, with a wiggle time delay before backup activation.
  • Fork Resolution: In-turn signed blocks have higher difficulty. Bor resolves forks by selecting the chain with the highest cumulative difficulty.

State Synchronization with Ethereum

  • State Sync: Bor relays events from Ethereum using the StateSynced event. Heimdall monitors and commits these events at the start of every sprint.
  • System Calls: Bor uses system calls to update state without transactions. The receiver contract implements the IStateReceiver interface for onStateReceive execution.
  • Logs & Receipts: State-sync logs are included in Bor block receipts, ensuring all state changes are tracked and auditable.
  • Start Bor: sudo service bor start
  • Check Bor logs: tail -f bor.log
  • Locate Bor genesis file: $CONFIGPATH/bor/genesis.json
  • Terminate Bor process: ps -aux | grep bor and sudo kill -9 <PID>
  • Remove Bor directories: sudo rm -rf /etc/bor/*
  • bor attach .bor/data/bor.ipc <command> — Attach to Bor IPC.
  • admin.peers.length — Number of connected peers.
  • admin.nodeInfo — Node information.
  • eth.syncing — Node sync status.
  • eth.blockNumber — Latest block number.
  • curl http://<your ip>:8545 -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0", "id":1, "method":"bor_getSigners", "params":["0x98b3ea"]}' — Latest Bor block height.
  • curl http://<your ip>:8545 -X POST -H "Content-Type: application/json" --data '{"method":"eth_chainId","params":[],"id":1,"jsonrpc":"2.0"}' — Chain ID.
For full details on Bor and node management, see the official Shibarium Bor documentation.

Useful Configuration Commands

To check if Heimdall is synced, run:
curl http://localhost:26657https://shib-io.openstatus.dev/
To check the latest block height on Heimdall, run:
curl localhost:26657https://shib-io.openstatus.dev/
To check the latest block height on Bor, use:
curl http://<your ip>:8545 -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0", "id":1, "method":"bor_getSigners", "params":["0x98b3ea"]}'
For Linux package:
sudo dpkg -i 
sudo rm -rf /etc/bor
For Binaries:
sudo rm -rf /etc/bor
sudo rm /etc/heimdall
For Linux:
ps -aux | grep bor
sudo kill -9 <PID>
For Binaries:
cd CS-2003/bor
bash stop.sh
To retrieve the latest peer details, run:
bor attach bor.ipc
admin.peers.forEach(function(value){
    console.log(value.enode+',')
})
exit
For Linux packages:
sudo service heimdalld stop
sudo service bor stop
For Binaries:
pkill heimdalld
pkill heimdalld-bridge
cd CS-2001/bor
bash stop.sh
For Linux packages:
sudo rm -rf /etc/heimdall/*
sudo rm -rf /etc/bor/*
For Binaries:
sudo rm -rf /var/lib/heimdalld/
sudo rm -rf /var/lib/bor
I