Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands - CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround - CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check - NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere - MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates - LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference Co-authored-by: Cursor <cursoragent@cursor.com>
106 lines
3.7 KiB
Markdown
106 lines
3.7 KiB
Markdown
# QBFT Consensus Troubleshooting
|
|
|
|
**Last Updated:** 2026-01-31
|
|
**Document Version:** 1.0
|
|
**Status:** Active Documentation
|
|
|
|
---
|
|
|
|
**Date**: 2025-12-20
|
|
**Issue**: Blocks not being produced despite validators being connected
|
|
|
|
## Current Status
|
|
|
|
### ✅ What's Working
|
|
- All validator keys deployed correctly
|
|
- Validator addresses match genesis extraData
|
|
- Network connectivity is good (10 peers connected)
|
|
- Services are running
|
|
- Genesis extraData is correct (5 validator addresses in QBFT format)
|
|
- QBFT configuration present in genesis (`blockperiodseconds: 2`, `epochlength: 30000`)
|
|
- RPC now enabled on validators (with QBFT API)
|
|
|
|
### ❌ What's Not Working
|
|
- **No blocks being produced** (still at block 0)
|
|
- **No QBFT consensus activity** in logs
|
|
- Validators are looking for "sync targets" instead of producing blocks
|
|
- No QBFT-specific log messages (no "proposing block", "QBFT consensus", etc.)
|
|
|
|
## Root Cause Analysis
|
|
|
|
The critical observation: **Validators are trying to sync from peers instead of producing blocks**.
|
|
|
|
In QBFT:
|
|
- Validators should **produce blocks** (not sync from others)
|
|
- Non-validators sync from validators
|
|
- If validators are looking for sync targets, they don't recognize themselves as validators
|
|
|
|
## Configuration Verified
|
|
|
|
### Genesis Configuration ✅
|
|
```json
|
|
{
|
|
"config": {
|
|
"qbft": {
|
|
"blockperiodseconds": 2,
|
|
"epochlength": 30000,
|
|
"requesttimeoutseconds": 10
|
|
}
|
|
},
|
|
"extraData": "0xf88fa00000000000000000000000000000000000000000000000000000000000000000f869941c25c54bf177ecf9365445706d8b9209e8f1c39b94c4c1aeeb5ab86c6179fc98220b51844b749354469422f37f6faaa353e652a0840f485e71a7e5a8937394573ff6d00d2bdc0d9c0c08615dc052db75f825749411563e26a70ed3605b80a03081be52aca9e0f141c080c0"
|
|
}
|
|
```
|
|
|
|
Contains 5 validator addresses:
|
|
1. `0x1c25c54bf177ecf9365445706d8b9209e8f1c39b`
|
|
2. `0xc4c1aeeb5ab86c6179fc98220b51844b74935446`
|
|
3. `0x22f37f6faaa353e652a0840f485e71a7e5a89373`
|
|
4. `0x573ff6d00d2bdc0d9c0c08615dc052db75f82574`
|
|
5. `0x11563e26a70ed3605b80a03081be52aca9e0f141`
|
|
|
|
### Validator Configuration ✅
|
|
- `miner-enabled=false` (correct for QBFT)
|
|
- `sync-mode="FULL"` (correct)
|
|
- Validator keys present at `/keys/validators/validator-*/`
|
|
- Node key at `/data/besu/key` matches validator key
|
|
- RPC enabled with QBFT API
|
|
|
|
## Possible Issues
|
|
|
|
### 1. Besu Not Recognizing QBFT Consensus
|
|
- **Symptom**: No QBFT log messages, trying to sync instead of produce
|
|
- **Possible cause**: Besu may not be detecting QBFT from genesis
|
|
- **Check**: Look for consensus engine initialization in logs
|
|
|
|
### 2. Validator Address Mismatch
|
|
- **Status**: ✅ Verified - addresses match
|
|
- All validator addresses in logs match extraData
|
|
|
|
### 3. Missing Validator Key Configuration
|
|
- **Status**: ⚠️ Unknown
|
|
- Besu should auto-detect validators from genesis extraData
|
|
- But config file has no explicit validator key path
|
|
|
|
### 4. Network Synchronization Issue
|
|
- **Status**: ✅ Verified - peers connected
|
|
- All validators can see each other (10 peers each)
|
|
|
|
## Next Steps
|
|
|
|
1. **Check QBFT Validator Set**: Query `qbft_getValidatorsByBlockNumber` via RPC to see if validators are recognized
|
|
2. **Check Consensus Engine**: Verify Besu is actually using QBFT consensus engine
|
|
3. **Review Besu Documentation**: Check if there's a required configuration option for QBFT validators
|
|
4. **Check Logs for Errors**: Look for any silent failures in consensus initialization
|
|
|
|
## Applied Fixes
|
|
|
|
1. ✅ Enabled RPC on validators with QBFT API
|
|
2. ✅ Verified all validator keys and addresses
|
|
3. ✅ Confirmed genesis extraData is correct
|
|
4. ✅ Verified network connectivity
|
|
|
|
## Status
|
|
|
|
**Still investigating** - Validators are connected but not producing blocks. The lack of QBFT consensus activity in logs suggests Besu may not be recognizing this as a QBFT network or the nodes as validators.
|
|
|