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.
This commit is contained in:
33
scripts/etherscan-138/get-balance.sh
Executable file
33
scripts/etherscan-138/get-balance.sh
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||
source "$ROOT_DIR/scripts/lib/init.sh"
|
||||
load_env --file "$ROOT_DIR/.env" ${ENV_PROFILE:+--profile "$ENV_PROFILE"}
|
||||
SCRIPT_NAME="get-balance.sh"
|
||||
SCRIPT_DESC="Query balance on ChainID 138 via Etherscan-like API"
|
||||
SCRIPT_USAGE="${SCRIPT_NAME} --address <addr> [--apikey <key>] [--url <api>]"
|
||||
SCRIPT_OPTIONS="--address ADDR Address to query
|
||||
--apikey KEY API key (default: CHAIN138_ETHERSCAN_API_KEY)
|
||||
--url URL API base (default: CHAIN138_ETHERSCAN_API_URL)"
|
||||
handle_help "${1:-}"
|
||||
|
||||
ADDR=""; KEY="${CHAIN138_ETHERSCAN_API_KEY:-}"; API="${CHAIN138_ETHERSCAN_API_URL:-}"
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--address) ADDR="$2"; shift 2;;
|
||||
--apikey) KEY="$2"; shift 2;;
|
||||
--url) API="$2"; shift 2;;
|
||||
--help) handle_help "--help";;
|
||||
*) log_error "Unknown arg: $1"; exit 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
[ -n "$ADDR" ] || { log_error "Missing --address"; exit 1; }
|
||||
[ -n "$API" ] || { log_error "Set CHAIN138_ETHERSCAN_API_URL or pass --url"; exit 1; }
|
||||
[ -n "$KEY" ] || { log_warn "No API key provided; request may be rate-limited"; }
|
||||
|
||||
URL="${API}?module=account&action=balance&address=${ADDR}&tag=latest${KEY:+&apikey=$KEY}"
|
||||
curl -s "$URL" | jq .
|
||||
|
||||
|
||||
38
scripts/etherscan-138/get-contract-tx.sh
Executable file
38
scripts/etherscan-138/get-contract-tx.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||
source "$ROOT_DIR/scripts/lib/init.sh"
|
||||
load_env --file "$ROOT_DIR/.env" ${ENV_PROFILE:+--profile "$ENV_PROFILE"}
|
||||
SCRIPT_NAME="get-contract-tx.sh"
|
||||
SCRIPT_DESC="Query contract transactions on ChainID 138 via Etherscan-like API"
|
||||
SCRIPT_USAGE="${SCRIPT_NAME} --address <addr> [--start <n>] [--end <n>] [--sort asc|desc] [--apikey <key>] [--url <api>]"
|
||||
SCRIPT_OPTIONS="--address ADDR Contract address
|
||||
--start N Start block (default: 0)
|
||||
--end N End block (default: 99999999)
|
||||
--sort asc|desc Sort order (default: desc)
|
||||
--apikey KEY API key (default: CHAIN138_ETHERSCAN_API_KEY)
|
||||
--url URL API base (default: CHAIN138_ETHERSCAN_API_URL)"
|
||||
handle_help "${1:-}"
|
||||
|
||||
ADDR=""; START=0; END=99999999; SORT="desc"; KEY="${CHAIN138_ETHERSCAN_API_KEY:-}"; API="${CHAIN138_ETHERSCAN_API_URL:-}"
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--address) ADDR="$2"; shift 2;;
|
||||
--start) START="$2"; shift 2;;
|
||||
--end) END="$2"; shift 2;;
|
||||
--sort) SORT="$2"; shift 2;;
|
||||
--apikey) KEY="$2"; shift 2;;
|
||||
--url) API="$2"; shift 2;;
|
||||
--help) handle_help "--help";;
|
||||
*) log_error "Unknown arg: $1"; exit 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
[ -n "$ADDR" ] || { log_error "Missing --address"; exit 1; }
|
||||
[ -n "$API" ] || { log_error "Set CHAIN138_ETHERSCAN_API_URL or pass --url"; exit 1; }
|
||||
|
||||
URL="${API}?module=account&action=txlist&address=${ADDR}&startblock=${START}&endblock=${END}&sort=${SORT}${KEY:+&apikey=$KEY}"
|
||||
curl -s "$URL" | jq .
|
||||
|
||||
|
||||
45
scripts/etherscan-138/verify-contract.sh
Executable file
45
scripts/etherscan-138/verify-contract.sh
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||
source "$ROOT_DIR/scripts/lib/init.sh"
|
||||
load_env --file "$ROOT_DIR/.env" ${ENV_PROFILE:+--profile "$ENV_PROFILE"}
|
||||
SCRIPT_NAME="verify-contract.sh"
|
||||
SCRIPT_DESC="Submit contract verification to ChainID 138 Etherscan-like API"
|
||||
SCRIPT_USAGE="${SCRIPT_NAME} --address <addr> --contract-name <name> --compiler <ver> --source <path> [--apikey <key>] [--url <api>]"
|
||||
SCRIPT_OPTIONS="--address ADDR Deployed contract address
|
||||
--contract-name NAME Contract name (e.g., MirrorManager)
|
||||
--compiler VER Compiler version (e.g., v0.8.19+commit.7dd6d404)
|
||||
--source PATH Source file path
|
||||
--apikey KEY API key (default: CHAIN138_ETHERSCAN_API_KEY)
|
||||
--url URL API base (default: CHAIN138_ETHERSCAN_API_URL)"
|
||||
handle_help "${1:-}"
|
||||
|
||||
ADDR=""; NAME=""; COMPILER=""; SOURCE=""; KEY="${CHAIN138_ETHERSCAN_API_KEY:-}"; API="${CHAIN138_ETHERSCAN_API_URL:-}"
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--address) ADDR="$2"; shift 2;;
|
||||
--contract-name) NAME="$2"; shift 2;;
|
||||
--compiler) COMPILER="$2"; shift 2;;
|
||||
--source) SOURCE="$2"; shift 2;;
|
||||
--apikey) KEY="$2"; shift 2;;
|
||||
--url) API="$2"; shift 2;;
|
||||
--help) handle_help "--help";;
|
||||
*) log_error "Unknown arg: $1"; exit 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
[ -n "$ADDR" ] && [ -n "$NAME" ] && [ -n "$COMPILER" ] && [ -n "$SOURCE" ] || { log_error "Missing required args"; exit 1; }
|
||||
[ -n "$API" ] || { log_error "Set CHAIN138_ETHERSCAN_API_URL"; exit 1; }
|
||||
[ -f "$SOURCE" ] || { log_error "Source not found: $SOURCE"; exit 1; }
|
||||
|
||||
# Minimal single-file verification payload; for multi-file use standard flattening
|
||||
CODE=$(sed 's/\\r//g' "$SOURCE")
|
||||
POST_DATA=$(jq -Rn --arg module "contract" --arg action "verifysourcecode" \
|
||||
--arg addresshash "$ADDR" --arg contractname "$NAME" --arg compilerversion "$COMPILER" \
|
||||
--arg code "$CODE" \
|
||||
'{module:$module,action:$action,address:$addresshash,contractname:$contractname,compilerversion:$compilerversion,code:$code}' )
|
||||
|
||||
curl -s -X POST -H "Content-Type: application/json" -d "$POST_DATA" "${API}" | jq .
|
||||
|
||||
|
||||
Reference in New Issue
Block a user