Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m21s
CI/CD Pipeline / Security Scanning (push) Successful in 2m33s
CI/CD Pipeline / Lint and Format (push) Failing after 38s
CI/CD Pipeline / Terraform Validation (push) Failing after 24s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 24s
Deploy ChainID 138 / Deploy ChainID 138 (push) Failing after 37s
Validation / validate-genesis (push) Successful in 29s
Validation / validate-terraform (push) Failing after 27s
Validation / validate-kubernetes (push) Failing after 9s
Validation / validate-smart-contracts (push) Failing after 10s
Validation / validate-security (push) Failing after 1m13s
Validation / validate-documentation (push) Failing after 17s
Verify Deployment / Verify Deployment (push) Failing after 54s
WireDBISRailPostDeploy/Signers forge scripts, PMM pool registry, and explorer verify refresh. Co-authored-by: Cursor <cursoragent@cursor.com>
163 lines
5.3 KiB
Bash
Executable File
163 lines
5.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Mint all 12 c* tokens on Chain 138 to the deployer.
|
|
# V1 tokens owned by MultiSig are minted via submitTransaction + executeTransaction.
|
|
#
|
|
# Usage: ./scripts/mint-all-c-star-138.sh [amount_human]
|
|
# amount_human = 1000000 (default = 1M each). 6 decimals.
|
|
# For cXAUC/cXAUT, amount_human is troy ounces (1 token = 1 troy oz Au), not USD.
|
|
# Requires: PRIVATE_KEY, RPC_URL_138 in .env.
|
|
#
|
|
# Exit: 0 all OK/skipped; 1 one or more mint failures.
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
cd "$PROJECT_ROOT"
|
|
[ -f .env ] && set -a && source .env && set +a
|
|
|
|
RPC="${RPC_URL_138:-${RPC_URL:-http://192.168.11.211:8545}}"
|
|
GAS_PRICE="${GAS_PRICE_138:-1000000000}"
|
|
GAS_LIMIT_MINT="${GAS_LIMIT_MINT:-450000}"
|
|
GAS_LIMIT_MULTISIG="${GAS_LIMIT_MULTISIG:-600000}"
|
|
MULTISIG="${ADDR_MULTISIG:-0xb9E29cFa1f89d369671E640d0BB3aD94Cab43965}"
|
|
AMOUNT_HUMAN="${1:-1000000}"
|
|
BASE_UNITS=$((AMOUNT_HUMAN * 1000000))
|
|
MINT_XAU_OZ="${MINT_XAU_OZ:-50}"
|
|
XAU_BASE_UNITS=$((MINT_XAU_OZ * 1000000))
|
|
|
|
[ -n "${PRIVATE_KEY:-}" ] || { echo "PRIVATE_KEY not set"; exit 1; }
|
|
DEPLOYER=$(cast wallet address "$PRIVATE_KEY" 2>/dev/null) || exit 1
|
|
|
|
FAILURES=0
|
|
|
|
extract_tx_hash() {
|
|
local out="$1"
|
|
echo "$out" | awk '/^transactionHash[[:space:]]/ {print $2; exit}'
|
|
}
|
|
|
|
tx_status_ok() {
|
|
local txhash="$1"
|
|
[[ -n "$txhash" && "$txhash" == 0x* ]] || return 1
|
|
local st
|
|
st=$(cast receipt "$txhash" status --rpc-url "$RPC" 2>/dev/null | awk '{print $1}' || echo "")
|
|
[[ "$st" == "1" || "$st" == "true" ]]
|
|
}
|
|
|
|
mint_via_multisig() {
|
|
local token="$1" sym="$2" amount="$3"
|
|
local data txhash txid
|
|
data=$(cast calldata "mint(address,uint256)" "$DEPLOYER" "$amount")
|
|
echo -n " multisig mint $sym... "
|
|
txhash=$(cast send "$MULTISIG" \
|
|
"submitTransaction(address,uint256,bytes)" "$token" 0 "$data" \
|
|
--rpc-url "$RPC" --private-key "$PRIVATE_KEY" --legacy \
|
|
--gas-limit "$GAS_LIMIT_MULTISIG" --gas-price "$GAS_PRICE" 2>&1) || {
|
|
echo "FAIL (submit)"
|
|
echo "$txhash" | tail -3
|
|
return 1
|
|
}
|
|
local count txid exec_out
|
|
count=$(cast call "$MULTISIG" "getTransactionCount()(uint256)" --rpc-url "$RPC" 2>/dev/null | awk '{print $1}' || echo "0")
|
|
if [[ "$count" =~ ^[0-9]+$ && "$count" -gt 0 ]]; then
|
|
txid=$((count - 1))
|
|
else
|
|
echo "FAIL (txid)"
|
|
return 1
|
|
fi
|
|
exec_out=$(cast send "$MULTISIG" "executeTransaction(uint256)" "$txid" \
|
|
--rpc-url "$RPC" --private-key "$PRIVATE_KEY" --legacy \
|
|
--gas-limit "$GAS_LIMIT_MULTISIG" --gas-price "$GAS_PRICE" 2>&1) || {
|
|
echo "FAIL (execute)"
|
|
echo "$exec_out" | tail -3
|
|
return 1
|
|
}
|
|
txhash=$(extract_tx_hash "$exec_out")
|
|
if tx_status_ok "$txhash"; then
|
|
echo "OK (tx $txhash)"
|
|
return 0
|
|
fi
|
|
echo "FAIL (receipt status 0: $txhash)"
|
|
return 1
|
|
}
|
|
|
|
mint_direct() {
|
|
local token="$1" sym="$2" amount="$3"
|
|
local out txhash
|
|
echo -n " direct mint $sym... "
|
|
out=$(cast send "$token" "mint(address,uint256)" "$DEPLOYER" "$amount" \
|
|
--rpc-url "$RPC" --private-key "$PRIVATE_KEY" --legacy \
|
|
--gas-limit "$GAS_LIMIT_MINT" --gas-price "$GAS_PRICE" 2>&1) || {
|
|
echo "FAIL (send)"
|
|
echo "$out" | tail -3
|
|
return 1
|
|
}
|
|
txhash=$(extract_tx_hash "$out")
|
|
if tx_status_ok "$txhash"; then
|
|
echo "OK (tx $txhash)"
|
|
return 0
|
|
fi
|
|
echo "FAIL (receipt status 0: $txhash)"
|
|
return 1
|
|
}
|
|
|
|
mint_one() {
|
|
local sym="$1" token="$2" amount="$3"
|
|
local owner lc_dep lc_own
|
|
owner=$(cast call "$token" "owner()(address)" --rpc-url "$RPC" 2>/dev/null || echo "")
|
|
lc_dep=$(echo "$DEPLOYER" | tr '[:upper:]' '[:lower:]')
|
|
lc_own=$(echo "$owner" | tr '[:upper:]' '[:lower:]')
|
|
lc_ms=$(echo "$MULTISIG" | tr '[:upper:]' '[:lower:]')
|
|
|
|
if [[ "$lc_own" == "$lc_dep" ]]; then
|
|
mint_direct "$token" "$sym" "$amount" || return 1
|
|
elif [[ "$lc_own" == "$lc_ms" ]]; then
|
|
mint_via_multisig "$token" "$sym" "$amount" || return 1
|
|
else
|
|
echo " SKIP $sym: owner=$owner (not deployer or multisig)"
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
echo "=== Mint all c* on Chain 138 ==="
|
|
echo " Deployer: $DEPLOYER"
|
|
echo " MultiSig: $MULTISIG"
|
|
echo " Amount: $AMOUNT_HUMAN tokens each ($BASE_UNITS base)"
|
|
echo " XAU: $MINT_XAU_OZ troy oz each ($XAU_BASE_UNITS base)"
|
|
echo " Gas: mint=$GAS_LIMIT_MINT multisig=$GAS_LIMIT_MULTISIG"
|
|
echo ""
|
|
|
|
for pair in \
|
|
"cUSDT:0x93E66202A11B1772E55407B32B44e5Cd8eda7f22" \
|
|
"cUSDC:0xf22258f57794CC8E06237084b353Ab30fFfa640b" \
|
|
"cEURC:0x8085961F9cF02b4d800A3c6d386D31da4B34266a" \
|
|
"cEURT:0xdf4b71c61E5912712C1Bdd451416B9aC26949d72" \
|
|
"cGBPC:0x003960f16D9d34F2e98d62723B6721Fb92074aD2" \
|
|
"cGBPT:0x350f54e4D23795f86A9c03988c7135357CCaD97c" \
|
|
"cAUDC:0xD51482e567c03899eecE3CAe8a058161FD56069D" \
|
|
"cJPYC:0xEe269e1226a334182aace90056EE4ee5Cc8A6770" \
|
|
"cCHFC:0x873990849DDa5117d7C644f0aF24370797C03885" \
|
|
"cCADC:0x54dBd40cF05e15906A2C21f600937e96787f5679"; do
|
|
sym="${pair%%:*}"
|
|
addr="${pair#*:}"
|
|
echo "Minting $sym..."
|
|
mint_one "$sym" "$addr" "$BASE_UNITS" || FAILURES=$((FAILURES + 1))
|
|
done
|
|
|
|
for pair in \
|
|
"cXAUC:0x290E52a8819A4fbD0714E517225429aA2B70EC6b" \
|
|
"cXAUT:0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E"; do
|
|
sym="${pair%%:*}"
|
|
addr="${pair#*:}"
|
|
echo "Minting $sym ($MINT_XAU_OZ oz)..."
|
|
mint_one "$sym" "$addr" "$XAU_BASE_UNITS" || FAILURES=$((FAILURES + 1))
|
|
done
|
|
|
|
echo ""
|
|
if [[ "$FAILURES" -gt 0 ]]; then
|
|
echo "Done with $FAILURES failure(s)."
|
|
exit 1
|
|
fi
|
|
echo "Done — all mints succeeded."
|
|
exit 0
|