feat(scripts): resolve CCIP/LINK addresses via config inventory

- Add scripts/lib/address-inventory.sh (jq + JSON inventory fallback)
- Wire deployment helper scripts to load_explorer_runtime_env + resolve_address_value
- Persist new LINK to address-inventory.json via persist_inventory_value
- Document config/*.json in config/README.md

Made-with: Cursor
This commit is contained in:
defiQUG
2026-03-27 22:09:32 -07:00
parent ca24d6127c
commit ed0af8aaa0
12 changed files with 170 additions and 97 deletions

View File

@@ -5,6 +5,7 @@ set -uo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
source "$PROJECT_ROOT/scripts/lib/address-inventory.sh"
# Colors
RED='\033[0;31m'
@@ -20,15 +21,15 @@ log_warn() { echo -e "${YELLOW}[⚠]${NC} $1"; }
log_error() { echo -e "${RED}[✗]${NC} $1"; }
log_header() { echo -e "${CYAN}[CHECK]${NC} $1"; }
# Load environment
source "$PROJECT_ROOT/.env" 2>/dev/null || source "$PROJECT_ROOT/../.env" 2>/dev/null || true
# Load runtime env plus address inventory.
load_explorer_runtime_env
RPC_URL="${RPC_URL_138:-http://192.168.11.250:8545}"
LINK_TOKEN="${LINK_TOKEN:-0x73ADaF7dBa95221c080db5631466d2bC54f6a76B}"
WETH9="0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
WETH10="0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f"
WETH9_BRIDGE="0x971cD9D156f193df8051E48043C476e53ECd4693"
WETH10_BRIDGE="0xe0E93247376aa097dB308B92e6Ba36bA015535D0"
LINK_TOKEN="$(resolve_address_value LINK_TOKEN LINK_TOKEN 0x73ADaF7dBa95221c080db5631466d2bC54f6a76B)"
WETH9="$(resolve_address_value WETH9_ADDRESS WETH9_ADDRESS 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2)"
WETH10="$(resolve_address_value WETH10_ADDRESS WETH10_ADDRESS 0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f)"
WETH9_BRIDGE="$(resolve_address_value CCIPWETH9_BRIDGE CCIPWETH9_BRIDGE 0x971cD9D156f193df8051E48043C476e53ECd4693)"
WETH10_BRIDGE="$(resolve_address_value CCIPWETH10_BRIDGE CCIPWETH10_BRIDGE 0xe0E93247376aa097dB308B92e6Ba36bA015535D0)"
PASSED=0
FAILED=0
@@ -63,7 +64,7 @@ echo ""
# 2. Account Status
log_header "2. Account Status"
if [ -z "${PRIVATE_KEY:-}" ]; then
check_fail "PRIVATE_KEY not set in .env"
check_fail "PRIVATE_KEY not available in effective environment"
ACCOUNT=""
else
ACCOUNT=$(cast wallet address "$PRIVATE_KEY" 2>/dev/null || echo "")
@@ -211,18 +212,18 @@ echo ""
log_header "8. Configuration Files"
if [ -f "$PROJECT_ROOT/.env" ]; then
check_pass ".env file exists"
if grep -q "^PRIVATE_KEY=" "$PROJECT_ROOT/.env"; then
check_pass "PRIVATE_KEY configured"
else
check_fail "PRIVATE_KEY not in .env"
fi
if grep -q "^LINK_TOKEN=" "$PROJECT_ROOT/.env"; then
check_pass "LINK_TOKEN configured"
else
check_warn "LINK_TOKEN not in .env"
fi
else
check_fail ".env file not found"
check_warn ".env file not found"
fi
if [ -n "${PRIVATE_KEY:-}" ]; then
check_pass "PRIVATE_KEY available in effective environment"
else
check_fail "PRIVATE_KEY not available in effective environment"
fi
if [ -f "$EXPLORER_ADDRESS_INVENTORY_FILE" ] && [ -n "$(inventory_get LINK_TOKEN 2>/dev/null || true)" ]; then
check_pass "LINK_TOKEN configured in address inventory"
else
check_warn "LINK_TOKEN not in address inventory"
fi
echo ""
@@ -264,4 +265,3 @@ else
log_error "✗ SYSTEM NOT READY - $FAILED critical issues found"
exit 1
fi