# 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.

