Files
proxmox/docs/archive/QBFT_VALIDATOR_RECOGNITION_ISSUE.md

69 lines
2.5 KiB
Markdown

# 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**:
```json
{
"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.