
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
IStateReceiverinterface 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 borandsudo 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.
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: