Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- 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>
3.5 KiB
3.5 KiB
Validator Transaction Pool Manual Update Guide
Last Updated: 2026-01-31
Document Version: 1.0
Status: Active Documentation
Date: 2026-01-21
Status: ⚠️ DO NOT ADD LEGACY TX-POOL OPTIONS
Summary
Validators use Besu layered transaction pool by default (23.10+). Do not add legacy options (tx-pool-max-size, tx-pool-limit-by-account-percentage); they cause "Could not use legacy transaction pool options with layered implementation" and crash validators.
⛔ Critical: Legacy vs Layered
Do NOT Add (crashes validators)
# DO NOT ADD — incompatible with layered pool
tx-pool-max-size=8192
tx-pool-limit-by-account-percentage=0.5
Layered-compatible options (if tuning)
Use only layered options, e.g.:
tx-pool-max-future-by-sender=200
tx-pool-layer-max-capacity=12500000
tx-pool-max-prioritized=2000
See Besu layered tx-pool docs.
Problem (context)
Symptoms
- Validators producing empty blocks (0 transactions)
- Transactions accepted by RPC but not included in blocks
- Pending transactions (e.g. nonces 13105–13113)
Root Cause (revised)
- Adding legacy tx-pool options crashes validators.
- Empty blocks may also be due to propagation, gas/fee, or RPC/validator pool config mismatch — not solely “missing” legacy settings.
Manual Access (Use root@)
# ml110 (validators 1003, 1004)
ssh root@192.168.11.10
pct exec 1003 -- bash # or 1004
# r630-01 (validators 1000, 1001, 1002)
ssh root@192.168.11.11
pct exec 1000 -- bash # or 1001, 1002
Config path: /etc/besu/config-validator.toml. Do not add legacy tx-pool options.
Verification
Check for Legacy Tx-Pool (Should Be Absent)
pct exec 1003 -- grep -i "tx-pool" /etc/besu/config-validator.toml
If you see tx-pool-max-size or tx-pool-limit-by-account-percentage, remove them — they crash the layered pool.
Check Validator Service Status
# Check service is running
pct exec 1003 -- systemctl status besu-validator
Monitor Block Production
# Check if blocks now include transactions
cast rpc eth_getBlockTransactionCountByNumber "0x$(printf '%x' $(cast block-number --rpc-url http://192.168.11.211:8545))" --rpc-url http://192.168.11.211:8545
Validators
ml110 (192.168.11.10)
- Validator 1003, 1004
r630-01 (192.168.11.11)
- Validator 1000, 1001, 1002
Monitoring
- Check block transaction counts:
cast rpc eth_getBlockTransactionCountByNumber "0x<hex>" --rpc-url http://192.168.11.211:8545 - Pending nonce:
cast rpc eth_getTransactionCount <deployer> pending --rpc-url http://192.168.11.211:8545
Troubleshooting
If Validators Crash
- Check logs:
pct exec 1003 -- journalctl -u besu-validator -n 50 - If you see "Could not use legacy transaction pool options with layered implementation", remove any
tx-pool-max-size,tx-pool-limit-by-account-percentagefrom config. - Restart:
pct exec 1003 -- systemctl restart besu-validator
If Blocks Still Empty / Transactions Pending
- Ensure no legacy tx-pool options on validators.
- Verify RPC ↔ validator peering (
cast rpc admin_peers --rpc-url http://192.168.11.211:8545). - Check gas price / min fee settings; consider layered tx-pool tuning (see above).
Status: Do not add legacy tx-pool options. Use layered options only if tuning.