- Marked submodules ai-mcp-pmm-controller, explorer-monorepo, and smom-dbis-138 as dirty to reflect recent changes. - Updated documentation to clarify operator script usage, including dotenv loading and task execution instructions. - Enhanced the README and various index files to provide clearer navigation and task completion guidance. Made-with: Cursor
4.6 KiB
Minting c* and cW* on Chain 138 and Other Networks
Purpose: How to mint compliant tokens (c*) and compliant wrapped tokens (cW*) to the deployer on Chain 138 and on other networks where they are deployed.
Deployer: 0x4A666F96fC8764181194447A7dFdb7d471b301C8
Summary
| Token type | Chain 138 | Other networks (1, 25, 56, 137, 100, 10, 42161, 8453, 43114) |
|---|---|---|
| c* (cUSDT, cUSDC, cEURC, …) | Deployer is owner → can mint | Deploy first with DeployCompliantFiatTokensForChain.s.sol (owner = deployer), then mint same as 138 |
| cW* (cWUSDT, cWUSDC, …) | Not deployed on 138 (cW* are on destination chains only) | Deployer is admin and has MINTER_ROLE → can mint on any chain where cW* are deployed |
1. c* on Chain 138
All 12 c* are already deployed; deployer is owner. Mint with cast or scripts.
Script (cUSDT/cUSDC only): smom-dbis-138/scripts/mint-for-liquidity.sh
Script (all 12 c):* smom-dbis-138/scripts/mint-all-c-star-138.sh [amount_human] — mints cUSDT, cUSDC, cEURC, cEURT, cGBPC, cGBPT, cAUDC, cJPYC, cCHFC, cCADC, cXAUC, cXAUT to deployer (default 1M each).
Cast (per token):
cd smom-dbis-138 && source .env
DEPLOYER=0x4A666F96fC8764181194447A7dFdb7d471b301C8
# 1M tokens = 1000000000000 base units (6 decimals)
cast send <CUSDT_ADDRESS> "mint(address,uint256)" "$DEPLOYER" 1000000000000 \
--rpc-url "$RPC_URL_138" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
Addresses: see TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER.md §1.1.
2. c* on other networks
Step 1: Deploy c* to the target chain (if not already deployed)
From smom-dbis-138/:
source .env
# Example: Polygon (137). Set RPC and chain-id for the target chain.
export RPC_URL="$POLYGON_MAINNET_RPC" # or BSC_RPC_URL, etc.
# Deploy cUSDT + cUSDC (default). Add DEPLOY_CEURC=1 etc. for more.
forge script script/deploy/DeployCompliantFiatTokensForChain.s.sol:DeployCompliantFiatTokensForChain \
--rpc-url "$RPC_URL" --broadcast --private-key "$PRIVATE_KEY" --chain-id 137
# Optional: deploy all 12 c* (set env flags)
DEPLOY_CEURC=1 DEPLOY_CEURT=1 DEPLOY_CGBPC=1 DEPLOY_CGBPT=1 \
DEPLOY_CAUDC=1 DEPLOY_CJPYC=1 DEPLOY_CCHFC=1 DEPLOY_CCADC=1 \
DEPLOY_CXAUC=1 DEPLOY_CXAUT=1 \
forge script script/deploy/DeployCompliantFiatTokensForChain.s.sol:DeployCompliantFiatTokensForChain \
--rpc-url "$RPC_URL" --broadcast --private-key "$PRIVATE_KEY" --chain-id 137
Then set in .env: CUSDT_137=<addr>, CUSDC_137=<addr>, etc.
Step 2: Mint c* on that chain
Same as 138: deployer is owner. Use cast with the chain’s RPC and token address:
RPC="$POLYGON_MAINNET_RPC"
CUSDT_POLY="0x..." # from deploy output or .env CUSDT_137
cast send "$CUSDT_POLY" "mint(address,uint256)" "$DEPLOYER" 1000000000000 \
--rpc-url "$RPC" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
Use the same cast pattern with that chain's RPC and token addresses from .env (e.g. CUSDT_POLYGON, CUSDC_POLYGON for Polygon).
3. cW* on other networks
cW* are CompliantWrappedToken; the deploy script grants MINTER_ROLE to both the bridge and the admin (deployer). So the deployer can mint cW* on any chain where cW* were deployed by this repo.
Per token, per chain (cast):
cd smom-dbis-138 && source .env
# Example: mint 1M cWUSDT on Polygon (137)
CWUSDT_ADDR="$CWUSDT_137" # from .env after DeployCWTokens
RPC="$POLYGON_MAINNET_RPC"
DEPLOYER=0x4A666F96fC8764181194447A7dFdb7d471b301C8
cast send "$CWUSDT_ADDR" "mint(address,uint256)" "$DEPLOYER" 1000000000000 \
--rpc-url "$RPC" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
Env vars for addresses (examples): CWUSDT_137, CWUSDC_137, CWUSDT_1, CWUSDC_1, … (see CW_TOKENS_AND_NETWORKS.md and token-mapping-multichain.json).
Use smom-dbis-138/scripts/mint-cw-on-chain.sh <CHAIN_NAME> [amount] to mint all cW* on a chain (e.g. ./scripts/mint-cw-on-chain.sh Polygon). Requires CWUSDT_<CHAIN>, CWUSDC_<CHAIN>, etc. and chain RPC in .env.
4. Reference: token addresses by chain
- Chain 138 c:* TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER.md §1.1
- cW and networks:* CW_TOKENS_AND_NETWORKS.md,
config/token-mapping-multichain.json - Deploy c on a chain:*
DeployCompliantFiatTokensForChain.s.sol - Deploy cW on a chain:*
DeployCWTokens.s.sol(setCW_BRIDGE_ADDRESS)