Files
Kevin Codex 312489a7b4 Initial commit
openlaunch — launch a token. Free. Open source. On Base or Robinhood Chain.
Contracts (LaunchFactory / LaunchLocker / LaunchToken, Foundry), the site (Next.js),
brand assets. No platform fee, liquidity locked forever.
2026-09-07 11:28:24 +08:00

46 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Verify the launchpad contracts on the block explorers (source already exact-matched on Sourcify).
# Basescan (Base): needs an Etherscan API key (one key works for every chain on Etherscan V2):
# export ETHERSCAN_API_KEY=... (or put ETHERSCAN_API_KEY= in contracts/.env)
# Blockscout (Robinhood/Base): keyless.
# Usage: script/verify.sh [base|robinhood|all] (default: all)
set -euo pipefail
cd "$(dirname "$0")/.."
[ -f .env ] && set -a && . ./.env && set +a
KEY="${ETHERSCAN_API_KEY:-${BASESCAN_API_KEY:-}}"
FACTORY=0x815542E8b392389A1389E22E588E4B62A67Ade72
LOCKER=0xcd1680D26922fcd9CabFbb8a56bA40C333fD842a
PERMIT2=0x000000000022D473030F116dDEE9F6B43aC78BA3
# Uniswap v4 per chain (must match script/DeployLaunchFactory.s.sol)
BASE_PM=0x498581fF718922c3f8e6A244956aF099B2652b2b
BASE_POSM=0x7C5f5A4bBd8fD63184577525326123B519429bDc
RH_PM=0x8366a39CC670B4001A1121B8F6A443A643e40951
RH_POSM=0x58daec3116aae6d93017baaea7749052e8a04fa7
common=(--watch --compiler-version 0.8.26 --evm-version cancun --num-of-optimizations 200 --via-ir)
verify_pair() { # <chain-id> <pm> <posm> <verifier args...>
local chain=$1 pm=$2 posm=$3; shift 3
local fargs largs
fargs=$(cast abi-encode "constructor(address,address,address)" "$pm" "$posm" "$PERMIT2")
largs=$(cast abi-encode "constructor(address)" "$posm")
echo "== chain $chain: LaunchFactory"
forge verify-contract --chain "$chain" "$FACTORY" src/LaunchFactory.sol:LaunchFactory --constructor-args "$fargs" "${common[@]}" "$@" || true
echo "== chain $chain: LaunchLocker"
forge verify-contract --chain "$chain" "$LOCKER" src/LaunchLocker.sol:LaunchLocker --constructor-args "$largs" "${common[@]}" "$@" || true
}
target=${1:-all}
if [[ $target == base || $target == all ]]; then
if [[ -z $KEY ]]; then echo "Basescan: set ETHERSCAN_API_KEY (free at etherscan.io → API keys) — skipping"; else
verify_pair 8453 "$BASE_PM" "$BASE_POSM" --verifier etherscan --etherscan-api-key "$KEY"
fi
echo "== Base Blockscout (keyless)"
verify_pair 8453 "$BASE_PM" "$BASE_POSM" --verifier blockscout --verifier-url https://base.blockscout.com/api/
fi
if [[ $target == robinhood || $target == all ]]; then
echo "== Robinhood Chain Blockscout (keyless)"
verify_pair 4663 "$RH_PM" "$RH_POSM" --verifier blockscout --verifier-url https://robinhoodchain.blockscout.com/api/
fi