2026-01-06 01:46:25 -08:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
# Optimize gas usage for bridge operations
|
|
|
|
|
# Usage: ./optimize-gas-usage.sh
|
|
|
|
|
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
2026-02-12 15:46:57 -08:00
|
|
|
# Load IP configuration
|
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
|
|
|
source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
|
|
|
|
|
|
|
|
|
|
|
2026-01-06 01:46:25 -08:00
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
|
SOURCE_PROJECT="/home/intlc/projects/smom-dbis-138"
|
|
|
|
|
|
|
|
|
|
source "$SOURCE_PROJECT/.env" 2>/dev/null || true
|
|
|
|
|
|
2026-02-12 15:46:57 -08:00
|
|
|
RPC_URL="${RPC_URL_138_PUBLIC:-http://${RPC_PUBLIC_1:-192.168.11.221}:8545}"
|
2026-01-06 01:46:25 -08:00
|
|
|
|
|
|
|
|
# Get optimal gas price based on network conditions
|
|
|
|
|
get_optimal_gas_price() {
|
|
|
|
|
local current_gas=$(cast gas-price --rpc-url "$RPC_URL" 2>/dev/null || echo "1000000000")
|
|
|
|
|
local multiplier=1.2 # Use 1.2x for optimal balance between speed and cost
|
|
|
|
|
echo "scale=0; $current_gas * $multiplier / 1" | bc
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Estimate gas for operation
|
|
|
|
|
estimate_gas() {
|
|
|
|
|
local contract="$1"
|
|
|
|
|
local function="$2"
|
|
|
|
|
local args="$3"
|
|
|
|
|
|
|
|
|
|
cast estimate "$contract" "$function" $args --rpc-url "$RPC_URL" 2>/dev/null || echo "0"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Batch operations to reduce gas
|
|
|
|
|
batch_operations() {
|
|
|
|
|
echo "=== Gas Optimization Strategies ==="
|
|
|
|
|
echo ""
|
|
|
|
|
echo "1. Use optimal gas price: $(echo "scale=2; $(get_optimal_gas_price) / 1000000000" | bc) gwei"
|
|
|
|
|
echo "2. Batch multiple approvals into single transaction when possible"
|
|
|
|
|
echo "3. Use gas estimation before sending transactions"
|
|
|
|
|
echo "4. Send transactions during low network congestion"
|
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
|
|
# Get current gas price
|
|
|
|
|
local current_gas=$(cast gas-price --rpc-url "$RPC_URL" 2>/dev/null || echo "1000000000")
|
|
|
|
|
local optimal_gas=$(get_optimal_gas_price)
|
|
|
|
|
|
|
|
|
|
echo "Current Network Gas: $(echo "scale=2; $current_gas / 1000000000" | bc) gwei"
|
|
|
|
|
echo "Optimal Gas Price: $(echo "scale=2; $optimal_gas / 1000000000" | bc) gwei"
|
|
|
|
|
echo ""
|
|
|
|
|
echo "Recommendation: Use $(echo "scale=2; $optimal_gas / 1000000000" | bc) gwei for transactions"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
batch_operations
|
|
|
|
|
|