- Organized 252 files across project - Root directory: 187 → 2 files (98.9% reduction) - Moved configuration guides to docs/04-configuration/ - Moved troubleshooting guides to docs/09-troubleshooting/ - Moved quick start guides to docs/01-getting-started/ - Moved reports to reports/ directory - Archived temporary files - Generated comprehensive reports and documentation - Created maintenance scripts and guides All files organized according to established standards.
4.8 KiB
QBFT Transaction Resolution - Final Summary
Date: $(date)
Network: Hyperledger Besu QBFT
Issue: Stuck transaction blocking Ethereum Mainnet configuration
✅ Completed Investigation
1. Enabled TXPOOL and ADMIN RPC Methods
- ✅ TXPOOL enabled on RPC node (192.168.11.250)
- ✅ ADMIN enabled on RPC node
- ✅ Used
txpool_besuTransactionsto inspect transaction pool
2. Identified Stuck Transaction
- Hash:
0x359e4e1501d062e32077ca5cb854c46ef7df4b0233431befad1321c0c7a20670 - Nonce: 23
- From:
0x4A666F96fC8764181194447A7dFdb7d471b301C8 - Gas Price: 20 gwei (visible in RPC pool)
- Status: Stuck - blocks all replacement attempts
3. Attempted Resolution Methods
✅ Enabled TXPOOL
- Script:
scripts/enable-txpool-rpc-ssh.sh - Result: Successfully enabled
✅ Enabled ADMIN
- Script:
scripts/enable-admin-rpc-ssh.sh - Result: Successfully enabled
❌ Remove Transaction via RPC
- Method:
admin_removeTransaction - Result: Not available in this Besu version
❌ Replace with Higher Gas Price
- Attempted: 50,000 gwei (2,500x higher than visible 20 gwei)
- Result: Still "Replacement transaction underpriced"
🔍 Root Cause Analysis
Why Replacement Fails
-
Transaction on Validator Nodes: The stuck transaction is likely in validator nodes' mempools, not just the RPC node. QBFT validators maintain their own transaction pools.
-
Hidden Gas Price: The transaction visible in RPC pool shows 20 gwei, but validators may have a different version with much higher gas price (>1,000,000 gwei as previously identified).
-
QBFT Consensus: In QBFT, validators must agree on transaction ordering. A transaction stuck in validator pools cannot be easily replaced without validator coordination.
-
Transaction Persistence: Previous attempts to clear (restart, database clear) failed because:
- Transaction is in blockchain state (nonce 23 is on-chain)
- Validators re-broadcast the transaction
- Network re-syncs restore the state
🎯 Recommended Solution
Use a Different Deployer Account
Since the current account's nonce 23 is permanently stuck in the QBFT network state, the most reliable solution is to use a different account:
# 1. Create new account (already created: 0xC13EfAe66708C7541d2D66A2527bcBF9992e7186)
# 2. Fund the new account
cast send 0xC13EfAe66708C7541d2D66A2527bcBF9992e7186 \
--value 10ether \
--rpc-url http://192.168.11.250:8545 \
--private-key $PRIVATE_KEY
# 3. Update .env with new PRIVATE_KEY
# 4. Configure Ethereum Mainnet with new account
./scripts/configure-ethereum-mainnet-final.sh
📋 Alternative Solutions (If New Account Not Possible)
Option 1: Wait for Transaction Expiration
- Retention Period: 6 hours (default
tx-pool-retention-hours) - Risk: Transaction may persist beyond retention period if it's in blockchain state
Option 2: Coordinate Validator Restart
- Restart all validators simultaneously
- Clear all validator transaction pools
- Risk: May not work if transaction is in blockchain state
Option 3: Network Fork (Not Recommended)
- Requires network-wide coordination
- High risk of consensus issues
- Not recommended for production
📊 Besu QBFT-Specific Findings
Available RPC Methods
- ✅
txpool_besuTransactions- List all transactions in pool - ❌
txpool_content- Not available - ❌
txpool_status- Not available - ❌
txpool_clear- Not available - ❌
admin_removeTransaction- Not available
Transaction Pool Behavior
- QBFT validators maintain separate transaction pools
- RPC node pool is separate from validator pools
- Transaction propagation between nodes may be inconsistent
- Replacement transactions require higher gas price across all nodes
🛠️ Scripts Created
scripts/enable-txpool-rpc-ssh.sh- Enable TXPOOL via SSHscripts/enable-admin-rpc-ssh.sh- Enable ADMIN via SSHscripts/resolve-stuck-transaction-besu-qbft.sh- Comprehensive resolutionscripts/remove-stuck-transaction-besu.sh- Remove specific transaction
📝 Lessons Learned
- QBFT networks require validator coordination for transaction management
- Transaction pools are node-specific, not network-wide
- Besu RPC methods are limited compared to Geth
- Nonce management is critical - stuck nonces are difficult to resolve
- Different accounts are the most reliable bypass for stuck transactions
🎯 Final Recommendation
Use a different deployer account to configure Ethereum Mainnet. This is the most reliable solution for QBFT networks where transaction state is distributed across validators.
Last Updated: $(date)
Status: ⚠️ STUCK TRANSACTION PERSISTS - USE DIFFERENT ACCOUNT