36 lines
973 B
Bash
36 lines
973 B
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# Error handling utilities
|
||
|
|
|
||
|
|
handle_rpc_error() {
|
||
|
|
local error="$1"
|
||
|
|
if echo "$error" | grep -q "insufficient funds"; then
|
||
|
|
echo "ERROR: Insufficient balance for transaction"
|
||
|
|
return 1
|
||
|
|
elif echo "$error" | grep -q "nonce too low"; then
|
||
|
|
echo "ERROR: Transaction nonce too low. Wait for pending transactions."
|
||
|
|
return 1
|
||
|
|
elif echo "$error" | grep -q "replacement transaction underpriced"; then
|
||
|
|
echo "ERROR: Pending transaction exists. Wait or increase gas price."
|
||
|
|
return 1
|
||
|
|
elif echo "$error" | grep -q "execution reverted"; then
|
||
|
|
echo "ERROR: Transaction reverted. Check contract state."
|
||
|
|
return 1
|
||
|
|
fi
|
||
|
|
return 0
|
||
|
|
}
|
||
|
|
|
||
|
|
retry_transaction() {
|
||
|
|
local command="$1"
|
||
|
|
local max_retries=3
|
||
|
|
local retry=0
|
||
|
|
|
||
|
|
while [ $retry -lt $max_retries ]; do
|
||
|
|
if eval "$command"; then
|
||
|
|
return 0
|
||
|
|
fi
|
||
|
|
((retry++))
|
||
|
|
sleep 5
|
||
|
|
done
|
||
|
|
return 1
|
||
|
|
}
|