# Mr. Promod Uniswap V2 Promotion Gates - Generated: `2026-04-18T02:19:49Z` - Purpose: exact per-chain env vars and registry records required before the first live Uniswap V2 pool can be promoted. - Mainnet funding posture: `triple-rail-support` via `cWUSDC, cWUSDT, cWAUSDT` - Chains in scope: `10` - Currently blocked: `6` ## Global Rule - Promotion requires all of the following on the target chain: Uniswap V2 factory/router/start-block env set, indexer code support present, a live pair discoverable on-chain, and the pool address recorded in `deployment-status.json`. ## Operator Table | Chain | Network | Code Support | Exact Env Vars To Fill | Registry Records To Fill | |---|---|---|---|---| | `1` | Ethereum Mainnet | `ready` | `CHAIN_1_UNISWAP_V2_FACTORY`, `CHAIN_1_UNISWAP_V2_ROUTER`, `CHAIN_1_UNISWAP_V2_START_BLOCK` | `chains[1].cwTokens.cWUSDC`, `chains[1].cwTokens.cWUSDT`, `chains[1].anchorAddresses.USDC` | | `10` | Optimism | `ready` | `CHAIN_10_UNISWAP_V2_FACTORY`, `CHAIN_10_UNISWAP_V2_ROUTER`, `CHAIN_10_UNISWAP_V2_START_BLOCK` | `chains[10].cwTokens.cWUSDC`, `chains[10].cwTokens.cWUSDT`, `chains[10].anchorAddresses.USDC` | | `25` | Cronos | `ready` | `CHAIN_25_UNISWAP_V2_FACTORY`, `CHAIN_25_UNISWAP_V2_ROUTER`, `CHAIN_25_UNISWAP_V2_START_BLOCK` | `chains[25].cwTokens.cWUSDC`, `chains[25].cwTokens.cWUSDT`, `chains[25].anchorAddresses.USDT` | | `56` | BSC | `ready` | `CHAIN_56_UNISWAP_V2_FACTORY`, `CHAIN_56_UNISWAP_V2_ROUTER`, `CHAIN_56_UNISWAP_V2_START_BLOCK` | `chains[56].cwTokens.cWAUSDT`, `chains[56].cwTokens.cWUSDC`, `chains[56].cwTokens.cWUSDT` | | `100` | Gnosis | `ready` | `CHAIN_100_UNISWAP_V2_FACTORY`, `CHAIN_100_UNISWAP_V2_ROUTER`, `CHAIN_100_UNISWAP_V2_START_BLOCK` | `chains[100].cwTokens.cWUSDC`, `chains[100].cwTokens.cWUSDT`, `chains[100].anchorAddresses.USDC` | | `137` | Polygon | `ready` | `CHAIN_137_UNISWAP_V2_FACTORY`, `CHAIN_137_UNISWAP_V2_ROUTER`, `CHAIN_137_UNISWAP_V2_START_BLOCK` | `chains[137].cwTokens.cWAUSDT`, `chains[137].cwTokens.cWUSDC`, `chains[137].cwTokens.cWUSDT` | | `8453` | Base | `ready` | `CHAIN_8453_UNISWAP_V2_FACTORY`, `CHAIN_8453_UNISWAP_V2_ROUTER`, `CHAIN_8453_UNISWAP_V2_START_BLOCK` | `chains[8453].cwTokens.cWUSDC`, `chains[8453].cwTokens.cWUSDT`, `chains[8453].anchorAddresses.USDC` | | `42161` | Arbitrum One | `ready` | `CHAIN_42161_UNISWAP_V2_FACTORY`, `CHAIN_42161_UNISWAP_V2_ROUTER`, `CHAIN_42161_UNISWAP_V2_START_BLOCK` | `chains[42161].cwTokens.cWUSDC`, `chains[42161].cwTokens.cWUSDT`, `chains[42161].anchorAddresses.USDC` | | `42220` | Celo | `ready` | `CHAIN_42220_UNISWAP_V2_FACTORY`, `CHAIN_42220_UNISWAP_V2_ROUTER`, `CHAIN_42220_UNISWAP_V2_START_BLOCK` | `chains[42220].cwTokens.cWAUSDT`, `chains[42220].cwTokens.cWUSDC`, `chains[42220].cwTokens.cWUSDT` | | `43114` | Avalanche C-Chain | `ready` | `CHAIN_43114_UNISWAP_V2_FACTORY`, `CHAIN_43114_UNISWAP_V2_ROUTER`, `CHAIN_43114_UNISWAP_V2_START_BLOCK` | `chains[43114].cwTokens.cWAUSDT`, `chains[43114].cwTokens.cWUSDC`, `chains[43114].cwTokens.cWUSDT` | ## First Live Pool Minimum Checklist 1. Add `CHAIN__UNISWAP_V2_FACTORY`, `CHAIN__UNISWAP_V2_ROUTER`, and `CHAIN__UNISWAP_V2_START_BLOCK` for the target chain. 2. Extend token-aggregation code support for that chain if `code_support_status` is `blocked`. 3. Create the pool on-chain and record its `base`, `quote`, and `poolAddress` in `cross-chain-pmm-lps/config/deployment-status.json`. 4. Rebuild live-pair discovery and promotion-gate artifacts so the new pair is visible to operator tooling. 5. Only then promote the pair as live in operator-facing docs or routing artifacts.