
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.
Node Management Commands
Node Management Commands
- 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
andsudo kill -9 <PID>
- Remove Bor directories:
sudo rm -rf /etc/bor/*
Frequently Used Bor IPC & RPC Commands
Frequently Used Bor IPC & RPC Commands
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
Sync Status of Heimdall
Sync Status of Heimdall
To check if Heimdall is synced, run:
Latest Block Height on Heimdall
Latest Block Height on Heimdall
To check the latest block height on Heimdall, run:
Latest Block Height on Bor
Latest Block Height on Bor
To check the latest block height on Bor, use:
Cleanup: Deleting Remnants of Heimdall and Bor
Cleanup: Deleting Remnants of Heimdall and Bor
For Linux package:For Binaries:
Terminate Bor Process
Terminate Bor Process
For Linux:For Binaries:
Retrieve Latest Peer Details
Retrieve Latest Peer Details
To retrieve the latest peer details, run:
Stop Heimdall and Bor Services
Stop Heimdall and Bor Services
For Linux packages:For Binaries:
Remove Heimdall and Bor Directories
Remove Heimdall and Bor Directories
For Linux packages:For Binaries: