This guide covers creating validator, bootnode, and fullnode instances for your Besu network.
Prerequisites
- ChainLaunch running at
http://localhost:8100 - A Besu network created
Node Types
| Type | Purpose | Consensus | Stores state |
|---|---|---|---|
| Validator | Creates and validates blocks | Yes | Yes |
| Bootnode | Peer discovery entry point | No | No |
| Fullnode | Syncs chain, serves RPC queries | No | Yes |
Create Nodes via UI
- Go to Nodes in the left sidebar
- Click Besu Node
- Fill in the configuration:
| Field | Description | Example |
|---|---|---|
| Name | Unique node name | validator-0 |
| Network | Select your Besu network | my-besu-network |
| Node Type | Validator, Bootnode, or Fullnode | Validator |
| P2P Port | Peer-to-peer communication | 30303 |
| RPC HTTP Port | JSON-RPC endpoint | 8545 |
| RPC WebSocket Port | WebSocket endpoint | 8546 |
| Metrics Port | Prometheus metrics | 9545 |
- Click Create Node
The node starts automatically and connects to the network.
Create Nodes via CLI
# Create a Besu testnet with 4 validators in one command
chainlaunch testnet besu --name my-besu --nodes 4 --mode docker
# Individual node creation is done through the API (see below)Create Nodes via CLI
Validator Node
chainlaunch besu create \
--name validator-0 \
--network-id 1 \
--p2p-port 30303 \
--rpc-port 8545 \
--key-id 1Bootnode
chainlaunch besu create \
--name bootnode-0 \
--network-id 1 \
--p2p-port 30303 \
--key-id 2 \
--boot-nodes ""Node Lifecycle
Start / Stop / Restart / Logs / Status
# Start / stop / restart (slug or numeric ID)
chainlaunch nodes start validator-0
chainlaunch nodes stop validator-0
chainlaunch nodes restart validator-0
# Logs (last 100 lines)
chainlaunch nodes logs validator-0 --tail 100
# Status
chainlaunch nodes get validator-0 | jq '.status'Connecting to a Node
Once a validator or fullnode is running, connect to it via JSON-RPC:
# Get latest block number
curl -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
# Get peer count
curl -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}'
# Get sync status
curl -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'Resource Planning
| Node Type | CPU | Memory | Disk |
|---|---|---|---|
| Validator | 2 cores | 4 GB | 20 GB+ |
| Bootnode | 1 core | 1 GB | 5 GB |
| Fullnode | 2 cores | 4 GB | 50 GB+ |
Tip
For QBFT/IBFT consensus, you need at least 4 validators to tolerate 1 Byzantine fault (3f + 1 where f is the number of faulty nodes).
Next Steps
- Manage Validators to add/remove validators from a running network
- Configure Monitoring for Prometheus metrics
- Besu Overview for consensus mechanism details