Files
proxmox/scripts/verify-contracts-blockscout.sh
defiQUG fbda1b4beb
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
docs: Ledger Live integration, contract deploy learnings, NEXT_STEPS updates
- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands
- CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround
- CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check
- NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere
- MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates
- LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 15:46:57 -08:00

81 lines
4.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Verify deployed contracts on Blockscout (Chain 138)
# Usage: ./scripts/verify-contracts-blockscout.sh [--only contract1,contract2] [--skip contract3]
# Version: 2026-01-31
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
[[ -f "${SCRIPT_DIR}/lib/load-project-env.sh" ]] && source "${SCRIPT_DIR}/lib/load-project-env.sh" 2>/dev/null || true
# Load contract addresses from config if present
[[ -f "${PROJECT_ROOT}/config/contract-addresses.conf" ]] && source "${PROJECT_ROOT}/config/contract-addresses.conf" 2>/dev/null || true
SMOM="${SMOM_DIR:-${PROJECT_ROOT}/smom-dbis-138}"
ALLTRA="${PROJECT_ROOT}/alltra-lifi-settlement"
RPC="${RPC_URL_138:-http://${RPC_CORE_1:-192.168.11.211}:8545}"
IP_BLOCKSCOUT="${IP_BLOCKSCOUT:-192.168.11.140}"
VERIFIER_URL="${FORGE_VERIFIER_URL:-http://127.0.0.1:3080/api}"
# Parse --only and --skip
ONLY_LIST=""
SKIP_LIST=""
while [[ $# -gt 0 ]]; do
case "$1" in
--only) ONLY_LIST="${2:-}"; shift 2 ;;
--skip) SKIP_LIST="${2:-}"; shift 2 ;;
*) shift ;;
esac
done
should_verify() {
local name="$1"
[[ -n "$ONLY_LIST" ]] && [[ ",${ONLY_LIST}," != *",${name},"* ]] && return 1
[[ -n "$SKIP_LIST" ]] && [[ ",${SKIP_LIST}," = *",${name},"* ]] && return 1
return 0
}
cd "$SMOM"
verify_one() {
local addr="$1" contract="$2" path="$3"
echo "Verifying $contract at $addr..."
if forge verify-contract "$addr" "$path" \
--chain-id 138 \
--verifier blockscout \
--verifier-url "$VERIFIER_URL" \
--rpc-url "$RPC" \
--flatten 2>&1; then
echo " OK"
else
echo " (skip: may already be verified, or path/Solidity version mismatch - check contract path and compiler version)"
fi
}
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Blockscout Contract Verification (Chain 138)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
ADDR_CCIP_SENDER="${ADDR_CCIP_SENDER:-0x105F8A15b819948a89153505762444Ee9f324684}"
ADDR_ORACLE_PROXY="${ADDR_ORACLE_PROXY:-0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6}"
ADDR_CCIPWETH10="${ADDR_CCIPWETH10_BRIDGE:-0xe0E93247376aa097dB308B92e6Ba36bA015535D0}"
ADDR_CCIPWETH9="${ADDR_CCIPWETH9_BRIDGE:-${CCIPWETH9_BRIDGE_CHAIN138:-0x971cD9D156f193df8051E48043C476e53ECd4693}}"
should_verify CCIPSender && verify_one "$ADDR_CCIP_SENDER" "CCIPSender" "contracts/ccip/CCIPSender.sol:CCIPSender"
should_verify Proxy && verify_one "$ADDR_ORACLE_PROXY" "Proxy" "contracts/oracle/Proxy.sol:Proxy"
should_verify CCIPWETH10Bridge && verify_one "$ADDR_CCIPWETH10" "CCIPWETH10Bridge" "contracts/ccip/CCIPWETH10Bridge.sol:CCIPWETH10Bridge"
should_verify CCIPWETH9Bridge && verify_one "$ADDR_CCIPWETH9" "CCIPWETH9Bridge" "contracts/ccip/CCIPWETH9Bridge.sol:CCIPWETH9Bridge"
if [[ -d "$ALLTRA" ]]; then
ADDR_MERCHANT="${ADDR_MERCHANT_SETTLEMENT:-0x16D9A2cB94A0b92721D93db4A6Cd8023D3338800}"
ADDR_ESCROW="${ADDR_WITHDRAWAL_ESCROW:-0xe77cb26eA300e2f5304b461b0EC94c8AD6A7E46D}"
should_verify MerchantSettlementRegistry && { echo "Verifying MerchantSettlementRegistry at $ADDR_MERCHANT..."; (cd "$ALLTRA" && forge verify-contract "$ADDR_MERCHANT" "contracts/settlement/MerchantSettlementRegistry.sol:MerchantSettlementRegistry" --chain-id 138 --verifier blockscout --verifier-url "$VERIFIER_URL" --rpc-url "$RPC" --flatten 2>&1) && echo " OK" || echo " (skip)"; }
should_verify WithdrawalEscrow && { echo "Verifying WithdrawalEscrow at $ADDR_ESCROW..."; (cd "$ALLTRA" && forge verify-contract "$ADDR_ESCROW" "contracts/settlement/WithdrawalEscrow.sol:WithdrawalEscrow" --chain-id 138 --verifier blockscout --verifier-url "$VERIFIER_URL" --rpc-url "$RPC" --flatten 2>&1) && echo " OK" || echo " (skip)"; }
fi
echo ""
echo "Done. Check http://${IP_BLOCKSCOUT} or https://explorer.d-bis.org for verification status."