223 lines
5.5 KiB
Markdown
223 lines
5.5 KiB
Markdown
# 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
|
|
|
|
### Option 1: Complete Validated Deployment (Recommended)
|
|
|
|
From ml110:
|
|
```bash
|
|
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
|
|
```bash
|
|
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
|
|
```bash
|
|
./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)
|
|
```bash
|
|
# 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
|
|
```bash
|
|
./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
|
|
```bash
|
|
# Enable and start Besu services
|
|
./scripts/fix-besu-services.sh
|
|
|
|
# Verify services are running
|
|
./scripts/validate-besu-config.sh
|
|
```
|
|
|
|
#### Step 6: Validate Deployment
|
|
```bash
|
|
./scripts/validation/validate-deployment-comprehensive.sh
|
|
```
|
|
|
|
This validates:
|
|
- Container status
|
|
- Service status
|
|
- Configuration files
|
|
- Key files
|
|
- Network connectivity
|
|
|
|
## 🔍 Post-Deployment Verification
|
|
|
|
### Check Container Status
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# Check container logs
|
|
pct enter 1000
|
|
journalctl -u besu-validator.service -n 50
|
|
```
|
|
|
|
### Keys Not Found
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
|