Files
proxmox/docs/06-besu/VALIDATOR_TXPOOL_MANUAL_UPDATE_GUIDE.md
defiQUG fbda1b4beb
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
docs: Ledger Live integration, contract deploy learnings, NEXT_STEPS updates
- 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>
2026-02-12 15:46:57 -08:00

3.5 KiB
Raw Permalink Blame History

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 1310513113)

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

  1. Check logs: pct exec 1003 -- journalctl -u besu-validator -n 50
  2. If you see "Could not use legacy transaction pool options with layered implementation", remove any tx-pool-max-size, tx-pool-limit-by-account-percentage from config.
  3. Restart: pct exec 1003 -- systemctl restart besu-validator

If Blocks Still Empty / Transactions Pending

  1. Ensure no legacy tx-pool options on validators.
  2. Verify RPC ↔ validator peering (cast rpc admin_peers --rpc-url http://192.168.11.211:8545).
  3. 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.