Files
proxmox/docs/archive/QBFT_VALIDATOR_RECOGNITION_ISSUE.md

2.5 KiB

QBFT Validator Recognition Issue

Date: 2025-12-20
Critical Issue: Besu is not recognizing validators from genesis extraData

Problem

  • Genesis extraData is correct (contains 5 validator addresses in QBFT format)
  • Validator keys are deployed correctly
  • Validator addresses match extraData
  • Network connectivity is good
  • Besu returns empty validator set: qbft_getValidatorsByBlockNumber("latest") returns []
  • Validators are trying to sync instead of produce blocks
  • No QBFT consensus activity

Key Finding

Query Result:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": []
}

An empty validator set means Besu is not extracting validator addresses from the genesis extraData, even though:

  • Genesis block exists and has correct extraData
  • extraData contains 5 validator addresses in RLP-encoded QBFT format
  • All validator node addresses match addresses in extraData

Possible Root Causes

1. Besu Not Parsing Genesis extraData

  • Besu may require explicit configuration to parse QBFT extraData
  • Or there's a bug/issue with extraData parsing in Besu 23.10.0

2. Missing QBFT Configuration Option

  • There may be a required config option to enable QBFT validator detection
  • Some versions require explicit validator configuration even with genesis extraData

3. Genesis Block Initialization Issue

  • The genesis block exists, but Besu may not have processed the extraData correctly
  • This could be a database initialization issue

4. QBFT vs IBFT2 Confusion

  • Some Besu versions may use IBFT2 API instead of QBFT API
  • But IBFT2 API also returned "Method not enabled"

Next Steps

  1. Check Besu 23.10.0 QBFT Documentation: Verify if there are special requirements for QBFT validator recognition
  2. Test with a simpler genesis: Try with a minimal QBFT genesis to isolate the issue
  3. Check Besu GitHub Issues: Look for known issues with QBFT validator recognition in Besu 23.10.0
  4. Try explicit validator configuration: Even though it should be auto-detected, try explicitly configuring validators

Configuration Status

  • Besu Version: 23.10.0
  • QBFT Config in Genesis: Present (blockperiodseconds: 2, epochlength: 30000)
  • extraData Format: Correct (RLP-encoded QBFT format)
  • RPC Enabled: With QBFT API
  • Validator Keys: Present and matching

Impact

Blocks cannot be produced because Besu doesn't recognize any validators. Without validators, QBFT consensus cannot start, and the network will remain at block 0 indefinitely.