Files
proxmox/docs/09-troubleshooting/QBFT_TROUBLESHOOTING.md
defiQUG fbda1b4beb
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
docs: Ledger Live integration, contract deploy learnings, NEXT_STEPS updates
- 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>
2026-02-12 15:46:57 -08:00

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:

  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.