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>
3.7 KiB
3.7 KiB
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 ✅
{
"config": {
"qbft": {
"blockperiodseconds": 2,
"epochlength": 30000,
"requesttimeoutseconds": 10
}
},
"extraData": "0xf88fa00000000000000000000000000000000000000000000000000000000000000000f869941c25c54bf177ecf9365445706d8b9209e8f1c39b94c4c1aeeb5ab86c6179fc98220b51844b749354469422f37f6faaa353e652a0840f485e71a7e5a8937394573ff6d00d2bdc0d9c0c08615dc052db75f825749411563e26a70ed3605b80a03081be52aca9e0f141c080c0"
}
Contains 5 validator addresses:
0x1c25c54bf177ecf9365445706d8b9209e8f1c39b0xc4c1aeeb5ab86c6179fc98220b51844b749354460x22f37f6faaa353e652a0840f485e71a7e5a893730x573ff6d00d2bdc0d9c0c08615dc052db75f825740x11563e26a70ed3605b80a03081be52aca9e0f141
Validator Configuration ✅
miner-enabled=false(correct for QBFT)sync-mode="FULL"(correct)- Validator keys present at
/keys/validators/validator-*/ - Node key at
/data/besu/keymatches 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
- Check QBFT Validator Set: Query
qbft_getValidatorsByBlockNumbervia RPC to see if validators are recognized - Check Consensus Engine: Verify Besu is actually using QBFT consensus engine
- Review Besu Documentation: Check if there's a required configuration option for QBFT validators
- Check Logs for Errors: Look for any silent failures in consensus initialization
Applied Fixes
- ✅ Enabled RPC on validators with QBFT API
- ✅ Verified all validator keys and addresses
- ✅ Confirmed genesis extraData is correct
- ✅ 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.