Files
smom-dbis-138/docs/deployment/GAS_API_INTEGRATION_SUMMARY.md
defiQUG 1fb7266469 Add Oracle Aggregator and CCIP Integration
- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control.
- Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities.
- Created .gitmodules to include OpenZeppelin contracts as a submodule.
- Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment.
- Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks.
- Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring.
- Created scripts for resource import and usage validation across non-US regions.
- Added tests for CCIP error handling and integration to ensure robust functionality.
- Included various new files and directories for the orchestration portal and deployment scripts.
2025-12-12 14:57:48 -08:00

6.0 KiB

Gas API Integration Summary

Date: 2025-01-27 Status: Complete

What Was Implemented

A complete real-time gas price fetching and documentation update system for multichain deployment.

New Scripts Created

1. scripts/deployment/get-multichain-gas-prices.sh

Purpose: Fetches real-time gas prices for all chains using APIs from .env

Features:

  • Fetches gas prices from Etherscan API (Ethereum Mainnet)
  • Fetches gas prices from RPC endpoints (all chains)
  • Calculates deployment costs in native tokens
  • Calculates USD equivalents
  • Exports environment variables
  • Saves JSON output for programmatic access

Usage:

./scripts/deployment/get-multichain-gas-prices.sh

2. scripts/deployment/update-gas-estimates.sh

Purpose: Updates all documentation files with real-time gas prices

Features:

  • Reads gas price data from get-multichain-gas-prices.sh
  • Updates GAS_AND_TOKEN_REQUIREMENTS.md
  • Updates TOKENS_AND_CHAINS_SUMMARY.md
  • Updates DEPLOYMENT_QUICK_REFERENCE.md
  • Updates timestamps in all files

Usage:

./scripts/deployment/update-gas-estimates.sh

Updated Documentation

1. GAS_AND_TOKEN_REQUIREMENTS.md

  • Added real-time gas price update instructions
  • Updated gas price sections to reference API sources
  • Added automated update workflow
  • Added exchange rate notes

2. MULTICHAIN_DEPLOYMENT_RUNBOOK.md

  • Added real-time gas price fetching step
  • Updated minimum balance recommendations
  • Added reference to gas requirements document

3. ENV_EXAMPLE_CONTENT.md

  • Added gas API configuration section
  • Added Etherscan API key documentation
  • Added Infura Gas API option
  • Added instructions for real-time updates

4. New Documentation Created

  • REAL_TIME_GAS_UPDATES.md - Complete guide for real-time updates
  • REAL_TIME_GAS_SYSTEM.md - System overview and quick start
  • GAS_API_INTEGRATION_SUMMARY.md - This document

Gas Price Sources

Ethereum Mainnet

  1. Etherscan Gas API v2 (Primary)

    • Endpoint: https://api.etherscan.io/v2/api?chainid=1&module=gastracker&action=gasoracle&apikey={KEY}
    • Requires: ETHERSCAN_API_KEY in .env
    • Returns: FastGasPrice, ProposeGasPrice, SafeGasPrice
  2. RPC Endpoint (Fallback)

    • Uses: eth_gasPrice RPC call
    • Requires: ETH_MAINNET_RPC_URL in .env
  3. Default (Final Fallback)

    • 20 gwei if all APIs fail

Other Chains (Cronos, BSC, Polygon, Gnosis)

  1. RPC Endpoint (Primary)

    • Uses: eth_gasPrice RPC call
    • Requires: *_RPC_URL in .env
  2. Default (Fallback)

    • Chain-specific defaults

Required Environment Variables

Add to .env:

# Ethereum Mainnet
ETHERSCAN_API_KEY=your_etherscan_api_key_here
ETH_MAINNET_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY

# Other Chains
CRONOS_RPC_URL=https://evm.cronos.org
BSC_RPC_URL=https://bsc-dataseed1.binance.org
POLYGON_RPC_URL=https://polygon-rpc.com
GNOSIS_RPC_URL=https://rpc.gnosischain.com

Workflow

Before Deployment

  1. Configure .env:

    cp .env.example .env
    # Edit .env with your API keys and RPC URLs
    
  2. Fetch Real-Time Prices:

    ./scripts/deployment/get-multichain-gas-prices.sh
    
  3. Update Documentation:

    ./scripts/deployment/update-gas-estimates.sh
    
  4. Review Estimates:

    • Check updated documentation
    • Verify costs are acceptable
    • Ensure wallet balances are sufficient
  5. Deploy:

    # Proceed with deployment using updated estimates
    

Output Format

Console Output

  • Current gas prices for all chains
  • Deployment costs in native tokens
  • USD equivalents
  • Total estimated cost

JSON Output

Saved to /tmp/multichain_gas_prices.json:

{
  "timestamp": "2025-01-27 12:00:00 UTC",
  "gas_prices": {
    "ethereum_mainnet": { ... },
    "cronos": { ... },
    "bsc": { ... },
    "polygon": { ... },
    "gnosis": { ... }
  },
  "total_usd": "520.05"
}

Environment Variables

Exported for use in other scripts:

  • ETH_GAS_WEI, ETH_GAS_GWEI, ETH_COST, ETH_USD_COST
  • CRONOS_GAS_WEI, CRONOS_COST, CRONOS_USD_COST
  • BSC_GAS_WEI, BSC_COST, BSC_USD_COST
  • POLYGON_GAS_WEI, POLYGON_COST, POLYGON_USD_COST
  • GNOSIS_GAS_WEI, GNOSIS_COST, GNOSIS_USD_COST
  • TOTAL_USD

Benefits

  1. Always Current: Uses real-time gas prices, not outdated estimates
  2. Automated: No manual calculation needed
  3. Multi-Chain: Supports all 5 chains simultaneously
  4. Documentation Sync: Keeps all docs automatically updated
  5. Programmatic: JSON output for automation/CI/CD
  6. Transparent: Shows exactly where prices come from

Testing

To test the system:

# 1. Ensure .env is configured
cat .env | grep -E "ETHERSCAN_API_KEY|.*_RPC_URL"

# 2. Test gas price fetching
./scripts/deployment/get-multichain-gas-prices.sh

# 3. Verify JSON output
cat /tmp/multichain_gas_prices.json | jq .

# 4. Test documentation update
./scripts/deployment/update-gas-estimates.sh

# 5. Verify documentation was updated
grep -A 5 "Current Real-Time Estimate" docs/deployment/GAS_AND_TOKEN_REQUIREMENTS.md

Dependencies

  • cast (Foundry) - For RPC gas price calls
  • bc - For calculations
  • curl - For API calls
  • jq (optional) - For JSON parsing in scripts

Next Steps

  1. Configure .env: Add all required API keys and RPC URLs
  2. Test Scripts: Run the scripts to verify they work
  3. Update Documentation: Run update script to populate real-time values
  4. Review Estimates: Check that costs are reasonable
  5. Deploy: Use updated estimates for deployment planning
  • scripts/deployment/get-multichain-gas-prices.sh - Gas price fetcher
  • scripts/deployment/update-gas-estimates.sh - Documentation updater
  • docs/deployment/GAS_AND_TOKEN_REQUIREMENTS.md - Cost breakdown
  • docs/deployment/REAL_TIME_GAS_SYSTEM.md - System overview
  • docs/deployment/REAL_TIME_GAS_UPDATES.md - Detailed guide

Status: Ready for use Last Updated: 2025-01-27