3.8 KiB
3.8 KiB
QBFT Validator Key Configuration Investigation
Date: $(date)
Issue: Validators are connected but not producing blocks - they're looking for sync targets instead
Problem Summary
- ✅ 5 validators connected to network
- ✅ All configuration files correct
- ✅ Validator keys present at
/keys/validators/validator-{N}/ - ❌ Validators are searching for "sync targets" instead of producing blocks
- ❌ Still at block 0 (genesis)
Critical Finding
Log Message Pattern:
Unable to find sync target. Currently checking 8 peers for usefulness
This suggests that Besu thinks these nodes need to sync from other nodes, rather than recognizing them as validators that should produce blocks.
Current Configuration
Validator Config (config-validator.toml)
miner-enabled=false
miner-coinbase="0x0000000000000000000000000000000000000000"
sync-mode="FULL"
Validator Keys Location
/keys/validators/validator-{N}/key.priv✅ Present/keys/validators/validator-{N}/address.txt✅ Present/keys/validators/validator-{N}/key.pem✅ Present
Genesis Configuration
- QBFT config:
{blockperiodseconds: 2, epochlength: 30000, requesttimeoutseconds: 10} - No
validatorsarray (correct for dynamic validators) extraDatacontains 5 validator addresses (RLP-encoded)
Research Findings
1. Validator Key Discovery
- Besu may need explicit configuration to find validator keys
- Keys are at
/keys/validators/validator-{N}/but Besu might not auto-discover them - Documentation mentions "Each validator node references its key directory in config-validator.toml" but we don't see this in current config
2. QBFT Dynamic Validators
- Network uses dynamic validator management (no static validators array in genesis)
- Initial validator set comes from
extraDatafield - Validators still need to know their own key to sign blocks
3. Miner Configuration
miner-enabled=falseis correct for QBFT (QBFT doesn't use mining)- But
miner-coinbasemight need to be set to validator address for QBFT to recognize the node as a validator
Possible Solutions to Investigate
Option 1: Set miner-coinbase to Validator Address
miner-coinbase="0x<validator-address>"
- Each validator would use its own address from
/keys/validators/validator-{N}/address.txt - This might tell Besu "I am a validator, produce blocks"
Option 2: Configure Validator Key Path
- Research if Besu has a
validator-keys-pathor similar config option - Or if keys need to be in a specific location that Besu checks by default
Option 3: Verify Key Loading
- Check logs for messages about loading validator keys
- If no key loading messages, Besu may not be finding/using the keys
Option 4: Check Initial Validator Set
- For dynamic validators, verify that the initial set from extraData is correct
- Ensure all 5 validators are in the initial set
Next Steps
- ✅ Verify validator addresses match genesis extraData (DONE - all match)
- ⏳ Check logs for validator key loading messages
- ⏳ Research if
miner-coinbaseshould be set to validator address - ⏳ Test setting
miner-coinbaseto each validator's address - ⏳ Check if Besu needs explicit validator key path configuration
Key Insight
The fact that validators are looking for "sync targets" instead of producing blocks suggests that Besu doesn't recognize these nodes as validators.
In QBFT, validators should:
- NOT be looking for sync targets
- Be actively participating in consensus
- Proposing blocks based on their turn in the validator rotation
This is likely a validator key configuration issue rather than a network connectivity issue.
Last Updated: $(date)
Status: Investigating validator key configuration for QBFT block production