Files
smom-dbis-138/scripts/deployment/find-all-deployed-contracts.sh
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

84 lines
3.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Find all contracts deployed to Ethereum Mainnet
# Searches broadcast files, .env, and Etherscan API
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
cd "$PROJECT_ROOT"
source .env 2>/dev/null || true
echo "=========================================="
echo "Finding All Deployed Mainnet Contracts"
echo "=========================================="
echo ""
# Get deployer address
if [ -n "${PRIVATE_KEY:-}" ]; then
PRIVATE_KEY_FIXED="${PRIVATE_KEY}"
[[ "$PRIVATE_KEY_FIXED" != 0x* ]] && PRIVATE_KEY_FIXED="0x${PRIVATE_KEY_FIXED}"
DEPLOYER=$(cast wallet address "$PRIVATE_KEY_FIXED" 2>/dev/null | head -1)
echo "Deployer: $DEPLOYER"
echo ""
else
echo "⚠️ PRIVATE_KEY not set"
DEPLOYER=""
fi
echo "=== Method 1: Broadcast Files ==="
if [ -d "broadcast" ]; then
MAINNET_FILES=$(find broadcast -path "*/1/*.json" -o -path "*mainnet/*.json" 2>/dev/null | head -10)
if [ -n "$MAINNET_FILES" ]; then
for file in $MAINNET_FILES; do
echo "Checking $file..."
jq -r '.transactions[]? | select(.transactionType == "CREATE") | " \(.contractName): \(.contractAddress)"' "$file" 2>/dev/null
done
else
echo " No Mainnet broadcast files found"
fi
else
echo " No broadcast directory"
fi
echo ""
echo "=== Method 2: .env File ==="
grep -E "^[A-Z_]+.*=0x[a-fA-F0-9]{40}" .env 2>/dev/null | grep -iE "mainnet|MAINNET" | while IFS= read -r line; do
key=$(echo "$line" | cut -d'=' -f1)
addr=$(echo "$line" | cut -d'=' -f2)
echo " $key: $addr"
done
echo ""
echo "=== Method 3: Etherscan API ==="
if [ -n "$DEPLOYER" ] && [ -n "${ETHERSCAN_API_KEY:-}" ]; then
echo "Fetching contracts created by $DEPLOYER..."
RESPONSE=$(curl -s "https://api.etherscan.io/api?module=account&action=txlist&address=$DEPLOYER&startblock=0&endblock=99999999&sort=asc&apikey=$ETHERSCAN_API_KEY")
CONTRACTS=$(echo "$RESPONSE" | jq -r '.result[] | select(.to == "" or .to == null) | "\(.contractAddress) | Block: \(.blockNumber) | \(.timeStamp | tonumber | strftime("%Y-%m-%d"))"' 2>/dev/null)
if [ -n "$CONTRACTS" ]; then
echo "$CONTRACTS" | while IFS= read -r contract; do
addr=$(echo "$contract" | cut -d'|' -f1 | xargs)
echo " $contract"
# Try to get contract name
CONTRACT_INFO=$(curl -s "https://api.etherscan.io/api?module=contract&action=getsourcecode&address=$addr&apikey=$ETHERSCAN_API_KEY")
NAME=$(echo "$CONTRACT_INFO" | jq -r '.result[0].ContractName' 2>/dev/null)
if [ -n "$NAME" ] && [ "$NAME" != "" ] && [ "$NAME" != "null" ]; then
echo " Contract Name: $NAME"
fi
done
else
echo " No contracts found"
fi
else
echo " Cannot check (missing PRIVATE_KEY or ETHERSCAN_API_KEY)"
fi
echo ""
echo "=========================================="
echo "Search Complete"
echo "=========================================="