Files
smom-dbis-138/scripts/mint-all-c-star-138.sh
defiQUG dc9ecd8963
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
feat(chain138): DBIS Rail post-deploy scripts and address inventory updates.
WireDBISRailPostDeploy/Signers forge scripts, PMM pool registry, and explorer verify refresh.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-18 07:55:50 -07:00

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