2.5 KiB
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
- Check Besu 23.10.0 QBFT Documentation: Verify if there are special requirements for QBFT validator recognition
- Test with a simpler genesis: Try with a minimal QBFT genesis to isolate the issue
- Check Besu GitHub Issues: Look for known issues with QBFT validator recognition in Besu 23.10.0
- 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.