Files
proxmox/docs/11-references/TOKENS_AND_NETWORKS_MINTABLE_TO_DEPLOYER.md

218 lines
12 KiB
Markdown
Raw Normal View History

# Tokens and Networks — Mintable to Deployer (Liquidity Pools & Bridges)
**Last Updated:** 2026-03-02
**Purpose:** Single list of all tokens and networks where tokens **can be minted** (or otherwise credited) to the deployer address for funding PMM liquidity pools and bridges. Use this to fund all operator/LAN-only items (add liquidity, CCIP bridges, etc.).
**Deployer address:** `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
**Full mint runbook (c* and cW* on 138 + other networks):** [MINT_C_AND_CW_ON_ALL_NETWORKS.md](MINT_C_AND_CW_ON_ALL_NETWORKS.md)
---
## Summary
| Network | Chain ID | Tokens mintable to deployer | Mechanism |
|---------|----------|-----------------------------|-----------|
| **DeFi Oracle Meta Mainnet** | 138 | cUSDT, cUSDC, cEURC, cEURT, cGBPC, cGBPT, cAUDC, cJPYC, cCHFC, cCADC, cXAUC, cXAUT | Owner mint (CompliantFiatToken / CompliantUSDT / CompliantUSDC) |
| **Cronos** | 25 | USDW, EURW, GBPW, AUDW, JPYW, CHFW, CADW (D-WIN W) | MintController (MINTER_ROLE + reserve); conditional |
| **All other chains** | 1, 56, 100, 137, 10, 42161, 8453, 43114, 42220, 1111, 651940 | — | Acquire via wrap, bridge, or DEX (see § Acquire) |
---
## 1. Chain 138 — Owner mint (all compliant tokens)
On **Chain 138**, the deployer is **owner** of all compliant token contracts deployed by this repo. Each has `mint(address to, uint256 amount) public onlyOwner`. Mint to deployer by calling `mint(deployerAddress, amount)` from the deployer EOA.
### 1.1 Token addresses and decimals (Chain 138)
| Symbol | Contract address | Decimals | Use for |
|--------|------------------|----------|---------|
| **cUSDT** | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | 6 | PMM pools cUSDT/cUSDC, cUSDT/USDT |
| **cUSDC** | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | 6 | PMM pools cUSDT/cUSDC, cUSDC/USDC |
| **cEURC** | `0x8085961F9cF02b4d800A3c6d386D31da4B34266a` | 6 | Future pools / bridge |
| **cEURT** | `0xdf4b71c61E5912712C1Bdd451416B9aC26949d72` | 6 | Future pools / bridge |
| **cGBPC** | `0x003960f16D9d34F2e98d62723B6721Fb92074aD2` | 6 | Future pools / bridge |
| **cGBPT** | `0x350f54e4D23795f86A9c03988c7135357CCaD97c` | 6 | Future pools / bridge |
| **cAUDC** | `0xD51482e567c03899eecE3CAe8a058161FD56069D` | 6 | Future pools / bridge |
| **cJPYC** | `0xEe269e1226a334182aace90056EE4ee5Cc8A6770` | 6 | Future pools / bridge |
| **cCHFC** | `0x873990849DDa5117d7C644f0aF24370797C03885` | 6 | Future pools / bridge |
| **cCADC** | `0x54dBd40cF05e15906A2C21f600937e96787f5679` | 6 | Future pools / bridge |
| **cXAUC** | `0x290E52a8819A4fbD0714E517225429aA2B70EC6b` | 6 | Future pools / bridge |
| **cXAUT** | `0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E` | 6 | Future pools / bridge |
**Decimals:** All use 6 decimals. Amount in base units = amount × 10^6 (e.g. 1_000_000 = 1 token).
### 1.2 How to mint on Chain 138
**Option A — Mint for PMM liquidity (recommended for add-liquidity):**
```bash
cd smom-dbis-138
source .env
# Mint 1M cUSDT and 1M cUSDC to deployer (default)
./scripts/mint-for-liquidity.sh
# Custom amounts (human units)
MINT_CUSDT_AMOUNT=2000000 MINT_CUSDC_AMOUNT=2000000 ./scripts/mint-for-liquidity.sh
# Mint then add liquidity in one go
./scripts/mint-for-liquidity.sh --add-liquidity
```
See [ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK](../03-deployment/ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md) §0.
**Option A2 — cUSDT / cUSDC (top-up to 750M supply):**
```bash
cd smom-dbis-138
source .env
./scripts/mint-to-750m.sh both 0x4A666F96fC8764181194447A7dFdb7d471b301C8
# Or per token: ./scripts/mint-to-750m.sh usdt <recipient> ./scripts/mint-to-750m.sh usdc <recipient>
```
**Option B — Any compliant token via cast (owner = deployer):**
```bash
# From smom-dbis-138, with PRIVATE_KEY and RPC_URL_138 set
DEPLOYER=0x4A666F96fC8764181194447A7dFdb7d471b301C8
# Example: mint 1,000,000 cEURC (1e6 * 1e6 = 1000000000000 base units)
cast send 0x8085961F9cF02b4d800A3c6d386D31da4B34266a \
"mint(address,uint256)" "$DEPLOYER" 1000000000000 \
--rpc-url "$RPC_URL_138" --private-key "$PRIVATE_KEY"
```
Repeat for each token and desired amount. Replace the token address with the one from the table above.
### 1.3 WETH and LINK on Chain 138
| Token | Address | Mintable? | How to get balance for deployer |
|-------|---------|-----------|----------------------------------|
| **WETH** | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | No (standard wrap) | Wrap native ETH: send ETH to WETH contract and call `deposit()` (or use a wrapper script). |
| **LINK** | `0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03` | Depends (mock vs canonical) | If Chain 138 LINK is a mock with `mint`, call `mint(deployer, amount)`. Otherwise acquire via bridge or CCIP. |
---
## 2. Cronos (Chain 25) — D-WIN W tokens (MintController)
D-WIN W tokens (USDW, EURW, GBPW, AUDW, JPYW, CHFW, CADW) on **Cronos** are **ISO4217WToken** contracts. Minting is done via **MintController**, which requires:
- Caller has **MINTER_ROLE** on the MintController.
- Token is **approved** in the controller (`isApprovedToken[token]`).
- **Reserve oracle** and **compliance guard** allow the mint (reserve ≥ new supply).
If the deployer (or an EOA you control) is the admin of the MintController and has MINTER_ROLE, you can mint to the deployer by calling:
```solidity
MintController.mint(token, deployerAddress, amount, settlementId)
```
Token addresses on Cronos (from [TOKEN_CATEGORIES_CANONICAL](TOKEN_CATEGORIES_CANONICAL.md) / [DEPLOYED_COINS_TOKENS_AND_NETWORKS](DEPLOYED_COINS_TOKENS_AND_NETWORKS.md)):
| Symbol | Address (Cronos) | Decimals |
|--------|------------------|----------|
| USDW | `0x948690147D2e50ffe50C5d38C14125aD6a9FA036` | 2 |
| EURW | `0x58a8D8F78F1B65c06dAd7542eC46b299629A60dd` | 2 |
| GBPW | `0xFb4B6Cc81211F7d886950158294A44C312abCA29` | 2 |
| AUDW | `0xf9f5D0ACD71C76F9476F10B3F3d3E201F0883C68` | 2 |
| JPYW | `0xeE17bB0322383fecCA2784fbE2d4CD7d02b1905B` | 2 |
| CHFW | `0xc9750828124D4c10e7a6f4B655cA8487bD3842EB` | 2 |
| CADW | `0x328Cd365Bb35524297E68ED28c6fF2C9557d1363` | 2 |
**Note:** You must have the MintController address for Cronos, have MINTER_ROLE, and have updated the reserve oracle so that `canMint(token, amount)` returns true. If the D-WIN system on Cronos is operated by another party, request a mint to the deployer from them.
---
## 3. Tokens that must be acquired (not minted to deployer)
These are needed for liquidity pools and bridges but **cannot** be minted by the deployer; they must be obtained by wrap, bridge, or DEX.
### 3.1 By network
| Network | Chain ID | Tokens needed for pools/bridges | How to get |
|---------|----------|----------------------------------|------------|
| **Ethereum Mainnet** | 1 | USDT, USDC, WETH, LINK | DEX, CEX, or bridge from 138; WETH = wrap ETH. |
| **ALL Mainnet (Alltra)** | 651940 | AUSDT, USDC, WETH, WALL | Ecosystem tokens; acquire via Alltra DEX/bridge or partner. |
| **Cronos** | 25 | Native CRO (gas), LINK (if funding CCIP) | CRO from exchange; LINK from bridge/DEX. |
| **BSC** | 56 | BNB (gas), USDT, USDC, WETH, LINK | DEX/CEX; wrap BNB for WBNB if needed. |
| **Gnosis** | 100 | xDAI (gas), LINK | Bridge or DEX. |
| **Polygon** | 137 | MATIC (gas), USDT, USDC, WETH, LINK | DEX/bridge. |
| **Optimism** | 10 | ETH (gas), USDT, USDC, WETH, LINK | Bridge/DEX. |
| **Arbitrum** | 42161 | ETH (gas), USDT, USDC, WETH, LINK | Bridge/DEX. |
| **Base** | 8453 | ETH (gas), USDT, USDC, WETH, LINK | Bridge/DEX. |
| **Avalanche** | 43114 | AVAX (gas), USDT, USDC, WETH, LINK | Bridge/DEX. |
| **Celo** | 42220 | CELO (gas), LINK | Bridge/DEX. |
| **Wemix** | 1111 | WEMIX (gas), LINK | Bridge/DEX. |
### 3.2 CCIP bridge funding (LINK)
For **CCIP bridges** (138 ↔ Mainnet, 138 ↔ Gnosis/Cronos/Celo/Wemix, etc.), the **bridge contract** on each chain must hold **LINK** to pay fees. The deployer does not mint LINK on public chains; you:
1. Acquire LINK on the target chain (e.g. from Mainnet and bridge, or DEX on that chain).
2. Transfer LINK from the deployer to the **bridge contract address** (e.g. `cast send ... transfer(bridgeAddress, amount)`).
Recommended: **~10 LINK per bridge** for initial operations. See [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md) § Fund bridges with LINK.
### 3.3 Official USDT / USDC on Chain 138 (PMM pools)
PMM pools **cUSDT/USDT** and **cUSDC/USDC** use an “official” USDT/USDC pair on Chain 138. If that pair is a separate contract (e.g. bridged or canonical), the deployer cannot mint it; acquire from a bridge or use the compliant side only. If the “official” address is set to cUSDT/cUSDC for testing, then mint cUSDT/cUSDC as in §1.
---
## 4. Suggested mint order for liquidity and bridges
1. **Chain 138 — Compliant tokens**
Mint cUSDT and cUSDC (and optionally cEURC, cEURT, etc.) to the deployer in the amounts needed for:
- [ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK](../03-deployment/ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md): base/quote for the three PMM pools (cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC).
- Use [check-deployer-balance-chain138-and-funding-plan.sh](../../scripts/deployment/check-deployer-balance-chain138-and-funding-plan.sh) to see current balances; mint additional so that half of (current + minted) can be allocated to liquidity per [DEPLOYER_WALLET_FUNDING_PLAN_PMM_POOLS](DEPLOYER_WALLET_FUNDING_PLAN_PMM_POOLS.md).
2. **Chain 138 — WETH**
Ensure deployer has enough native ETH, then wrap the portion needed for WETH-denominated use (e.g. future pools or bridge).
3. **Chain 138 — LINK**
If LINK on 138 is mintable (mock), mint to deployer for local testing. For production, acquire LINK and send to the deployer or directly to bridge contracts as needed.
4. **Cronos — D-WIN W**
If you operate MintController and reserve, mint USDW, EURW, etc. to the deployer for Cronos-side liquidity or testing.
5. **Other chains**
Acquire native gas and LINK (and any USDT/USDC) per §3; then run add-liquidity and fund-ccip-bridges scripts from the operator/LAN runbooks.
---
## 5. Quick reference — mint commands (Chain 138)
```bash
# Load env (from smom-dbis-138 or repo root with RPC_URL_138 and PRIVATE_KEY)
source smom-dbis-138/.env
DEPLOYER=0x4A666F96fC8764181194447A7dFdb7d471b301C8
# cUSDT 1M tokens (6 decimals)
cast send 0x93E66202A11B1772E55407B32B44e5Cd8eda7f22 "mint(address,uint256)" $DEPLOYER 1000000000000 --rpc-url "$RPC_URL_138" --private-key "$PRIVATE_KEY"
# cUSDC 1M tokens
cast send 0xf22258f57794CC8E06237084b353Ab30fFfa640b "mint(address,uint256)" $DEPLOYER 1000000000000 --rpc-url "$RPC_URL_138" --private-key "$PRIVATE_KEY"
# cEURC 1M tokens
cast send 0x8085961F9cF02b4d800A3c6d386D31da4B34266a "mint(address,uint256)" $DEPLOYER 1000000000000 --rpc-url "$RPC_URL_138" --private-key "$PRIVATE_KEY"
# (Repeat for cEURT, cGBPC, cGBPT, cAUDC, cJPYC, cCHFC, cCADC, cXAUC, cXAUT with their addresses from §1.1)
```
---
## 6. Tokens the deployer deployed on other chains
For a list of **token contracts** the deployer wallet deployed on blockchains **other than 138** (Cronos D-WIN W, WETH9/WETH10 on L2s), see [TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS](TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS.md).
---
## 7. References
| Document | Purpose |
|----------|---------|
| [TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS](TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS.md) | Tokens deployer deployed on other blockchains (Cronos, L2s) |
| [TOKEN_CATEGORIES_CANONICAL](TOKEN_CATEGORIES_CANONICAL.md) | Token categories and symbols |
| [CHAIN138_TOKEN_ADDRESSES](CHAIN138_TOKEN_ADDRESSES.md) | Chain 138 token addresses |
| [DEPLOYED_COINS_TOKENS_AND_NETWORKS](DEPLOYED_COINS_TOKENS_AND_NETWORKS.md) | Tokens by chain |
| [DEPLOYER_WALLET_FUNDING_PLAN_PMM_POOLS](DEPLOYER_WALLET_FUNDING_PLAN_PMM_POOLS.md) | Funding plan (50% for PMM) |
| [ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK](../03-deployment/ADD_LIQUIDITY_PMM_CHAIN138_RUNBOOK.md) | Add liquidity to PMM pools |
| [CONFIG_READY_CHAINS_COMPLETION_RUNBOOK](../07-ccip/CONFIG_READY_CHAINS_COMPLETION_RUNBOOK.md) | CCIP bridges and LINK funding |