- 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.
6.3 KiB
Besu Transaction Solution - Complete
Date: 2026-01-27
Status: ✅ VERIFIED AND DOCUMENTED
✅ Verification Results
Test Results Summary
All Besu RPC nodes have been verified:
| Test | Result |
|---|---|
| eth_sendRawTransaction available | ✅ YES - All nodes |
| eth_sendTransaction supported | ❌ NO - As expected |
| Method validation working | ✅ YES - Proper error handling |
| RPC nodes operational | ✅ YES - All 10 nodes |
Verified RPC Nodes
- ✅ VMID 2400 (192.168.11.240) - thirdweb-rpc-1
- ✅ VMID 2401 (192.168.11.241) - thirdweb-rpc-2
- ✅ VMID 2402 (192.168.11.242) - thirdweb-rpc-3
- ✅ VMID 2500 (192.168.11.250) - besu-rpc-1
- ✅ VMID 2501 (192.168.11.251) - besu-rpc-2
- ✅ VMID 2502 (192.168.11.252) - besu-rpc-3
- ✅ VMID 2505 (192.168.11.201) - besu-rpc-luis-0x8a
- ✅ VMID 2506 (192.168.11.202) - besu-rpc-luis-0x1
- ✅ VMID 2507 (192.168.11.203) - besu-rpc-putu-0x8a
- ✅ VMID 2508 (192.168.11.204) - besu-rpc-putu-0x1
📁 Files Created
1. Investigation Scripts
scripts/investigate-rpc-transaction-failures.sh
- Comprehensive investigation of all RPC nodes
- Checks logs, transaction pool, recent blocks
- Identifies transaction failure patterns
scripts/check-rpc-transaction-blocking.sh
- Checks account permissioning configuration
- Verifies minimum gas price settings
- Reviews transaction rejection logs
scripts/test-simple-transfer.sh
- Tests simple transfer functionality
- Identifies why transfers fail without hash
2. Verification Scripts
scripts/test-eth-sendrawtransaction.sh
- ✅ Verifies
eth_sendRawTransactionis available - ✅ Confirms
eth_sendTransactionis NOT supported - ✅ Tests method validation and error handling
3. Example Code
scripts/example-send-signed-transaction.js (Node.js)
- Complete example using ethers.js
- Shows how to sign and send transactions
- Includes error handling
scripts/example-send-signed-transaction.py (Python)
- Complete example using web3.py
- Shows how to sign and send transactions
- Includes error handling
4. Documentation
RPC_TRANSACTION_FAILURE_ROOT_CAUSE.md
- Root cause analysis
- Solution explanation
- Code examples for different libraries
RPC_TRANSACTION_FAILURE_INVESTIGATION.md
- Initial investigation findings
- Possible failure scenarios
- Next steps guide
🚀 Quick Start Guide
For JavaScript/Node.js Applications
Install dependencies:
npm install ethers
# or
npm install web3
Using ethers.js (Recommended):
const { ethers } = require('ethers');
const provider = new ethers.providers.JsonRpcProvider('http://192.168.11.250:8545');
const wallet = new ethers.Wallet('0x<private_key>', provider);
// Send transaction (ethers automatically signs)
const tx = await wallet.sendTransaction({
to: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
value: ethers.utils.parseEther('0.01')
});
console.log('Transaction hash:', tx.hash);
const receipt = await tx.wait();
console.log('Transaction confirmed in block:', receipt.blockNumber);
Using web3.js:
const Web3 = require('web3');
const web3 = new Web3('http://192.168.11.250:8545');
const account = web3.eth.accounts.privateKeyToAccount('0x<private_key>');
web3.eth.accounts.wallet.add(account);
const tx = {
from: account.address,
to: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
value: web3.utils.toWei('0.01', 'ether'),
gas: 21000,
gasPrice: await web3.eth.getGasPrice(),
nonce: await web3.eth.getTransactionCount(account.address)
};
const signedTx = await account.signTransaction(tx);
const receipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction);
console.log('Transaction hash:', receipt.transactionHash);
For Python Applications
Install dependencies:
pip install web3 eth-account
Using web3.py:
from web3 import Web3
from eth_account import Account
w3 = Web3(Web3.HTTPProvider('http://192.168.11.250:8545'))
account = Account.from_key('0x<private_key>')
tx = {
'to': '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
'value': Web3.toWei(0.01, 'ether'),
'gas': 21000,
'gasPrice': w3.eth.gas_price,
'nonce': w3.eth.get_transaction_count(account.address),
'chainId': w3.eth.chain_id
}
signed_txn = account.sign_transaction(tx)
tx_hash = w3.eth.send_raw_transaction(signed_txn.rawTransaction)
print(f'Transaction hash: {tx_hash.hex()}')
receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
print(f'Transaction confirmed in block: {receipt.blockNumber}')
🔍 Testing
Run Verification Test
cd /home/intlc/projects/proxmox
./scripts/test-eth-sendrawtransaction.sh
Expected Output:
- ✅ eth_sendRawTransaction is available on all nodes
- ✅ eth_sendTransaction is NOT supported (as expected)
- ✅ Method validation working correctly
Test with Example Scripts
Node.js:
node scripts/example-send-signed-transaction.js \
http://192.168.11.250:8545 \
0x<private_key> \
0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb \
0.01
Python:
python3 scripts/example-send-signed-transaction.py \
http://192.168.11.250:8545 \
0x<private_key> \
0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb \
0.01
📋 Key Points
✅ What Works
- eth_sendRawTransaction - Fully supported
- Signed transactions - Required and working
- All RPC nodes - Operational and accepting transactions
- Transaction validation - Working correctly
❌ What Doesn't Work
- eth_sendTransaction - NOT supported (by design)
- Unsigned transactions - Will be rejected
- Account unlocking - Not supported in Besu
🎯 Summary
Problem: Simple transfers failing without getting a hash
Root Cause: Clients using eth_sendTransaction which Besu doesn't support
Solution: Use eth_sendRawTransaction with pre-signed transactions
Status: ✅ VERIFIED - All RPC nodes working correctly
📚 Additional Resources
- Root Cause Document:
RPC_TRANSACTION_FAILURE_ROOT_CAUSE.md - Investigation Report:
RPC_TRANSACTION_FAILURE_INVESTIGATION.md - Besu Documentation: https://besu.hyperledger.org/
Last Updated: 2026-01-27
Status: ✅ COMPLETE - SOLUTION VERIFIED