Files
proxmox/docs/05-network/BESU_MAINNET_VS_CHAIN138_COMPARISON.md
defiQUG cb47cce074 Complete markdown files cleanup and organization
- Organized 252 files across project
- Root directory: 187 → 2 files (98.9% reduction)
- Moved configuration guides to docs/04-configuration/
- Moved troubleshooting guides to docs/09-troubleshooting/
- Moved quick start guides to docs/01-getting-started/
- Moved reports to reports/ directory
- Archived temporary files
- Generated comprehensive reports and documentation
- Created maintenance scripts and guides

All files organized according to established standards.
2026-01-06 01:46:25 -08:00

3.8 KiB

Besu Configuration: Mainnet vs Chain 138 Comparison

Date: $(date)


Command Comparison

Ethereum Mainnet Configuration

besu \
--network=mainnet \
--sync-mode=FULL \
--rpc-http-enabled \
--rpc-http-api=ETH,NET,WEB3 \
--rpc-http-cors-origins="*" \
--rpc-http-host=0.0.0.0 \
--rpc-http-port=8545

This configuration:

  • Connects to Ethereum Mainnet (chain ID 1)
  • Downloads entire mainnet blockchain
  • No genesis file needed (uses mainnet genesis)
  • Public network with public discovery
  • No permissioning
  • Read-only APIs (ETH, NET, WEB3)

Chain 138 Equivalent Configuration

For your private/permissioned chain 138 network, the equivalent would be:

besu \
--data-path=/data/besu \
--genesis-file=/genesis/genesis.json \
--network-id=138 \
--sync-mode=FULL \
--rpc-http-enabled \
--rpc-http-api=ETH,NET,WEB3 \
--rpc-http-cors-origins="*" \
--rpc-http-host=0.0.0.0 \
--rpc-http-port=8545 \
--permissions-nodes-config-file-enabled=true \
--permissions-nodes-config-file=/permissions/permissions-nodes.toml \
--static-nodes-file=/genesis/static-nodes.json \
--discovery-enabled=false \
--p2p-host=0.0.0.0 \
--p2p-port=30303 \
--miner-enabled=false

Key Differences:

Setting Mainnet Chain 138
Network --network=mainnet --network-id=138
Genesis Auto (mainnet) --genesis-file=/genesis/genesis.json
Permissioning Disabled Enabled (local nodes only)
Discovery Enabled (public) Disabled (private)
Static Nodes None Required (static-nodes.json)
Node Allowlist None Required (permissions-nodes.toml)
Consensus PoS (mainnet) QBFT (your network)

Important Notes

Don't Use Mainnet Config for Chain 138

The mainnet configuration you showed will NOT work for your chain 138 network because:

  1. --network=mainnet will connect to Ethereum mainnet (chain ID 1), not your chain 138
  2. No genesis file - mainnet uses hardcoded genesis, your network needs a custom genesis
  3. No permissioning - mainnet is public, your network is permissioned
  4. Public discovery - mainnet discovers any node, your network only connects to allowlisted nodes

Use Chain 138 Configuration

Your current chain 138 configuration (in TOML format) already has all the correct settings:

  • network-id=138 (not mainnet)
  • genesis-file=/genesis/genesis.json (required)
  • permissions-nodes-config-file-enabled=true (required for private network)
  • discovery-enabled=false (for VMID 2500 - strict local/permissioned nodes only)

Current Chain 138 Configuration (VMID 2500)

Your current configuration is correct for chain 138:

# config-rpc-core.toml (VMID 2500)
data-path="/data/besu"
genesis-file="/genesis/genesis.json"
network-id=138
sync-mode="FULL"
rpc-http-enabled=true
rpc-http-api=["ETH","NET","WEB3","ADMIN","DEBUG","TXPOOL"]
permissions-nodes-config-file-enabled=true
permissions-nodes-config-file="/permissions/permissions-nodes.toml"
static-nodes-file="/genesis/static-nodes.json"
discovery-enabled=false

If You Need Mainnet Access

If you want to run a separate Besu node for Ethereum mainnet (separate from chain 138), you would:

  1. Use a separate data directory (different from /data/besu)
  2. Run on different ports (e.g., 8547, 8548)
  3. Use the mainnet configuration you showed
  4. This would be a completely separate node from your chain 138 network

Example separate mainnet node:

besu \
--data-path=/data/besu-mainnet \
--network=mainnet \
--sync-mode=FULL \
--rpc-http-enabled \
--rpc-http-api=ETH,NET,WEB3 \
--rpc-http-cors-origins="*" \
--rpc-http-host=0.0.0.0 \
--rpc-http-port=8547 \
--rpc-ws-port=8548

This would run alongside your chain 138 nodes but be completely separate.


Last Updated: $(date)