Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
91 lines
4.9 KiB
Bash
Executable File
91 lines
4.9 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://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_MULTICALL="${ADDR_MULTICALL:-0xF4AA429BE277d1a1a1A744C9e5B3aD821a9b96f7}"
|
|
ADDR_ORACLE_AGGREGATOR="${ADDR_ORACLE_AGGREGATOR:-0x452a4701d01c0Ff3ED0C547a5adF0659eb4a3ef7}"
|
|
ADDR_ORACLE_PROXY="${ADDR_ORACLE_PROXY:-0x404DcD22f82C734361256B441DAAa8DE654CE191}"
|
|
ADDR_MULTISIG="${ADDR_MULTISIG:-0xb9E29cFa1f89d369671E640d0BB3aD94Cab43965}"
|
|
ADDR_CCIP_RECEIVER="${ADDR_CCIP_RECEIVER:-0xC12236C03b28e675d376774FCE2C2C052488430F}"
|
|
ADDR_VOTING="${ADDR_VOTING:-0x022267b26400114aF01BaCcb92456Fe36cfccD93}"
|
|
ADDR_CCIP_SENDER="${ADDR_CCIP_SENDER:-0x105F8A15b819948a89153505762444Ee9f324684}"
|
|
ADDR_CCIPWETH10="${ADDR_CCIPWETH10_BRIDGE:-0xe0E93247376aa097dB308B92e6Ba36bA015535D0}"
|
|
ADDR_CCIPWETH9="${ADDR_CCIPWETH9_BRIDGE:-${CCIPWETH9_BRIDGE_CHAIN138:-0x971cD9D156f193df8051E48043C476e53ECd4693}}"
|
|
|
|
should_verify Multicall && verify_one "$ADDR_MULTICALL" "Multicall" "contracts/utils/Multicall.sol:Multicall"
|
|
should_verify Aggregator && verify_one "$ADDR_ORACLE_AGGREGATOR" "Aggregator" "contracts/oracle/Aggregator.sol:Aggregator"
|
|
should_verify Proxy && verify_one "$ADDR_ORACLE_PROXY" "Proxy" "contracts/oracle/Proxy.sol:Proxy"
|
|
should_verify MultiSig && verify_one "$ADDR_MULTISIG" "MultiSig" "contracts/governance/MultiSig.sol:MultiSig"
|
|
should_verify CCIPReceiver && verify_one "$ADDR_CCIP_RECEIVER" "CCIPReceiver" "contracts/ccip/CCIPReceiver.sol:CCIPReceiver"
|
|
should_verify Voting && verify_one "$ADDR_VOTING" "Voting" "contracts/governance/Voting.sol:Voting"
|
|
should_verify CCIPSender && verify_one "$ADDR_CCIP_SENDER" "CCIPSender" "contracts/ccip/CCIPSender.sol:CCIPSender"
|
|
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."
|