69 lines
2.5 KiB
Markdown
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.
|
|
|