- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands - CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround - CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check - NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere - MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates - LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference Co-authored-by: Cursor <cursoragent@cursor.com>
7.3 KiB
Besu Version-Specific Configuration Guide
Last Updated: 2026-01-31
Document Version: 1.0
Status: Active Documentation
Date: 2026-01-21
Version: Besu 23.10.0+
Status: ✅ ACTIVE
Overview
This guide documents configuration requirements specific to Besu version 23.10.0 and later, which introduced the layered transaction pool as the default implementation.
Version Information
Current Deployment
- Besu Version: 23.10.0
- Transaction Pool: Layered (default)
- Consensus: QBFT
- Network: Permissioned (ChainID 138)
Breaking Changes in 23.10.0
-
Layered Transaction Pool Default
- Layered pool is now the default (replaces legacy pool)
- Legacy pool options are incompatible and cause crashes
- Must use layered options or defaults
-
Deprecated Options
tx-pool-max-size(legacy)tx-pool-limit-by-account-percentage(legacy)tx-pool-retention-hours(legacy)
Transaction Pool Configuration
❌ DO NOT USE (Legacy Options)
These options will crash Besu 23.10.0+ when using the default layered pool:
# DO NOT ADD - Causes "Could not use legacy transaction pool options with layered implementation"
tx-pool-max-size=8192
tx-pool-limit-by-account-percentage=0.5
tx-pool-retention-hours=12
Error Message:
Could not use legacy transaction pool options with layered implementation
✅ USE (Layered Options)
If you need to tune the transaction pool, use these layered options:
# Layered Transaction Pool Configuration (optional - defaults work well)
tx-pool-max-future-by-sender=200 # Max future transactions per sender
tx-pool-layer-max-capacity=12500000 # Max capacity per layer (bytes)
tx-pool-max-prioritized=2000 # Max transactions in prioritized layer
tx-pool-price-bump=10 # Price bump for replacement (%)
Default Behavior
If no tx-pool options are specified, Besu 23.10.0+ uses:
- Layered transaction pool (default)
- Memory-based limits: ~25 MB total (12.5 MB per layer)
- Prioritized layer: 2000 transactions max
- Future transactions: 200 per sender max
Recommendation: Use defaults unless you have specific requirements.
Configuration by Node Type
Validator Nodes
File: /etc/besu/config-validator.toml
Required:
- ✅ No legacy tx-pool options
- ✅ Use layered pool (default) or layered options only
Example (minimal):
# Transaction Pool
# (No options = use layered pool defaults)
Example (tuned, with eviction to reduce stuck txs):
# Transaction Pool Configuration (Layered)
tx-pool-max-future-by-sender=200
tx-pool-layer-max-capacity=12500000
tx-pool-max-prioritized=2000
tx-pool-price-bump=10
# tx-pool-min-score=0 — omit; not supported in some Besu builds (see BLOCK_PRODUCTION_FIX_RUNBOOK.md)
To apply to all validators: bash scripts/fix-all-validators-and-txpool.sh (see TXPOOL_EVICTION_PREVENT_STUCK.md).
RPC Nodes
File: /etc/besu/config-rpc-core.toml (or similar)
Required:
- ✅ No legacy tx-pool options
- ✅ Use layered pool (default) or layered options only
- ✅ RPC timeout: 120+ seconds (for large deployments)
Example:
# Transaction Pool Configuration (Layered)
tx-pool-max-future-by-sender=200
tx-pool-layer-max-capacity=12500000
tx-pool-max-prioritized=2000
tx-pool-price-bump=10
# RPC Timeout (increased for large deployments)
rpc-http-timeout=120
Migration from Legacy Configuration
If You Have Legacy Options
-
Remove legacy options:
# Remove these lines from config files tx-pool-max-size=8192 tx-pool-limit-by-account-percentage=0.5 tx-pool-retention-hours=12 -
Restart node:
systemctl restart besu-validator # or systemctl restart besu-rpc-core -
Verify:
# Check logs for errors journalctl -u besu-validator -n 50 # Verify service is active systemctl is-active besu-validator
If You Need Tuning
-
Add layered options (if needed):
tx-pool-max-future-by-sender=200 tx-pool-max-prioritized=2000 -
Test and monitor:
- Monitor transaction inclusion rates
- Check for eviction issues
- Adjust if needed
Compatibility Checking
Automated Check
Use the compatibility checker script:
PROXMOX_USER=root bash scripts/check-besu-compatibility.sh
This script:
- Checks for legacy tx-pool options
- Verifies layered options (if present)
- Reports compatibility issues
Manual Check
# Check for legacy options
grep -E 'tx-pool-max-size|tx-pool-limit-by-account-percentage' /etc/besu/config-validator.toml
# If found, remove them
# If not found, you're good (using defaults)
Troubleshooting
Validator Crashes on Startup
Symptom: Validator fails to start with error:
Could not use legacy transaction pool options with layered implementation
Solution:
- Check config file for legacy options
- Remove legacy options
- Restart validator
Transactions Not Being Included
Possible Causes:
- Transaction pool eviction (too many transactions)
- Gas price too low
- Network propagation issues
- Validator not receiving transactions
Solutions:
- Check transaction pool capacity (may need to increase
tx-pool-layer-max-capacity) - Verify gas prices meet validator requirements
- Check peer connections
- Review validator logs for propagation issues
Empty Blocks
Possible Causes:
- No transactions in pool
- Transactions being evicted
- Gas price rejection
- Network connectivity issues
Solutions:
- Check pending transactions
- Verify transaction pool configuration
- Check gas price settings
- Verify peer connections
Best Practices
Configuration
- Use Defaults First: Start with default layered pool settings
- Tune Only If Needed: Only add layered options if you have specific requirements
- Test Changes: Test configuration changes in non-production first
- Monitor: Monitor transaction inclusion rates after changes
Monitoring
- Block Production: Monitor block production rate
- Transaction Inclusion: Track transaction inclusion rates
- Pending Transactions: Monitor pending transaction counts
- Pool Utilization: Monitor transaction pool utilization
Maintenance
- Regular Checks: Run compatibility checks regularly
- Version Updates: Review configuration when updating Besu
- Documentation: Keep configuration documentation up to date
- Backup: Backup config files before changes
References
Related Documents
VALIDATOR_TXPOOL_MANUAL_UPDATE_GUIDE.md- Manual update proceduresBLOCKCHAIN_STABILITY_REMEDIATION_PLAN.md- Comprehensive remediation planNEXT_ACTIONS_EXECUTION_COMPLETE.md- Previous execution summary
Status: This guide is actively maintained. Update when Besu version changes or new requirements are identified.