Files
proxmox/docs/archive/NEXT_STEPS_AFTER_GENESIS_UPDATE.md

5.5 KiB

Next Steps After Genesis.json Update

Date: 2025-01-20
Action: Updated genesis.json extraData with current validator addresses

Completed Steps

  1. ExtraData Regeneration

    • Regenerated extraData field with all 5 current validator addresses
    • Verified all addresses match validator keys
    • Validated RLP encoding structure
    • Confirmed JSON syntax validity
  2. Synchronization

    • Synced updated genesis.json to ml110
    • Verified genesis.json on ml110 matches local

📋 Pre-Deployment Checklist

Files Ready

  • config/genesis.json - Updated with current validator addresses
  • keys/validators/validator-{1-5}/ - All 5 validator keys present
  • Configuration files - No old VMID/IP references
  • All files synchronized to ml110

Validator Addresses in Genesis.json

validator-1: 0x43ea6615474ac886c78182af1acbbf84346f2e9c
validator-2: 0x05db2d6b5584285cc03cd33017c0f8da32652583
validator-3: 0x23e1139cc8359872f8f4ef0d8f01c20355ac5f4b
validator-4: 0x231a55a8ae9946b5dd2dc81c4c07522df42fd3ed
validator-5: 0xc0af7f9251dc57cfb84c192c1bab20f5e312acb3

🚀 Deployment Options

From ml110:

cd /opt/smom-dbis-138-proxmox
./scripts/deployment/deploy-validated-set.sh \
  --source-project /opt/smom-dbis-138

This script will:

  • Deploy all containers (validators, sentries, RPC)
  • Copy configuration files and keys
  • Configure network settings
  • Bootstrap the network
  • Validate the deployment

Option 2: Step-by-Step Deployment

Step 1: Deploy Containers

cd /opt/smom-dbis-138-proxmox
./scripts/deployment/deploy-besu-nodes.sh

This creates:

  • 5 Validator containers (VMIDs 1000-1004)
  • 4 Sentry containers (VMIDs 1500-1503)
  • 3 RPC containers (VMIDs 2500-2502)

Step 2: Copy Configuration and Keys

./scripts/copy-besu-config.sh
# Or with node-specific directories:
./scripts/copy-besu-config-with-nodes.sh

This copies:

  • genesis.json to each container
  • Validator keys to respective containers
  • Configuration files (config-validator.toml, etc.)
  • Permissions files (permissions-nodes.toml, etc.)

Step 3: Configure Network (if needed)

# Fix container IP addresses if they're incorrect
./scripts/fix-container-ips.sh

# Verify IP configuration
./scripts/network/update-static-nodes.sh

Step 4: Bootstrap Network

./scripts/network/bootstrap-network.sh

This:

  • Updates static-nodes.json with correct enode URLs
  • Configures peer discovery
  • Sets up initial network connections

Step 5: Start Services

# Enable and start Besu services
./scripts/fix-besu-services.sh

# Verify services are running
./scripts/validate-besu-config.sh

Step 6: Validate Deployment

./scripts/validation/validate-deployment-comprehensive.sh

This validates:

  • Container status
  • Service status
  • Configuration files
  • Key files
  • Network connectivity

🔍 Post-Deployment Verification

Check Container Status

# List all containers
pct list | grep -E "100[0-4]|150[0-3]|250[0-2]"

# Check specific container
pct status 1000

Check Besu Services

# Check service status
pct exec 1000 -- systemctl status besu-validator.service

# Check logs
pct exec 1000 -- journalctl -u besu-validator.service -f

Verify Network Connectivity

# Check peer count
pct exec 1000 -- curl -X POST -H "Content-Type: application/json" \
  --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":1}' \
  http://localhost:8545

# Check block number
pct exec 1000 -- curl -X POST -H "Content-Type: application/json" \
  --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
  http://localhost:8545

Verify Consensus

# Check validators
pct exec 1000 -- curl -X POST -H "Content-Type: application/json" \
  --data '{"jsonrpc":"2.0","method":"qbft_getValidatorsByBlockNumber","params":["latest"],"id":1}' \
  http://localhost:8545

📊 Expected Results

Validators (1000-1004)

  • Status: Running
  • Service: besu-validator.service active
  • Peers: Should connect to other validators and sentries
  • Blocks: Should start producing blocks

Sentries (1500-1503)

  • Status: Running
  • Service: besu-sentry.service active
  • Peers: Should connect to validators and other sentries

RPC Nodes (2500-2502)

  • Status: Running
  • Service: besu-rpc-*.service active
  • RPC Endpoint: Accessible on port 8545

⚠️ Troubleshooting

Containers Not Starting

# Check container logs
pct enter 1000
journalctl -u besu-validator.service -n 50

Keys Not Found

# Verify keys are copied
pct exec 1000 -- ls -la /keys/validators/validator-1/

# Re-copy keys if needed
./scripts/copy-besu-config.sh

Network Issues

# Check IP addresses
pct config 1000 | grep net0

# Verify static-nodes.json
pct exec 1000 -- cat /etc/besu/static-nodes.json

Consensus Issues

  • Verify all 5 validators are running
  • Check that genesis.json is identical on all nodes
  • Verify validator keys match addresses in genesis.json extraData
  • Check QBFT configuration in config files

📝 Notes

  • All validator addresses are now correctly included in genesis.json extraData
  • The network uses dynamic validator management via QBFT
  • Validators can be added/removed via validator contract after initial deployment
  • Ensure all nodes use the same genesis.json file

Status: Ready for Deployment
Last Updated: 2025-01-20