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

125 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)
```toml
# 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.:
```toml
tx-pool-max-future-by-sender=200
tx-pool-layer-max-capacity=12500000
tx-pool-max-prioritized=2000
```
See [Besu layered tx-pool docs](https://besu.hyperledger.org/public-networks/concepts/transactions/pool).
---
## 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@)
```bash
# 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)
```bash
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
```bash
# Check service is running
pct exec 1003 -- systemctl status besu-validator
```
### Monitor Block Production
```bash
# 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.