Files
proxmox/docs/06-besu/STUCK_TRANSACTIONS_SOLUTION.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.3 KiB

Stuck Transactions Solution

Last Updated: 2026-01-31
Document Version: 1.0
Status: Active Documentation


Date: 2026-01-21
Status: SOLUTION PROVIDED


Problem

Transactions appear as "pending" but are:

  • NOT in blockchain state
  • NOT in transaction pool
  • Still reported by RPC as pending (nonce mismatch)

Root Cause: RPC node maintains transaction state in its internal database/memory beyond the transaction pool. This state persists even after clearing transaction pools.


Solution: Skip Stuck Transactions

Current Status:

  • Latest nonce (confirmed): 13104
  • Pending nonce (RPC reports): 13113
  • Stuck transactions: 9 (nonces 13105-13113)

Solution: Use nonce 13113 (the pending nonce) for new transactions. This skips the stuck transactions.

Example: Deploy with Next Nonce

# Get next nonce
NEXT_NONCE=$(cast rpc eth_getTransactionCount 0x4A666F96fC8764181194447A7dFdb7d471b301C8 pending --rpc-url http://192.168.11.211:8545 | tr -d '"' | xargs -I {} cast --to-dec {})

# Deploy with explicit nonce and gas price
cast send --rpc-url http://192.168.11.211:8545 \
    --private-key $PRIVATE_KEY \
    --nonce $NEXT_NONCE \
    --gas-price 10000000000 \
    --create <bytecode>

Method 2: Clear RPC Database (If Needed)

If you need to completely reset the RPC state:

PROXMOX_USER=root RPC_HOST=192.168.11.11 bash scripts/clear-rpc-database-complete.sh

Warning: This requires RPC restart and may take 1-2 minutes.


Verification

Check if Transactions are Stuck

bash scripts/investigate-transaction-persistence.sh

This will show:

  • Transactions NOT in blockchain
  • Transactions NOT in txpool
  • Confirmation they are stuck

Get Next Nonce

bash scripts/skip-stuck-transactions.sh

This will show:

  • Current nonce status
  • Next nonce to use
  • Example commands

Best Practices

1. Always Use Explicit Gas Prices

# Good: Explicit gas price
cast send ... --gas-price 10000000000

# Bad: No gas price (may get stuck)
cast send ...

2. Monitor Transaction Status

# Check if transaction is confirmed
cast receipt <tx_hash> --rpc-url <rpc>

# Monitor until confirmed
bash scripts/check-transaction-status.sh <tx_hash>

3. Handle Stuck Transactions

If transactions get stuck:

  1. Verify they're not in blockchain: cast tx <hash> --rpc-url <rpc>
  2. Verify they're not in txpool: cast rpc txpool_content --rpc-url <rpc>
  3. Use next nonce to skip: bash scripts/skip-stuck-transactions.sh
  4. Deploy with explicit nonce and gas price

Current Status

  • Stuck Transactions: 9 (nonces 13105-13113)
  • Next Nonce to Use: 13113
  • Blockchain State: Clean (no stuck transactions in blocks)
  • Transaction Pool: Clean (no stuck transactions in pool)
  • RPC State: Reports pending (internal state only)

Resolution

Solution Available: Use next nonce (13113) to skip stuck transactions
Tools Created: Scripts to investigate and skip stuck transactions
Documentation: Complete guide for handling stuck transactions

Action: Use nonce 13113 for all new deployments. Stuck transactions (13105-13112) will be skipped automatically.


Status: Solution provided. Ready to proceed with deployments using next nonce.