Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
Made-with: Cursor
237 lines
6.5 KiB
Markdown
237 lines
6.5 KiB
Markdown
# Validator Transaction Pool Fix - Current Status
|
|
|
|
**Last Updated:** 2026-01-31
|
|
**Document Version:** 1.0
|
|
**Status:** Active Documentation
|
|
|
|
---
|
|
|
|
**Date**: 2026-01-24
|
|
**Status**: ✅ **VALIDATORS CONFIGURED** | ⚠️ **STUCK TRANSACTIONS ISSUE**
|
|
|
|
---
|
|
|
|
## Executive Summary
|
|
|
|
The Validator Transaction Pool Configuration is **correctly applied**, but there's a separate issue with **stuck transactions in the RPC mempool** that's preventing bridge operations from completing.
|
|
|
|
---
|
|
|
|
## ✅ What's Been Fixed
|
|
|
|
### 1. Validator TX-Pool Configuration ✅
|
|
Both active validators (1003 and 1004) have the correct **layered tx-pool** configuration:
|
|
|
|
```toml
|
|
# DO NOT use legacy options (tx-pool-max-size, tx-pool-limit-by-account-percentage)
|
|
tx-pool-max-future-by-sender=200
|
|
tx-pool-layer-max-capacity=12500000
|
|
tx-pool-max-prioritized=2000
|
|
```
|
|
|
|
**Status**: ✅ **COMPLETE**
|
|
- Validators 1003 & 1004: Running with correct configuration
|
|
- Validators 1000-1002: Do not exist (were likely migrated or removed)
|
|
- Network: 12 peers connected
|
|
- Blocks: Producing regularly (block 1,301,111+)
|
|
|
|
---
|
|
|
|
## ⚠️ Remaining Issue: Stuck Transactions
|
|
|
|
### Problem
|
|
- **Nonce stuck at**: 13104
|
|
- **Blocks status**: Empty (0 transactions)
|
|
- **Root cause**: Transactions stuck in RPC mempool
|
|
- **Account**: 0x4A666F96fC8764181194447A7dFdb7d471b301C8
|
|
- **Account balance**: 999,610,163+ ETH (sufficient)
|
|
|
|
### What Was Tried
|
|
1. ✅ Restarted 7 RPC containers (VMIDs: 2304, 2305, 2306, 2307, 2308, 2402, 2403)
|
|
2. ⚠️ Could not locate the specific node serving 192.168.11.211
|
|
3. ⚠️ Nonce remains stuck after RPC restarts
|
|
|
|
### Analysis
|
|
- The RPC at 192.168.11.211 is responding (Besu v23.10.0)
|
|
- MAC address: bc:24:11:16:e7:02
|
|
- Could be running on different Proxmox host or as a VM
|
|
- RPC may be persisting mempool to disk (surviving restarts)
|
|
|
|
---
|
|
|
|
## 🎯 Solution: Skip Stuck Transactions
|
|
|
|
Since we can't clear the stuck transactions, we'll **bypass them** by using the correct nonce for new transactions.
|
|
|
|
### Created Tools
|
|
|
|
#### 1. Test Bridge Script
|
|
**Location**: `/home/intlc/projects/proxmox/scripts/test-bridge-with-fresh-nonce.sh`
|
|
|
|
**What it does**:
|
|
- Checks current nonce
|
|
- Wraps ETH to WETH9 (if needed)
|
|
- Approves WETH9 for bridge
|
|
- Provides command to execute bridge transaction
|
|
|
|
**Usage**:
|
|
```bash
|
|
cd /home/intlc/projects/proxmox
|
|
export PRIVATE_KEY="0x..."
|
|
./scripts/test-bridge-with-fresh-nonce.sh
|
|
```
|
|
|
|
#### 2. Skip Stuck Transactions Script
|
|
**Location**: `/home/intlc/projects/proxmox/scripts/skip-stuck-transactions.sh`
|
|
|
|
**What it does**:
|
|
- Shows current nonce status
|
|
- Calculates next available nonce
|
|
- Provides guidance for bypassing stuck transactions
|
|
|
|
---
|
|
|
|
## 📋 Next Steps to Complete Bridge
|
|
|
|
### Step 1: Run Test Script
|
|
```bash
|
|
cd /home/intlc/projects/proxmox
|
|
export PRIVATE_KEY="0xYourPrivateKeyHere"
|
|
./scripts/test-bridge-with-fresh-nonce.sh
|
|
```
|
|
|
|
This will:
|
|
1. Check current state
|
|
2. Wrap ETH to WETH9 (using next available nonce)
|
|
3. Approve bridge (using next available nonce)
|
|
4. Provide exact command to execute bridge
|
|
|
|
### Step 2: Execute Bridge Transaction
|
|
The script will output the exact command to run. It will look like:
|
|
|
|
```bash
|
|
cast send 0x89dd12025bfCD38A168455A44B400e913ED33BE2 \
|
|
'sendCrossChain(uint64,address,uint256)' \
|
|
5009297550715157269 \
|
|
0x4A666F96fC8764181194447A7dFdb7d471b301C8 \
|
|
1000000000000000 \
|
|
--private-key $PRIVATE_KEY \
|
|
--rpc-url http://192.168.11.211:8545 \
|
|
--gas-limit 200000 \
|
|
--gas-price 1000000000 \
|
|
--nonce <CORRECT_NONCE>
|
|
```
|
|
|
|
### Step 3: Monitor Bridge Transfer
|
|
```bash
|
|
# Check transaction status
|
|
cast tx <TRANSACTION_HASH> --rpc-url http://192.168.11.211:8545
|
|
|
|
# Check if WETH9 arrived on Ethereum Mainnet (wait 1-5 minutes)
|
|
cast balance <YOUR_ADDRESS> --rpc-url https://eth.llamarpc.com --ether
|
|
```
|
|
|
|
---
|
|
|
|
## 🔍 Monitoring Commands
|
|
|
|
### Check Current Nonce
|
|
```bash
|
|
cast nonce 0x4A666F96fC8764181194447A7dFdb7d471b301C8 \
|
|
--rpc-url http://192.168.11.211:8545
|
|
```
|
|
|
|
### Check Block Transactions
|
|
```bash
|
|
LATEST=$(cast block-number --rpc-url http://192.168.11.211:8545)
|
|
cast block $LATEST --rpc-url http://192.168.11.211:8545 --json | jq '.transactions | length'
|
|
```
|
|
|
|
### Check Validator Status
|
|
```bash
|
|
ssh root@192.168.11.10 "pct exec 1003 -- systemctl status besu-validator"
|
|
ssh root@192.168.11.10 "pct exec 1004 -- systemctl status besu-validator"
|
|
```
|
|
|
|
### Check Validator Logs
|
|
```bash
|
|
ssh root@192.168.11.10 "pct exec 1003 -- journalctl -u besu-validator -f"
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 Current Network Status
|
|
|
|
| Component | Status | Details |
|
|
|-----------|--------|---------|
|
|
| **Validator 1003** | ✅ Running | Layered TX-pool configured |
|
|
| **Validator 1004** | ✅ Running | Layered TX-pool configured |
|
|
| **Block Production** | ✅ Working | Block 1,301,111+ |
|
|
| **Peer Connections** | ✅ Good | 12 peers |
|
|
| **Transaction Processing** | ❌ Stuck | Nonce 13104 |
|
|
| **RPC Accessibility** | ✅ Working | 192.168.11.211:8545 |
|
|
| **Bridge Contracts** | ✅ Deployed | Ready to use |
|
|
|
|
---
|
|
|
|
## 🎯 Success Criteria
|
|
|
|
For bridge to work, we need:
|
|
- [x] Validators with layered TX-pool config
|
|
- [x] Blocks being produced
|
|
- [x] RPC accessible
|
|
- [x] Bridge contracts deployed
|
|
- [ ] **Transactions processing** ⬅️ Use bypass method
|
|
- [ ] **First successful bridge transfer** ⬅️ Execute with script
|
|
|
|
---
|
|
|
|
## 💡 Key Insights
|
|
|
|
### Why Stuck Transactions Don't Block Everything
|
|
- Stuck transactions are in RPC mempool only
|
|
- They're not on-chain
|
|
- We can bypass them by using correct nonce
|
|
- New transactions will process normally
|
|
|
|
### Why Restarting RPC Didn't Help
|
|
- The specific RPC at 192.168.11.211 wasn't restarted
|
|
- Or it's persisting mempool to disk
|
|
- Or it's on a different host entirely
|
|
|
|
### Why This Solution Works
|
|
- Validators are configured correctly
|
|
- Network is functional
|
|
- We just need to use the right nonce
|
|
- Bypass stuck transactions, don't try to clear them
|
|
|
|
---
|
|
|
|
## 🚀 Ready to Execute
|
|
|
|
**All prerequisites are met**. The test script will handle:
|
|
1. Checking current state
|
|
2. Wrapping ETH if needed
|
|
3. Approving tokens if needed
|
|
4. Providing exact bridge command
|
|
|
|
**Just run**:
|
|
```bash
|
|
export PRIVATE_KEY="0x..."
|
|
./scripts/test-bridge-with-fresh-nonce.sh
|
|
```
|
|
|
|
---
|
|
|
|
## 📝 Related Documentation
|
|
|
|
- [CCIP_BRIDGE_MAINNET_CONNECTION.md](../07-ccip/CCIP_BRIDGE_MAINNET_CONNECTION.md)
|
|
- [BRIDGE_TESTING_GUIDE.md](../07-ccip/BRIDGE_TESTING_GUIDE.md)
|
|
- [CONTRACT_ADDRESSES_REFERENCE.md](../11-references/CONTRACT_ADDRESSES_REFERENCE.md)
|
|
- [Bridge Implementation Review](../../smom-dbis-138/docs/BRIDGE_IMPLEMENTATION_REVIEW.md)
|
|
|
|
---
|
|
|
|
**Last Updated**: 2026-01-24
|
|
**Status**: Ready for bridge testing with nonce bypass method
|