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>
125 lines
3.5 KiB
Markdown
125 lines
3.5 KiB
Markdown
# 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 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@)
|
||
|
||
```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.
|