chore: sync workspace docs, configs, and submodules
All checks were successful
Deploy to Phoenix / deploy (push) Successful in 9s
All checks were successful
Deploy to Phoenix / deploy (push) Successful in 9s
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# Chain 138 → Solana — GRU Token Deployment Lineup
|
||||
|
||||
**Last updated:** 2026-04-18
|
||||
**Current status:** `lineup_defined_relay_and_mints_outstanding` — see [config/solana-gru-bridge-lineup.json](../../config/solana-gru-bridge-lineup.json).
|
||||
|
||||
**Purpose:** Line up deployment of **all canonical GRU base-money assets** from Chain 138 to Solana as **bridge-backed SPL representations**, using the agreed model: **custom relay** (per `token-mapping-multichain.json` notes), **SPL mints**, **hub stables on Solana**, and **execution / edge liquidity** as a separate phase (CLMM + bot, CLOB MM, or future PMM-class program).
|
||||
|
||||
**Machine-readable manifest:** [config/solana-gru-bridge-lineup.json](../../config/solana-gru-bridge-lineup.json) (fill `solanaMint` as mints exist).
|
||||
|
||||
---
|
||||
|
||||
## 1. Scope — which tokens
|
||||
|
||||
| Role | Count | Notes |
|
||||
|------|-------|--------|
|
||||
| **Canonical `c*` on Chain 138** | **12** | Addresses: [EXPLORER_TOKEN_LIST_CROSSCHECK.md](../11-references/EXPLORER_TOKEN_LIST_CROSSCHECK.md) §2 |
|
||||
| **WETH** | **1** | Aligns with [config/non-evm-bridge-framework.json](../../config/non-evm-bridge-framework.json) `solanaInitialLiveSet` |
|
||||
|
||||
On Solana, fiat-stable GRU assets use the **`cW*`** symbol set per `config/token-mapping-multichain.json` → `nonEvmNetworks.Solana.approvedMirroredSymbols`.
|
||||
|
||||
---
|
||||
|
||||
## 2. Repo anchors
|
||||
|
||||
| Item | Location |
|
||||
|------|----------|
|
||||
| Non-EVM rollout + initial symbol set | [config/non-evm-bridge-framework.json](../../config/non-evm-bridge-framework.json) |
|
||||
| CAIP-2, relay mode, approved symbols | [config/token-mapping-multichain.json](../../config/token-mapping-multichain.json) `nonEvmNetworks.Solana` |
|
||||
| Solana adapter (Chain 138) | `smom-dbis-138/contracts/bridge/adapters/non-evm/SolanaAdapter.sol` |
|
||||
| Relay worker stub | `smom-dbis-138/services/solana-relay/src/SolanaRelayService.ts` |
|
||||
| Hub-stable note | [cross-chain-pmm-lps/config/chains.json](../../cross-chain-pmm-lps/config/chains.json) `nonEvm[]` |
|
||||
|
||||
---
|
||||
|
||||
## 3. Phased deployment sequence
|
||||
|
||||
### Phase A — Chain 138 bridge surface
|
||||
|
||||
Deploy/register `SolanaAdapter`, define lock/mint messaging and replay/refund paths.
|
||||
|
||||
### Phase B — Solana SPL mints
|
||||
|
||||
Create SPL tokens; record **`solanaMint`** per asset in `solana-gru-bridge-lineup.json`.
|
||||
|
||||
### Phase C — Relay implementation
|
||||
|
||||
Replace relay stub with production path; fund SOL signers; E2E both directions on mainnet-beta when ready.
|
||||
|
||||
### Phase D — Execution on Solana
|
||||
|
||||
Resolve SPL USDC/USDT hubs; add pools/markets per chosen venue strategy.
|
||||
|
||||
### Phase E — Public exposure
|
||||
|
||||
After verifiers and E2E gates pass; align [GRU_REFERENCE_PRIMACY_AND_MESH_EXECUTION_MODEL.md](../04-configuration/GRU_REFERENCE_PRIMACY_AND_MESH_EXECUTION_MODEL.md).
|
||||
|
||||
---
|
||||
|
||||
## 4. Verification
|
||||
|
||||
```bash
|
||||
bash scripts/verify/check-gru-non-evm-readiness.sh
|
||||
bash scripts/verify/check-contracts-on-chain-138.sh
|
||||
```
|
||||
@@ -0,0 +1,116 @@
|
||||
# Chain 138 -> Wemix 1111 Bridge Completion Checklist
|
||||
|
||||
**Last Updated:** 2026-04-18
|
||||
**Purpose:** Strict operator checklist to move WEMIX `1111` from repo-deferred state into a live `138 -> 1111` bridge path for `WETH9` / `WETH10`, then prepare GRU v2 `cW*` assets for rollout.
|
||||
|
||||
## 1. Current Repo State
|
||||
|
||||
| Item | Current State |
|
||||
|---|---|
|
||||
| Destination chain | `1111` / Wemix |
|
||||
| Destination selector | `5142893604156789321` |
|
||||
| Activation state | `deferred` |
|
||||
| Bridge available | `false` |
|
||||
| Recorded `cW*` assets | `cWBTC` |
|
||||
| Recorded anchor addresses | `USDC=0xcebA9300f2b948710d2653dD7B07f33A8B32118C` |
|
||||
|
||||
The repo currently shows WEMIX as **deferred**, not live. Native WEMIX gas is the only part that is already in good shape; the missing bridge deployment and LINK funding are the actual blockers.
|
||||
|
||||
## 2. Exact Environment Surface
|
||||
|
||||
| Variable | Current Value |
|
||||
|---|---|
|
||||
| `CCIP_ROUTER_WEMIX` | `0x7798b795Fde864f4Cd1b124a38Ba9619B7F8A442` |
|
||||
| `LINK_TOKEN_WEMIX` | `0x80f1FcdC96B55e459BF52b998aBBE2c364935d69` |
|
||||
| `WETH9_WEMIX` | `0x7D72b22a74A216Af4a002a1095C8C707d6eC1C5f` |
|
||||
| `WETH10_WEMIX` | `0x7D72b22a74A216Af4a002a1095C8C707d6eC1C5f` |
|
||||
| `CCIPWETH9_BRIDGE_WEMIX` | `(unset)` |
|
||||
| `CCIPWETH10_BRIDGE_WEMIX` | `(unset)` |
|
||||
| `LINK_GAS_AVAILABLE_1111` | `0` |
|
||||
| `LINK_GAS_UNAVAILABLE_CHAIN_IDS` | `25,1111` |
|
||||
| `WEMIX_RPC` | `https://api.wemix.com` |
|
||||
| `CHAIN138_SELECTOR` | `138` |
|
||||
| `CCIPWETH9_BRIDGE_CHAIN138` | `0xcacfd227A040002e49e2e01626363071324f820a` |
|
||||
| `CCIPWETH10_BRIDGE_CHAIN138` | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` |
|
||||
|
||||
## 3. Completion Steps
|
||||
|
||||
### Step 1: Preflight WEMIX
|
||||
|
||||
```bash
|
||||
cd smom-dbis-138
|
||||
./scripts/deployment/preflight-config-ready-chains.sh wemix
|
||||
```
|
||||
|
||||
Success means:
|
||||
- `WEMIX_RPC` responds
|
||||
- deployer has native WEMIX gas
|
||||
- `CCIP_ROUTER_WEMIX`, `LINK_TOKEN_WEMIX`, `WETH9_WEMIX`, and `WETH10_WEMIX` are present
|
||||
|
||||
### Step 2: Deploy `CCIPWETH9Bridge` and `CCIPWETH10Bridge` on 1111
|
||||
|
||||
```bash
|
||||
cd smom-dbis-138
|
||||
./scripts/deployment/deploy-bridges-config-ready-chains.sh wemix
|
||||
```
|
||||
|
||||
After deployment, persist the returned addresses into:
|
||||
- `CCIPWETH9_BRIDGE_WEMIX`
|
||||
- `CCIPWETH10_BRIDGE_WEMIX`
|
||||
|
||||
### Step 3: Wire destinations in both directions
|
||||
|
||||
```bash
|
||||
cd smom-dbis-138
|
||||
./scripts/deployment/complete-config-ready-chains.sh
|
||||
```
|
||||
|
||||
Required result:
|
||||
- Chain `138` WETH9 bridge includes selector `5142893604156789321` -> `CCIPWETH9_BRIDGE_WEMIX`
|
||||
- Chain `138` WETH10 bridge includes selector `5142893604156789321` -> `CCIPWETH10_BRIDGE_WEMIX`
|
||||
- WEMIX WETH9 bridge includes `CHAIN138_SELECTOR` -> `CCIPWETH9_BRIDGE_CHAIN138`
|
||||
- WEMIX WETH10 bridge includes `CHAIN138_SELECTOR` -> `CCIPWETH10_BRIDGE_CHAIN138`
|
||||
|
||||
### Step 4: Fund LINK on the WEMIX bridges
|
||||
|
||||
```bash
|
||||
cd smom-dbis-138
|
||||
./scripts/deployment/check-link-balance-config-ready-chains.sh wemix
|
||||
./scripts/deployment/fund-ccip-bridges-with-link.sh
|
||||
```
|
||||
|
||||
Target:
|
||||
- at least `10 LINK` on each bridge
|
||||
- `LINK_GAS_AVAILABLE_1111` becomes non-zero
|
||||
|
||||
### Step 5: Verify bridge readiness
|
||||
|
||||
```bash
|
||||
cast call "$CCIPWETH9_BRIDGE_WEMIX" 'getDestinationChains()(uint64[])' --rpc-url "$WEMIX_RPC"
|
||||
cast call "$CCIPWETH10_BRIDGE_WEMIX" 'getDestinationChains()(uint64[])' --rpc-url "$WEMIX_RPC"
|
||||
```
|
||||
|
||||
Then run a small test transfer for `WETH9` or `WETH10` from `138 -> 1111` and confirm receipt.
|
||||
|
||||
### Step 6: Prepare GRU v2 `cW*` assets for 1111
|
||||
|
||||
This step is **after** the WETH bridge path is proven live.
|
||||
|
||||
Current repo state only scaffolds:
|
||||
- `cWBTC`
|
||||
|
||||
Before GRU v2 can be promoted on `1111`, the operator still needs to:
|
||||
- confirm the intended destination `cW*` asset set
|
||||
- deploy or confirm destination token contracts on `1111`
|
||||
- wire bridge or mint authority for those assets
|
||||
- only then enable DODO PMM / Uniswap V2 / other venue rollout on WEMIX
|
||||
|
||||
## 4. Promotion Conditions
|
||||
|
||||
WEMIX `1111` can move out of deferred state only after all of the following are true:
|
||||
|
||||
1. `CCIPWETH9_BRIDGE_WEMIX` and `CCIPWETH10_BRIDGE_WEMIX` are deployed and stored in `.env`.
|
||||
2. Chain `138` and chain `1111` each list the other as a valid bridge destination.
|
||||
3. Both WEMIX bridges hold enough LINK for operational CCIP fees.
|
||||
4. A small bridge test succeeds in both configuration and receipt.
|
||||
5. The GRU v2 asset rollout plan for `1111` is explicitly wired, not just implied.
|
||||
26
docs/03-deployment/COMPREHENSIVE_CAPITAL_BASELINE.md
Normal file
26
docs/03-deployment/COMPREHENSIVE_CAPITAL_BASELINE.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Comprehensive Capital Baseline
|
||||
|
||||
- Generated: `2026-04-17T15:11:49Z`
|
||||
- Additional inventory: `config/extraction/additional-wallet-inventory.json`
|
||||
- Source-to-CEX policy: `config/extraction/source-to-cex-production-policy.json`
|
||||
- Production enabled: `False`
|
||||
- Mainnet funding posture: `dual-rail` via `cWUSDC, cWUSDT`
|
||||
|
||||
## Snapshot
|
||||
|
||||
- Immediate bucket USD: `17777520.488172`
|
||||
- Same-day corridor USD: `1381462148.370564`
|
||||
|
||||
## Off-Chain Sink Validation
|
||||
|
||||
- Validation ready: `False`
|
||||
- Included sink count: `0`
|
||||
|
||||
## Source Artifacts
|
||||
|
||||
- `immediate_and_same_day_corridor_assets`: `reports/extraction/immediate-and-same-day-corridor-assets-latest.json`
|
||||
- `source_to_cex_execution_plan`: `reports/extraction/source-to-cex-execution-plan-latest.json`
|
||||
- `source_to_cex_production_readiness`: `reports/extraction/source-to-cex-production-readiness-latest.json`
|
||||
- `source_to_cex_offchain_sink_validation`: `reports/extraction/source-to-cex-offchain-sink-validation-latest.json`
|
||||
- `source_to_cex_production_policy`: `config/extraction/source-to-cex-production-policy.json`
|
||||
- `additional_wallet_inventory`: `config/extraction/additional-wallet-inventory.json`
|
||||
@@ -0,0 +1,80 @@
|
||||
# Crypto.com OTC Before Vs After Operator Matrix
|
||||
|
||||
**Last Updated:** 2026-04-17
|
||||
**Purpose:** Strict operator comparison of the current ecosystem state versus the state after a real `Crypto.com OTC` destination is connected as the off-chain execution sink.
|
||||
|
||||
## Scope
|
||||
|
||||
- This matrix is grounded in the current repo-generated artifacts, especially:
|
||||
- `reports/extraction/comprehensive-capital-baseline-latest.json`
|
||||
- `reports/extraction/source-to-cex-execution-plan-latest.json`
|
||||
- `reports/extraction/source-to-cex-production-readiness-latest.json`
|
||||
- `reports/extraction/immediate-and-same-day-corridor-assets-latest.json`
|
||||
- It does **not** assume any undocumented `Crypto.com OTC` limits, settlement terms, or acceptance rules.
|
||||
- “After” means: a real off-chain sink row exists, it is enabled for production handoff, the deposit asset and address are configured, and production is intentionally promoted.
|
||||
|
||||
## Strict Matrix
|
||||
|
||||
| Dimension | Before Crypto.com OTC | After Crypto.com OTC |
|
||||
|---|---|---|
|
||||
| Terminal sink model | Public Mainnet cW-to-canonical pools | Mainnet normalization plus external OTC execution |
|
||||
| True size absorber | `cWUSDC -> USDC` pool | `Crypto.com OTC` books / negotiated execution |
|
||||
| Strongest verified direct public normalization depth | About `$213.10` via `cWUSDC -> USDC` | Still about `$213.10` on-chain, but no longer the system-wide economic cap |
|
||||
| Direct `cWUSDT -> USDT` depth | About `$2.18` | Still about `$2.18`; remains weak unless separately improved |
|
||||
| Immediate bucket (`cWUSDC`, `cWUSDT`) | About `$17.78M`, but operationally constrained by shallow public exits | About `$17.78M`, now potentially executable through bounded normalization and OTC handoff |
|
||||
| Same-day corridor bucket (`cUSDC`, `cUSDT`, stable LP feeders) | About `$1.381B`, structurally ready but terminally constrained | About `$1.381B`, now becomes a credible same-day institutional feeder set if OTC handoff is live |
|
||||
| `cUSDC` operating path | `cUSDC -> bridge -> cWUSDC -> USDC`, then stalls on shallow public sink | `cUSDC -> bridge -> cWUSDC -> USDC -> Crypto.com OTC` |
|
||||
| `cUSDT` operating path | `cUSDT -> bridge -> cWUSDT -> cWUSDC -> USDC`, still bottlenecked by public sink | `cUSDT -> bridge -> cWUSDT -> cWUSDC -> USDC -> Crypto.com OTC` |
|
||||
| Stable LP role | LPs are strong feeder-prep assets, but not meaningful exits on their own | LPs become materially more useful because unwind can feed a real external execution rail |
|
||||
| On-chain Mainnet role | Expected to absorb trade size | Reduced to a bounded conversion handshake before OTC handoff |
|
||||
| Main system bottleneck | Terminal public liquidity concentration | Off-chain execution onboarding, deposit correctness, operational governance, and settlement workflow |
|
||||
| Planner posture | `multi-path -> single shallow sink` | `multi-path -> normalized settlement asset -> OTC sink` |
|
||||
| Readiness blocker | No real off-chain sink included; production disabled | Remaining blocker becomes real-world OTC setup quality, not architecture |
|
||||
| Risk concentration | DEX liquidity and slippage | Counterparty, deposit rail, packet policy, reconciliation, and execution controls |
|
||||
| Operator dependency | Public PMM liquidity | OTC account activation, accepted asset, deposit address, and operating limits |
|
||||
| Repo readiness state | `offchain_sink_defined = blocked`; `live_production_enabled = blocked` | Can become `ready` after sink row + enablement + production promotion |
|
||||
|
||||
## Practical Reclassification
|
||||
|
||||
If `Crypto.com OTC` is connected as a real sink, the ecosystem does **not** become richer in nominal terms. It becomes more executable.
|
||||
|
||||
- Before:
|
||||
- large corridor inventory
|
||||
- tiny public terminal sink
|
||||
- strong routing structure but weak external realization
|
||||
- After:
|
||||
- same inventory
|
||||
- same bridge and normalization structure
|
||||
- materially improved ability to hand same-day corridor assets into external institutional liquidity
|
||||
|
||||
## What Changes Operationally
|
||||
|
||||
| Asset Group | Before | After |
|
||||
|---|---|---|
|
||||
| `cWUSDC` | Immediate in mechanics, but shallow public exit | Immediate normalization asset for OTC deposit preparation |
|
||||
| `cWUSDT` | Immediate in mechanics, but direct USDT path is too shallow | Usually normalize through USDC, then hand to OTC |
|
||||
| `cUSDC` | Best same-day corridor feeder, but ends at weak public sink | Best same-day corridor feeder into OTC |
|
||||
| `cUSDT` | Same-day feeder, but practically dependent on USDC normalization | Same-day feeder into OTC after USDC normalization |
|
||||
| Stable LP claims | Preparation only | Preparation plus real external execution path |
|
||||
| Non-promoted assets | Still not standard feeders | Still not standard feeders unless separately promoted |
|
||||
|
||||
## Readiness Gate
|
||||
|
||||
The repo should still treat the system as **not live** until all of the following are true:
|
||||
|
||||
1. A real `Crypto.com OTC` row exists in `config/extraction/additional-wallet-inventory.json`.
|
||||
2. `include_in_baseline` is `true`.
|
||||
3. `enabled_for_production_handoff` is `true`.
|
||||
4. `operational_status` is `enabled`.
|
||||
5. Deposit asset, chain, and address are populated.
|
||||
6. `config/extraction/source-to-cex-production-policy.json` is intentionally set to `production_enabled: true`.
|
||||
|
||||
## Bottom Line
|
||||
|
||||
Before `Crypto.com OTC`, the ecosystem is best described as:
|
||||
|
||||
`large inventory + good corridor structure + shallow public terminal sink`
|
||||
|
||||
After `Crypto.com OTC`, it becomes:
|
||||
|
||||
`large inventory + good corridor structure + bounded Mainnet normalization + real external execution destination`
|
||||
@@ -0,0 +1,5 @@
|
||||
# Immediate And Same-Day Corridor Assets
|
||||
|
||||
Immediate bucket: Mainnet `cWUSDC` and `cWUSDT` with `17777520.488172` USD nominally near-immediate but still constrained by shallow verified public exits.
|
||||
|
||||
Same-day corridor bucket: Chain 138 `cUSDC`, `cUSDT`, and stable LP claims totaling `1381462148.370564` USD under the current corridor model.
|
||||
@@ -0,0 +1,11 @@
|
||||
# Immediate Live Production Task List: Source To CEX Execution
|
||||
|
||||
This task list is now backed by repo-native policy and readiness artifacts:
|
||||
|
||||
- `config/extraction/source-to-cex-production-policy.json`
|
||||
- `config/extraction/additional-wallet-inventory.json`
|
||||
- `reports/extraction/source-to-cex-offchain-sink-validation-latest.json`
|
||||
- `docs/03-deployment/SOURCE_TO_CEX_EXECUTION_PLAN.md`
|
||||
- `docs/03-deployment/SOURCE_TO_CEX_PRODUCTION_READINESS.md`
|
||||
|
||||
Immediate repo-completable phases are done: policy, planning, inventory schema, and readiness reporting. The remaining blockers are live off-chain sink details and operator promotion of `production_enabled`.
|
||||
227
docs/03-deployment/PROMOD_GRU_V2_FULL_MESH_GAP_REPORT.md
Normal file
227
docs/03-deployment/PROMOD_GRU_V2_FULL_MESH_GAP_REPORT.md
Normal file
@@ -0,0 +1,227 @@
|
||||
# Mr. Promod GRU v2 Full Mesh Gap Report
|
||||
|
||||
- Generated: `2026-04-18T11:53:36Z`
|
||||
- Program: `promod-gru-v2-full-mesh-gap-report`
|
||||
- Purpose: strict per-network report for the remaining GRU v2 `cW*` mesh across DODO PMM, Uniswap V2, Balancer, Curve, and related venue surfaces.
|
||||
|
||||
## Accounting Rule
|
||||
|
||||
- Source balance fraction to move: `75%`
|
||||
- Destination network count: `10`
|
||||
- Per-chain fraction of current source balance: `7.5%`
|
||||
- Base unit rule: `amount_75 = balance * 75 // 100; per_chain = amount_75 // 10; remainder stays on Chain 138 or is adjusted on the last transfer`
|
||||
|
||||
## Repo Reality
|
||||
|
||||
- Chain 138 generic source-to-all-destinations bridge: `not_available_as_single_generic_bridge_button`
|
||||
- Supported pattern: destination cW deployment plus lock/mint bridge or destination-side minting through the CW bridge program where selectors, mappings, and destination receivers are actually configured
|
||||
- Venue summary:
|
||||
- DODO PMM: live cW asset pools are recorded across the public network set
|
||||
- Uniswap V2: live core rail is recorded in deployment-status; live wave-1 wrapped mesh completion is tracked separately in the phase-2 completion report
|
||||
- Balancer: currently modeled as reference or planned venue surface, not a live cW asset mesh deployment set
|
||||
- Curve: currently modeled as reference or planned venue surface, not a live cW asset mesh deployment set
|
||||
- Uniswap V3: currently modeled as reference surface in deployment-status gasReferenceVenues
|
||||
- 1inch: aggregator visibility surface only, not a pool deployment venue
|
||||
|
||||
## Network Summary
|
||||
|
||||
- DODO PMM live chain count: `10` / `10`
|
||||
- Uniswap V2 wave-1 complete chain count: `10` / `10`
|
||||
- Balancer live chain count: `0` / `10`
|
||||
- Curve live chain count: `0` / `10`
|
||||
- Uniswap V3 live chain count: `0` / `10`
|
||||
|
||||
| Chain | Network | Bridge | DODO PMM | Uniswap V2 | Balancer | Curve | Remaining Mesh Assets After Wave 1 |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `True` | `15 live` | `6 wave-1 pairs` | `reference_only` | `reference_only` | `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` |
|
||||
| `10` | Optimism | `True` | `12 live` | `6 wave-1 pairs` | `reference_only` | `reference_only` | `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` |
|
||||
| `25` | Cronos | `True` | `12 live` | `6 wave-1 pairs` | `unsupported` | `unsupported` | `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` |
|
||||
| `56` | BSC (BNB Chain) | `True` | `10 live` | `6 wave-1 pairs` | `unsupported` | `unsupported` | `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` |
|
||||
| `100` | Gnosis Chain | `True` | `10 live` | `6 wave-1 pairs` | `reference_only` | `reference_only` | `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` |
|
||||
| `137` | Polygon | `True` | `12 live` | `6 wave-1 pairs` | `reference_only` | `reference_only` | `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` |
|
||||
| `8453` | Base | `True` | `10 live` | `6 wave-1 pairs` | `reference_only` | `reference_only` | `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` |
|
||||
| `42161` | Arbitrum One | `True` | `10 live` | `6 wave-1 pairs` | `reference_only` | `reference_only` | `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` |
|
||||
| `42220` | Celo | `True` | `10 live` | `6 wave-1 pairs` | `unsupported` | `reference_only` | `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` |
|
||||
| `43114` | Avalanche C-Chain | `True` | `10 live` | `6 wave-1 pairs` | `unsupported` | `reference_only` | `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` |
|
||||
|
||||
## Per-Network Detail
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `15`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWUSDC/USDC`, `cWUSDC/USDT`, `cWUSDT/USDC`, `cWUSDT/USDT`, `cWUSDT/cWUSDC`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `reference_only`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `12`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWUSDC/USDC`, `cWUSDT/USDT`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `reference_only`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `12`
|
||||
- `cWAUDC/USDT`, `cWCADC/USDT`, `cWCHFC/USDT`, `cWEURC/USDT`, `cWEURT/USDT`, `cWGBPC/USDT`, `cWGBPT/USDT`, `cWJPYC/USDT`, `cWUSDC/USDC`, `cWUSDT/USDT`, `cWXAUC/USDT`, `cWXAUT/USDT`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `unsupported`
|
||||
- Curve status: `unsupported`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `56` — BSC (BNB Chain)
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWUSDW`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `10`
|
||||
- `cWAUDC/USDT`, `cWCADC/USDT`, `cWCHFC/USDT`, `cWEURC/USDT`, `cWEURT/USDT`, `cWGBPC/USDT`, `cWGBPT/USDT`, `cWJPYC/USDT`, `cWXAUC/USDT`, `cWXAUT/USDT`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `unsupported`
|
||||
- Curve status: `unsupported`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWUSDW/cWUSDC`, `cWUSDW/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `100` — Gnosis Chain
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `10`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `reference_only`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `12`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWUSDC/USDC`, `cWUSDT/USDT`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `reference_only`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `10`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `reference_only`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `10`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `reference_only`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWUSDW`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `10`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `unsupported`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWUSDW/cWUSDC`, `cWUSDW/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
|
||||
### Chain `43114` — Avalanche C-Chain
|
||||
|
||||
- Bridge available: `True`
|
||||
- cW assets: `cWAUDC`, `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDC`, `cWUSDT`, `cWUSDW`, `cWXAUC`, `cWXAUT`
|
||||
|
||||
- DODO PMM live pairs: `10`
|
||||
- `cWAUDC/USDC`, `cWCADC/USDC`, `cWCHFC/USDC`, `cWEURC/USDC`, `cWEURT/USDC`, `cWGBPC/USDC`, `cWGBPT/USDC`, `cWJPYC/USDC`, `cWXAUC/USDC`, `cWXAUT/USDC`
|
||||
- Uniswap V2 core pairs: `1`
|
||||
- `cWUSDT/cWUSDC`
|
||||
- Uniswap V2 wave-1 pairs: `6`
|
||||
- `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT`, `cWGBPC/cWUSDC`, `cWGBPC/cWUSDT`
|
||||
- Balancer status: `unsupported`
|
||||
- Curve status: `reference_only`
|
||||
- Uniswap V3 status: `reference_only`
|
||||
- 1inch status: `reference_only`
|
||||
- Remaining wrapped mesh assets after wave 1: `cWAUSDT`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURT`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT`
|
||||
- Recommended next wrapped mesh pairs: `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURT/cWUSDC`, `cWEURT/cWUSDT`, `cWGBPT/cWUSDC`, `cWGBPT/cWUSDT`, `cWJPYC/cWUSDC`, `cWJPYC/cWUSDT`, `cWUSDW/cWUSDC`, `cWUSDW/cWUSDT`, `cWXAUC/cWUSDC`, `cWXAUC/cWUSDT`, `cWXAUT/cWUSDC`, `cWXAUT/cWUSDT`
|
||||
@@ -0,0 +1,27 @@
|
||||
# Mr. Promod Uniswap V2 First Deployment Target Matrix
|
||||
|
||||
- Generated: `2026-04-17T17:47:29Z`
|
||||
- Program: Mr. Promod Uniswap V2 cW Deep Liquidity Program
|
||||
- Mainnet funding posture: `triple-rail-support` via `cWUSDC, cWUSDT, cWAUSDT`
|
||||
- Purpose: choose the first pair per chain so the first live pool rollout is concrete rather than generic.
|
||||
|
||||
| Chain | Network | First Pair | Why It Should Be First | Required Tokens | Other GRU v2 cW* Tokens | Next Wrapped Expansion Pairs | Post-Deploy Commands |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `cWUSDT/cWUSDC` | Core wrapped support rail and the fixed first deployment target where cWUSDT and cWUSDC are already documented. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `10` | Optimism | `cWUSDT/cWUSDC` | Core wrapped support rail and the fixed first deployment target where cWUSDT and cWUSDC are already documented. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `25` | Cronos | `cWUSDT/cWUSDC` | Core wrapped support rail and the fixed first deployment target where cWUSDT and cWUSDC are already documented. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `56` | BSC | `cWUSDT/cWUSDC` | Core wrapped support rail and the one we are standardizing on first; it creates transferable depth between the two settlement-adjacent cW rails before any canonical stable exit pool. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `100` | Gnosis | `cWUSDT/cWUSDC` | Core wrapped support rail and the fixed first deployment target where cWUSDT and cWUSDC are already documented. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `137` | Polygon | `cWUSDT/cWUSDC` | Core wrapped support rail and the one we are standardizing on first; it creates transferable depth between the two settlement-adjacent cW rails before any canonical stable exit pool. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `8453` | Base | `cWUSDT/cWUSDC` | Core wrapped support rail and the fixed first deployment target where cWUSDT and cWUSDC are already documented. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `42161` | Arbitrum One | `cWUSDT/cWUSDC` | Core wrapped support rail and the fixed first deployment target where cWUSDT and cWUSDC are already documented. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `42220` | Celo | `cWUSDT/cWUSDC` | Core wrapped support rail and the one we are standardizing on first; it creates transferable depth between the two settlement-adjacent cW rails before any canonical stable exit pool. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
| `43114` | Avalanche C-Chain | `cWUSDT/cWUSDC` | Core wrapped support rail and the one we are standardizing on first; it creates transferable depth between the two settlement-adjacent cW rails before any canonical stable exit pool. | `cWUSDT`, `cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`<br>`python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`<br>`node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`<br>`bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh` |
|
||||
|
||||
## Selection Rule
|
||||
|
||||
- First choice is always `cWUSDT/cWUSDC` when both rails are documented on the chain.
|
||||
- If `cWUSDT/cWUSDC` is unavailable, prefer a wrapped-first fallback before opening a canonical settlement rail.
|
||||
- The other documented GRU v2 `cW*` assets expand next as wrapped pairs against `cWUSDC` and `cWUSDT`.
|
||||
- Canonical settlement rails such as `cWUSDC/USDC` or `cWUSDT/USDT` become the first target only when the chain cannot open with the wrapped support rail.
|
||||
- `cWAUSDT` remains a wrapped-depth support asset, not the default first target, unless it is required as the only viable wrapped-first fallback.
|
||||
40
docs/03-deployment/PROMOD_UNISWAP_V2_LIQUIDITY_PROGRAM.md
Normal file
40
docs/03-deployment/PROMOD_UNISWAP_V2_LIQUIDITY_PROGRAM.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# Mr. Promod Uniswap V2 Liquidity Program
|
||||
|
||||
- Generated: `2026-04-17T17:47:28Z`
|
||||
- Program: Mr. Promod Uniswap V2 cW Deep Liquidity Program
|
||||
- Strict note: this is a repo-native desired-state rollout package for Uniswap V2 or Uniswap-V2-compatible pools. It does not claim live deployment unless factory/router addresses and pool addresses are recorded.
|
||||
- Mainnet funding posture: `triple-rail-support` via `cWUSDC, cWUSDT, cWAUSDT`
|
||||
|
||||
## Deployment Model
|
||||
|
||||
- Phase 1: build wrapped-depth support first when canonical USDC or USDT is scarce.
|
||||
- Phase 2: add or deepen canonical settlement rails once enough hub-stable inventory exists.
|
||||
- Promotion gate: do not treat any Uniswap V2 rail as live until its factory/router env, pool address, and indexer visibility are all recorded.
|
||||
|
||||
## Wrapped-Depth Policy
|
||||
|
||||
- Preferred wrapped pairs: `cWAUSDT/cWUSDC, cWAUSDT/cWUSDT, cWUSDT/cWUSDC`
|
||||
- Allocation split: flagship `50%`, second `30%`, third `20%`
|
||||
|
||||
## Operator Matrix
|
||||
|
||||
| Chain | Network | Tier | Hub Stable | Core Wrapped Pairs | Additional GRU v2 cW* Tokens | Next Wrapped Expansion Pairs | Settlement Phase Pairs | Existing PMM Analogs |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `tier_1` | `USDC` | `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` | `cWUSDC/USDC`, `cWUSDT/USDC`, `cWUSDT/cWUSDC` |
|
||||
| `10` | Optimism | `tier_1` | `USDC` | `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` | `cWUSDC/USDC` |
|
||||
| `25` | Cronos | `tier_2` | `USDT` | `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDT`, `cWUSDT/USDT` | `cWUSDT/USDT` |
|
||||
| `56` | BSC | `tier_2` | `USDT` | `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDT`, `cWUSDT/USDT`, `cWAUSDT/USDT` | — |
|
||||
| `100` | Gnosis | `tier_2` | `USDC` | `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` | — |
|
||||
| `137` | Polygon | `tier_1` | `USDC` | `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC`, `cWAUSDT/USDC` | `cWUSDC/USDC` |
|
||||
| `8453` | Base | `tier_1` | `USDC` | `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` | — |
|
||||
| `42161` | Arbitrum One | `tier_1` | `USDC` | `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` | — |
|
||||
| `42220` | Celo | `tier_2` | `USDC` | `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC`, `cWAUSDT/USDC` | — |
|
||||
| `43114` | Avalanche C-Chain | `tier_2` | `USDC` | `cWAUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWUSDT/cWUSDC` | `cWAUDC`, `cWBTC`, `cWCADC`, `cWCHFC`, `cWEURC`, `cWEURT`, `cWGBPC`, `cWGBPT`, `cWJPYC`, `cWUSDW`, `cWXAUC`, `cWXAUT` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC`, `cWAUSDT/USDC` | — |
|
||||
|
||||
## Readiness Rules
|
||||
|
||||
- Use `cWAUSDT` as a wrapped-depth support asset, not as a full replacement for `USDC` or `USDT` settlement.
|
||||
- Keep `cWUSDT/cWUSDC` available everywhere both core wrapped rails are documented.
|
||||
- After the first rail is live, expand the other documented GRU v2 `cW*` assets against `cWUSDC` and `cWUSDT` before opening broad canonical settlement exits.
|
||||
- Prefer `cWUSDC/USDC`, `cWUSDT/USDT`, or `cWAUSDT/USDC|USDT` only after canonical hub inventory is deep enough to matter.
|
||||
- For every promoted chain, add the new pools to `deployment-status.json`, Uniswap V2 env config, and token-aggregation indexing.
|
||||
19
docs/03-deployment/PROMOD_UNISWAP_V2_LIVE_PAIR_DISCOVERY.md
Normal file
19
docs/03-deployment/PROMOD_UNISWAP_V2_LIVE_PAIR_DISCOVERY.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# Mr. Promod Uniswap V2 Live Pair Discovery
|
||||
|
||||
- Generated: `2026-04-18T17:04:47Z`
|
||||
- Live pairs discovered: `19`
|
||||
- Healthy live pairs: `7`
|
||||
- Write mode: `False`
|
||||
|
||||
| Chain | Network | Env Ready | Live Pairs Found | Healthy Live Pairs |
|
||||
|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `True` | `cWUSDC/USDC`, `cWUSDT/cWUSDC` | — |
|
||||
| `10` | Optimism | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `25` | Cronos | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `56` | BSC (BNB Chain) | `True` | `cWUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWAUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `100` | Gnosis Chain | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `137` | Polygon | `True` | `cWUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWAUSDT/cWUSDC` | — |
|
||||
| `42220` | Celo | `True` | `cWUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWAUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `43114` | Avalanche C-Chain | `True` | `cWUSDT/cWUSDC`, `cWAUSDT/cWUSDT`, `cWAUSDT/cWUSDC` | — |
|
||||
| `8453` | Base | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
| `42161` | Arbitrum One | `True` | `cWUSDT/cWUSDC` | `cWUSDT/cWUSDC` |
|
||||
112
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE1_BRIDGE_3X_MATRIX.md
Normal file
112
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE1_BRIDGE_3X_MATRIX.md
Normal file
@@ -0,0 +1,112 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Bridge 3x Matrix
|
||||
|
||||
- Generated: `2026-04-17T18:22:33Z`
|
||||
- Purpose: strict triple-sized Chain 138 bridge funding plan for the remaining phase-1 pool rollout.
|
||||
- Bridge multiplier: `3x`
|
||||
- Total cUSDT to bridge from Chain 138: `21000`
|
||||
- Total cUSDC to bridge from Chain 138: `21002.4`
|
||||
|
||||
| Chain | Network | Base cUSDT Need | Base cUSDC Need | 3x cUSDT To Bridge | 3x cUSDC To Bridge | Bridge Env |
|
||||
|---|---|---:|---:|---:|---:|---|
|
||||
| `1` | Ethereum Mainnet | `0` | `0` | `0` | `0` | `CW_BRIDGE_MAINNET` |
|
||||
| `10` | Optimism | `1000` | `1000` | `3000` | `3000` | `CW_BRIDGE_OPTIMISM` |
|
||||
| `25` | Cronos | `1000` | `1000` | `3000` | `3000` | `CW_BRIDGE_CRONOS` |
|
||||
| `56` | BSC | `1000` | `1000` | `3000` | `3000` | `CW_BRIDGE_BSC` |
|
||||
| `100` | Gnosis | `1000` | `1000` | `3000` | `3000` | `CW_BRIDGE_GNOSIS` |
|
||||
| `137` | Polygon | `0` | `0` | `0` | `0` | `CW_BRIDGE_POLYGON` |
|
||||
| `8453` | Base | `1000` | `1000` | `3000` | `3000` | `CW_BRIDGE_BASE` |
|
||||
| `42161` | Arbitrum One | `1000` | `1000` | `3000` | `3000` | `CW_BRIDGE_ARBITRUM` |
|
||||
| `42220` | Celo | `1000` | `1000` | `3000` | `3000` | `CW_BRIDGE_CELO` |
|
||||
| `43114` | Avalanche | `0` | `0.8` | `0` | `2.4` | `CW_BRIDGE_AVALANCHE` |
|
||||
|
||||
## Notes
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- Recommended action: `seed_now`
|
||||
- 3x cUSDT to bridge: `0`
|
||||
- 3x cUSDC to bridge: `0`
|
||||
- Bridge env: `CW_BRIDGE_MAINNET`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `1` via `CW_BRIDGE_MAINNET` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- Bridge env: `CW_BRIDGE_OPTIMISM`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `10` via `CW_BRIDGE_OPTIMISM` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- Bridge env: `CW_BRIDGE_CRONOS`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `25` via `CW_BRIDGE_CRONOS` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- Bridge env: `CW_BRIDGE_BSC`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `56` via `CW_BRIDGE_BSC` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- Bridge env: `CW_BRIDGE_GNOSIS`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `100` via `CW_BRIDGE_GNOSIS` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- Recommended action: `seed_now`
|
||||
- 3x cUSDT to bridge: `0`
|
||||
- 3x cUSDC to bridge: `0`
|
||||
- Bridge env: `CW_BRIDGE_POLYGON`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `137` via `CW_BRIDGE_POLYGON` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- Bridge env: `CW_BRIDGE_BASE`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `8453` via `CW_BRIDGE_BASE` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- Bridge env: `CW_BRIDGE_ARBITRUM`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `42161` via `CW_BRIDGE_ARBITRUM` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- Bridge env: `CW_BRIDGE_CELO`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `42220` via `CW_BRIDGE_CELO` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- Recommended action: `bridge_or_mint_missing_side_then_seed`
|
||||
- 3x cUSDT to bridge: `0`
|
||||
- 3x cUSDC to bridge: `2.4`
|
||||
- Bridge env: `CW_BRIDGE_AVALANCHE`
|
||||
- Bridge present: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `43114` via `CW_BRIDGE_AVALANCHE` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
@@ -0,0 +1,420 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Bridge 3x Operator Packet
|
||||
|
||||
- Generated: `2026-04-17T18:23:46Z`
|
||||
- Purpose: strict operator packet for `3x` bridge sizing and post-funding pool deployment.
|
||||
- Bridge multiplier: `3x`
|
||||
|
||||
| Chain | Network | 3x cUSDT | 3x cUSDC | Destination cW Addresses | CW_BRIDGE Env |
|
||||
|---|---|---:|---:|---|---|
|
||||
| `1` | Ethereum Mainnet | `0` | `0` | `cWUSDT=0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE`, `cWUSDC=0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` | `CW_BRIDGE_MAINNET` |
|
||||
| `10` | Optimism | `3000` | `3000` | `cWUSDT=0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6`, `cWUSDC=0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` | `CW_BRIDGE_OPTIMISM` |
|
||||
| `25` | Cronos | `3000` | `3000` | `cWUSDT=0x72948a7a813B60b37Cd0c920C4657DbFF54312b8`, `cWUSDC=0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec` | `CW_BRIDGE_CRONOS` |
|
||||
| `56` | BSC | `3000` | `3000` | `cWUSDT=0x9a1D0dBEE997929ED02fD19E0E199704d20914dB`, `cWUSDC=0x5355148C4740fcc3D7a96F05EdD89AB14851206b` | `CW_BRIDGE_BSC` |
|
||||
| `100` | Gnosis | `3000` | `3000` | `cWUSDT=0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF`, `cWUSDC=0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` | `CW_BRIDGE_GNOSIS` |
|
||||
| `137` | Polygon | `0` | `0` | `cWUSDT=0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF`, `cWUSDC=0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` | `CW_BRIDGE_POLYGON` |
|
||||
| `8453` | Base | `3000` | `3000` | `cWUSDT=0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6`, `cWUSDC=0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` | `CW_BRIDGE_BASE` |
|
||||
| `42161` | Arbitrum One | `3000` | `3000` | `cWUSDT=0x73ADaF7dBa95221c080db5631466d2bC54f6a76B`, `cWUSDC=0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` | `CW_BRIDGE_ARBITRUM` |
|
||||
| `42220` | Celo | `3000` | `3000` | `cWUSDT=0x73376eB92c16977B126dB9112936A20Fa0De3442`, `cWUSDC=0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3` | `CW_BRIDGE_CELO` |
|
||||
| `43114` | Avalanche | `0` | `2.4` | `cWUSDT=0x8142BA530B08f3950128601F00DaaA678213DFdf`, `cWUSDC=0x0C242b513008Cd49C89078F5aFb237A3112251EB` | `CW_BRIDGE_AVALANCHE` |
|
||||
|
||||
## Post-Funding Deploy Blocks
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- 3x cUSDT to bridge: `0`
|
||||
- 3x cUSDC to bridge: `0`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_MAINNET`
|
||||
- Recommended action: `seed_now`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
|
||||
export FACTORY="${CHAIN_1_UNISWAP_V2_FACTORY}"
|
||||
export ROUTER="${CHAIN_1_UNISWAP_V2_ROUTER}"
|
||||
export CWUSDT="0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE"
|
||||
export CWUSDC="0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="8888511867466"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_OPTIMISM`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${OPTIMISM_MAINNET_RPC}"
|
||||
export FACTORY="0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf"
|
||||
export ROUTER="0x4A7b5Da61326A6379179b40d00F57E5bbDC962c2"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_CRONOS`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CRONOS_RPC_URL}"
|
||||
export FACTORY="0x3B44B2a187a7b3824131F8db5a74194D0a42Fc15"
|
||||
export ROUTER="0x145863Eb42Cf62847A6Ca784e6416C1682b1b2Ae"
|
||||
export CWUSDT="0x72948a7a813B60b37Cd0c920C4657DbFF54312b8"
|
||||
export CWUSDC="0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_BSC`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BSC_RPC_URL}"
|
||||
export FACTORY="0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73"
|
||||
export ROUTER="0x10ED43C718714eb63d5aA57B78B54704E256024E"
|
||||
export CWUSDT="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export CWUSDC="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_GNOSIS`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${GNOSIS_MAINNET_RPC}"
|
||||
export FACTORY="0xc35DADB65012eC5796536bD9864eD8773aBc74C4"
|
||||
export ROUTER="0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- 3x cUSDT to bridge: `0`
|
||||
- 3x cUSDC to bridge: `0`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_POLYGON`
|
||||
- Recommended action: `seed_now`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${POLYGON_MAINNET_RPC}"
|
||||
export FACTORY="${CHAIN_137_UNISWAP_V2_FACTORY}"
|
||||
export ROUTER="${CHAIN_137_UNISWAP_V2_ROUTER}"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="996297636"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_BASE`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BASE_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_ARBITRUM`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ARBITRUM_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x73ADaF7dBa95221c080db5631466d2bC54f6a76B"
|
||||
export CWUSDC="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- 3x cUSDT to bridge: `3000`
|
||||
- 3x cUSDC to bridge: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_CELO`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CELO_MAINNET_RPC}"
|
||||
export FACTORY="0x62d5b84bE28a183aBB507E125B384122D2C25fAE"
|
||||
export ROUTER="0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121"
|
||||
export CWUSDT="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export CWUSDC="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- 3x cUSDT to bridge: `0`
|
||||
- 3x cUSDC to bridge: `2.4`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_AVALANCHE`
|
||||
- Recommended action: `bridge_or_mint_missing_side_then_seed`
|
||||
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export FACTORY="0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10"
|
||||
export ROUTER="0x60aE616a2155Ee3d9A68541Ba4544862310933d4"
|
||||
export CWUSDT="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export CWUSDC="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="2400000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
@@ -0,0 +1,112 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Bridge-From-138 Matrix
|
||||
|
||||
- Generated: `2026-04-17T18:20:51Z`
|
||||
- Signer: `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
|
||||
- Purpose: strict destination funding matrix from Chain 138 GRU v2 feeder inventory for the remaining phase-1 pool rollout.
|
||||
- Total cUSDT needed from Chain 138: `7000`
|
||||
- Total cUSDC needed from Chain 138: `7000.8`
|
||||
|
||||
| Chain | Network | cUSDT Needed | cUSDC Needed | Bridge Env | Bridge Present | Recommended Action |
|
||||
|---|---|---:|---:|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `0` | `0` | `CW_BRIDGE_MAINNET` | `true` | `seed_now` |
|
||||
| `10` | Optimism | `1000` | `1000` | `CW_BRIDGE_OPTIMISM` | `true` | `bridge_or_mint_destination_then_seed` |
|
||||
| `25` | Cronos | `1000` | `1000` | `CW_BRIDGE_CRONOS` | `true` | `bridge_or_mint_destination_then_seed` |
|
||||
| `56` | BSC | `1000` | `1000` | `CW_BRIDGE_BSC` | `true` | `bridge_or_mint_destination_then_seed` |
|
||||
| `100` | Gnosis | `1000` | `1000` | `CW_BRIDGE_GNOSIS` | `true` | `bridge_or_mint_destination_then_seed` |
|
||||
| `137` | Polygon | `0` | `0` | `CW_BRIDGE_POLYGON` | `true` | `seed_now` |
|
||||
| `8453` | Base | `1000` | `1000` | `CW_BRIDGE_BASE` | `true` | `bridge_or_mint_destination_then_seed` |
|
||||
| `42161` | Arbitrum One | `1000` | `1000` | `CW_BRIDGE_ARBITRUM` | `true` | `bridge_or_mint_destination_then_seed` |
|
||||
| `42220` | Celo | `1000` | `1000` | `CW_BRIDGE_CELO` | `true` | `bridge_or_mint_destination_then_seed` |
|
||||
| `43114` | Avalanche | `0` | `0.8` | `CW_BRIDGE_AVALANCHE` | `true` | `bridge_or_mint_missing_side_then_seed` |
|
||||
|
||||
## Notes
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- Tokens missing on destination: `none`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_MAINNET`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `seed_now`
|
||||
- Bridge note: Bridge path is structurally available for chain `1` via `CW_BRIDGE_MAINNET` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Tokens missing on destination: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `true`
|
||||
- Bridge config env: `CW_BRIDGE_OPTIMISM`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `10` via `CW_BRIDGE_OPTIMISM` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Tokens missing on destination: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_CRONOS`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `25` via `CW_BRIDGE_CRONOS` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- Tokens missing on destination: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_BSC`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `56` via `CW_BRIDGE_BSC` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- Tokens missing on destination: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_GNOSIS`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `100` via `CW_BRIDGE_GNOSIS` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- Tokens missing on destination: `none`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_POLYGON`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `seed_now`
|
||||
- Bridge note: Bridge path is structurally available for chain `137` via `CW_BRIDGE_POLYGON` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Tokens missing on destination: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `true`
|
||||
- Bridge config env: `CW_BRIDGE_BASE`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `8453` via `CW_BRIDGE_BASE` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- Tokens missing on destination: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_ARBITRUM`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `42161` via `CW_BRIDGE_ARBITRUM` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- Tokens missing on destination: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_CELO`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `42220` via `CW_BRIDGE_CELO` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- Tokens missing on destination: `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Bridge config env: `CW_BRIDGE_AVALANCHE`
|
||||
- Bridge present: `true`
|
||||
- Recommended action: `bridge_or_mint_missing_side_then_seed`
|
||||
- Bridge note: Bridge path is structurally available for chain `43114` via `CW_BRIDGE_AVALANCHE` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
@@ -0,0 +1,760 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Bridge-Or-Mint Execution Runbook
|
||||
|
||||
- Generated: `2026-04-17T18:42:43Z`
|
||||
- Purpose: strict bridge-or-mint runbook matched to the `3x` operator packet.
|
||||
- Source chain: `138` / Chain 138
|
||||
- Source cUSDT: `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22`
|
||||
- Source cUSDC: `0xf22258f57794CC8E06237084b353Ab30fFfa640b`
|
||||
|
||||
## Operating Rule
|
||||
|
||||
1. If the chain is already funded, seed the pool directly.
|
||||
2. If the chain has a documented selector env and `CW_BRIDGE_<CHAIN>`, prefer bridge preflight and then follow the cW bridge runbooks.
|
||||
3. If the bridge path is not fully parameterized in repo env, use the exact destination mint fallback block.
|
||||
4. After funding lands, execute the post-funding deploy block and then refresh discovery and promotion gates.
|
||||
|
||||
| Chain | Network | Preferred Path | 3x cUSDT | 3x cUSDC | CW_BRIDGE Env | Selector Env |
|
||||
|---|---|---|---:|---:|---|---|
|
||||
| `1` | Ethereum Mainnet | `seed_now` | `0` | `0` | `CW_BRIDGE_MAINNET` | `ETH_MAINNET_SELECTOR` |
|
||||
| `10` | Optimism | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_OPTIMISM` | `OPTIMISM_SELECTOR` |
|
||||
| `25` | Cronos | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_CRONOS` | `CRONOS_SELECTOR` |
|
||||
| `56` | BSC | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_BSC` | `BSC_SELECTOR` |
|
||||
| `100` | Gnosis | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_GNOSIS` | `GNOSIS_SELECTOR` |
|
||||
| `137` | Polygon | `seed_now` | `0` | `0` | `CW_BRIDGE_POLYGON` | `POLYGON_SELECTOR` |
|
||||
| `8453` | Base | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_BASE` | `BASE_SELECTOR` |
|
||||
| `42161` | Arbitrum One | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_ARBITRUM` | `ARBITRUM_SELECTOR` |
|
||||
| `42220` | Celo | `mint_then_seed` | `3000` | `3000` | `CW_BRIDGE_CELO` | `missing` |
|
||||
| `43114` | Avalanche | `bridge_then_seed` | `0` | `2.4` | `CW_BRIDGE_AVALANCHE` | `AVALANCHE_SELECTOR` |
|
||||
|
||||
## Per-Chain Runbook
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- Preferred path: `seed_now`
|
||||
- Recommended action: `seed_now`
|
||||
- 3x cUSDT from 138: `0`
|
||||
- 3x cUSDC from 138: `0`
|
||||
- Destination cWUSDT: `0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE`
|
||||
- Destination cWUSDC: `0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_MAINNET`
|
||||
- Selector env: `ETH_MAINNET_SELECTOR`
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
|
||||
export FACTORY="${CHAIN_1_UNISWAP_V2_FACTORY}"
|
||||
export ROUTER="${CHAIN_1_UNISWAP_V2_ROUTER}"
|
||||
export CWUSDT="0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE"
|
||||
export CWUSDC="0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="8888511867466"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- Destination cWUSDT: `0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6`
|
||||
- Destination cWUSDC: `0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_OPTIMISM`
|
||||
- Selector env: `OPTIMISM_SELECTOR`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${OPTIMISM_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_OPTIMISM}"
|
||||
export DEST_CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export DEST_CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${OPTIMISM_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDT` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${OPTIMISM_MAINNET_RPC}"
|
||||
export FACTORY="0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf"
|
||||
export ROUTER="0x4A7b5Da61326A6379179b40d00F57E5bbDC962c2"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- Destination cWUSDT: `0x72948a7a813B60b37Cd0c920C4657DbFF54312b8`
|
||||
- Destination cWUSDC: `0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_CRONOS`
|
||||
- Selector env: `CRONOS_SELECTOR`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${CRONOS_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_CRONOS}"
|
||||
export DEST_CWUSDT="0x72948a7a813B60b37Cd0c920C4657DbFF54312b8"
|
||||
export DEST_CWUSDC="0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${CRONOS_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDT` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x72948a7a813B60b37Cd0c920C4657DbFF54312b8" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CRONOS_RPC_URL}"
|
||||
export FACTORY="0x3B44B2a187a7b3824131F8db5a74194D0a42Fc15"
|
||||
export ROUTER="0x145863Eb42Cf62847A6Ca784e6416C1682b1b2Ae"
|
||||
export CWUSDT="0x72948a7a813B60b37Cd0c920C4657DbFF54312b8"
|
||||
export CWUSDC="0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- Destination cWUSDT: `0x9a1D0dBEE997929ED02fD19E0E199704d20914dB`
|
||||
- Destination cWUSDC: `0x5355148C4740fcc3D7a96F05EdD89AB14851206b`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_BSC`
|
||||
- Selector env: `BSC_SELECTOR`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${BSC_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_BSC}"
|
||||
export DEST_CWUSDT="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export DEST_CWUSDC="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${BSC_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDT` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x9a1D0dBEE997929ED02fD19E0E199704d20914dB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x5355148C4740fcc3D7a96F05EdD89AB14851206b" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BSC_RPC_URL}"
|
||||
export FACTORY="0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73"
|
||||
export ROUTER="0x10ED43C718714eb63d5aA57B78B54704E256024E"
|
||||
export CWUSDT="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export CWUSDC="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- Destination cWUSDT: `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF`
|
||||
- Destination cWUSDC: `0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_GNOSIS`
|
||||
- Selector env: `GNOSIS_SELECTOR`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${GNOSIS_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_GNOSIS}"
|
||||
export DEST_CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export DEST_CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${GNOSIS_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDT` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${GNOSIS_MAINNET_RPC}"
|
||||
export FACTORY="0xc35DADB65012eC5796536bD9864eD8773aBc74C4"
|
||||
export ROUTER="0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- Preferred path: `seed_now`
|
||||
- Recommended action: `seed_now`
|
||||
- 3x cUSDT from 138: `0`
|
||||
- 3x cUSDC from 138: `0`
|
||||
- Destination cWUSDT: `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF`
|
||||
- Destination cWUSDC: `0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_POLYGON`
|
||||
- Selector env: `POLYGON_SELECTOR`
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${POLYGON_MAINNET_RPC}"
|
||||
export FACTORY="${CHAIN_137_UNISWAP_V2_FACTORY}"
|
||||
export ROUTER="${CHAIN_137_UNISWAP_V2_ROUTER}"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="996297636"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- Destination cWUSDT: `0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6`
|
||||
- Destination cWUSDC: `0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_BASE`
|
||||
- Selector env: `BASE_SELECTOR`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${BASE_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_BASE}"
|
||||
export DEST_CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export DEST_CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${BASE_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDT` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BASE_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- Destination cWUSDT: `0x73ADaF7dBa95221c080db5631466d2bC54f6a76B`
|
||||
- Destination cWUSDC: `0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_ARBITRUM`
|
||||
- Selector env: `ARBITRUM_SELECTOR`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${ARBITRUM_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_ARBITRUM}"
|
||||
export DEST_CWUSDT="0x73ADaF7dBa95221c080db5631466d2bC54f6a76B"
|
||||
export DEST_CWUSDC="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${ARBITRUM_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDT` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73ADaF7dBa95221c080db5631466d2bC54f6a76B" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ARBITRUM_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x73ADaF7dBa95221c080db5631466d2bC54f6a76B"
|
||||
export CWUSDC="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- Preferred path: `mint_then_seed`
|
||||
- Recommended action: `bridge_or_mint_destination_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- Destination cWUSDT: `0x73376eB92c16977B126dB9112936A20Fa0De3442`
|
||||
- Destination cWUSDC: `0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_CELO`
|
||||
- Selector env: `missing`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${CELO_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_CELO}"
|
||||
export DEST_CWUSDT="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export DEST_CWUSDC="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
# DEST_SELECTOR env is not currently documented for this chain in smom-dbis-138/.env
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDT` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73376eB92c16977B126dB9112936A20Fa0De3442" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CELO_MAINNET_RPC}"
|
||||
export FACTORY="0x62d5b84bE28a183aBB507E125B384122D2C25fAE"
|
||||
export ROUTER="0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121"
|
||||
export CWUSDT="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export CWUSDC="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- Recommended action: `bridge_or_mint_missing_side_then_seed`
|
||||
- 3x cUSDT from 138: `0`
|
||||
- 3x cUSDC from 138: `2.4`
|
||||
- Destination cWUSDT: `0x8142BA530B08f3950128601F00DaaA678213DFdf`
|
||||
- Destination cWUSDC: `0x0C242b513008Cd49C89078F5aFb237A3112251EB`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_AVALANCHE`
|
||||
- Selector env: `AVALANCHE_SELECTOR`
|
||||
|
||||
Bridge preflight block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_AVALANCHE}"
|
||||
export DEST_CWUSDT="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export DEST_CWUSDC="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="0"
|
||||
export BRIDGE_CUSDC_HUMAN="2.4"
|
||||
export BRIDGE_CUSDT_RAW="0"
|
||||
export BRIDGE_CUSDC_RAW="2400000"
|
||||
export DEST_SELECTOR="${AVALANCHE_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback blocks:
|
||||
- Mint `cWUSDC` `0.8`:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0C242b513008Cd49C89078F5aFb237A3112251EB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "800000" \
|
||||
--rpc-url "${AVALANCHE_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export FACTORY="0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10"
|
||||
export ROUTER="0x60aE616a2155Ee3d9A68541Ba4544862310933d4"
|
||||
export CWUSDT="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export CWUSDC="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="2400000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
@@ -0,0 +1,195 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Execution Checklist
|
||||
|
||||
- Generated: `2026-04-17T17:55:54Z`
|
||||
- Program: Mr. Promod Uniswap V2 cW Deep Liquidity Program
|
||||
- Mainnet funding posture: `triple-rail-support` via `cWUSDC, cWUSDT, cWAUSDT`
|
||||
- Purpose: exact chain-by-chain checklist for the first full phase 1 rollout of `cWUSDT/cWUSDC`.
|
||||
|
||||
## Global Rule
|
||||
|
||||
- Do not advance to the next chain until the current chain's `cWUSDT/cWUSDC` pair is discoverable on-chain and recordable in `deployment-status.json`.
|
||||
|
||||
| Chain | Network | Phase 1 Pair | Required Env | RPC Keys | Required Token Addresses |
|
||||
|---|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `cWUSDT/cWUSDC` | `CHAIN_1_UNISWAP_V2_FACTORY`, `CHAIN_1_UNISWAP_V2_ROUTER`, `CHAIN_1_UNISWAP_V2_START_BLOCK` | `ETHEREUM_MAINNET_RPC` | `cWUSDT=0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE`, `cWUSDC=0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a` |
|
||||
| `10` | Optimism | `cWUSDT/cWUSDC` | `CHAIN_10_UNISWAP_V2_FACTORY`, `CHAIN_10_UNISWAP_V2_ROUTER`, `CHAIN_10_UNISWAP_V2_START_BLOCK` | `OPTIMISM_RPC_URL`, `OPTIMISM_MAINNET_RPC` | `cWUSDT=0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6`, `cWUSDC=0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` |
|
||||
| `25` | Cronos | `cWUSDT/cWUSDC` | `CHAIN_25_UNISWAP_V2_FACTORY`, `CHAIN_25_UNISWAP_V2_ROUTER`, `CHAIN_25_UNISWAP_V2_START_BLOCK` | `CRONOS_RPC_URL`, `CRONOS_MAINNET_RPC` | `cWUSDT=0x72948a7a813B60b37Cd0c920C4657DbFF54312b8`, `cWUSDC=0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec` |
|
||||
| `56` | BSC | `cWUSDT/cWUSDC` | `CHAIN_56_UNISWAP_V2_FACTORY`, `CHAIN_56_UNISWAP_V2_ROUTER`, `CHAIN_56_UNISWAP_V2_START_BLOCK` | `BSC_RPC_URL`, `BSC_MAINNET_RPC` | `cWUSDT=0x9a1D0dBEE997929ED02fD19E0E199704d20914dB`, `cWUSDC=0x5355148C4740fcc3D7a96F05EdD89AB14851206b` |
|
||||
| `100` | Gnosis | `cWUSDT/cWUSDC` | `CHAIN_100_UNISWAP_V2_FACTORY`, `CHAIN_100_UNISWAP_V2_ROUTER`, `CHAIN_100_UNISWAP_V2_START_BLOCK` | `GNOSIS_RPC_URL`, `GNOSIS_MAINNET_RPC`, `GNOSIS_RPC` | `cWUSDT=0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF`, `cWUSDC=0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` |
|
||||
| `137` | Polygon | `cWUSDT/cWUSDC` | `CHAIN_137_UNISWAP_V2_FACTORY`, `CHAIN_137_UNISWAP_V2_ROUTER`, `CHAIN_137_UNISWAP_V2_START_BLOCK` | `POLYGON_MAINNET_RPC`, `POLYGON_RPC_URL` | `cWUSDT=0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF`, `cWUSDC=0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4` |
|
||||
| `8453` | Base | `cWUSDT/cWUSDC` | `CHAIN_8453_UNISWAP_V2_FACTORY`, `CHAIN_8453_UNISWAP_V2_ROUTER`, `CHAIN_8453_UNISWAP_V2_START_BLOCK` | `BASE_RPC_URL`, `BASE_MAINNET_RPC` | `cWUSDT=0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6`, `cWUSDC=0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105` |
|
||||
| `42161` | Arbitrum One | `cWUSDT/cWUSDC` | `CHAIN_42161_UNISWAP_V2_FACTORY`, `CHAIN_42161_UNISWAP_V2_ROUTER`, `CHAIN_42161_UNISWAP_V2_START_BLOCK` | `ARBITRUM_RPC_URL`, `ARBITRUM_MAINNET_RPC` | `cWUSDT=0x73ADaF7dBa95221c080db5631466d2bC54f6a76B`, `cWUSDC=0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF` |
|
||||
| `42220` | Celo | `cWUSDT/cWUSDC` | `CHAIN_42220_UNISWAP_V2_FACTORY`, `CHAIN_42220_UNISWAP_V2_ROUTER`, `CHAIN_42220_UNISWAP_V2_START_BLOCK` | `CELO_RPC_URL`, `CELO_MAINNET_RPC`, `CELO_RPC` | `cWUSDT=0x73376eB92c16977B126dB9112936A20Fa0De3442`, `cWUSDC=0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3` |
|
||||
| `43114` | Avalanche C-Chain | `cWUSDT/cWUSDC` | `CHAIN_43114_UNISWAP_V2_FACTORY`, `CHAIN_43114_UNISWAP_V2_ROUTER`, `CHAIN_43114_UNISWAP_V2_START_BLOCK` | `AVALANCHE_RPC_URL`, `AVALANCHE_MAINNET_RPC` | `cWUSDT=0x8142BA530B08f3950128601F00DaaA678213DFdf`, `cWUSDC=0x0C242b513008Cd49C89078F5aFb237A3112251EB` |
|
||||
|
||||
## Execution Steps
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
1. Confirm `CHAIN_1_UNISWAP_V2_FACTORY`, `CHAIN_1_UNISWAP_V2_ROUTER`, and `CHAIN_1_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `1`: `ETHEREUM_MAINNET_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_1_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE 0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a --rpc-url "${ETHEREUM_MAINNET_RPC}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_1_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE 0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a --rpc-url "${ETHEREUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_1_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
1. Confirm `CHAIN_10_UNISWAP_V2_FACTORY`, `CHAIN_10_UNISWAP_V2_ROUTER`, and `CHAIN_10_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `10`: `OPTIMISM_RPC_URL`, `OPTIMISM_MAINNET_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_10_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6 0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105 --rpc-url "${OPTIMISM_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_10_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6 0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105 --rpc-url "${OPTIMISM_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_10_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
1. Confirm `CHAIN_25_UNISWAP_V2_FACTORY`, `CHAIN_25_UNISWAP_V2_ROUTER`, and `CHAIN_25_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `25`: `CRONOS_RPC_URL`, `CRONOS_MAINNET_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_25_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x72948a7a813B60b37Cd0c920C4657DbFF54312b8 0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec --rpc-url "${CRONOS_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_25_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x72948a7a813B60b37Cd0c920C4657DbFF54312b8 0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec --rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_25_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
1. Confirm `CHAIN_56_UNISWAP_V2_FACTORY`, `CHAIN_56_UNISWAP_V2_ROUTER`, and `CHAIN_56_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `56`: `BSC_RPC_URL`, `BSC_MAINNET_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_56_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x9a1D0dBEE997929ED02fD19E0E199704d20914dB 0x5355148C4740fcc3D7a96F05EdD89AB14851206b --rpc-url "${BSC_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_56_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x9a1D0dBEE997929ED02fD19E0E199704d20914dB 0x5355148C4740fcc3D7a96F05EdD89AB14851206b --rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_56_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
1. Confirm `CHAIN_100_UNISWAP_V2_FACTORY`, `CHAIN_100_UNISWAP_V2_ROUTER`, and `CHAIN_100_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `100`: `GNOSIS_RPC_URL`, `GNOSIS_MAINNET_RPC`, `GNOSIS_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_100_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF 0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4 --rpc-url "${GNOSIS_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_100_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF 0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4 --rpc-url "${GNOSIS_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_100_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
1. Confirm `CHAIN_137_UNISWAP_V2_FACTORY`, `CHAIN_137_UNISWAP_V2_ROUTER`, and `CHAIN_137_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `137`: `POLYGON_MAINNET_RPC`, `POLYGON_RPC_URL`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_137_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF 0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4 --rpc-url "${POLYGON_MAINNET_RPC}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_137_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF 0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4 --rpc-url "${POLYGON_MAINNET_RPC}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_137_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
1. Confirm `CHAIN_8453_UNISWAP_V2_FACTORY`, `CHAIN_8453_UNISWAP_V2_ROUTER`, and `CHAIN_8453_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `8453`: `BASE_RPC_URL`, `BASE_MAINNET_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_8453_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6 0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105 --rpc-url "${BASE_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_8453_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6 0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105 --rpc-url "${BASE_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_8453_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
1. Confirm `CHAIN_42161_UNISWAP_V2_FACTORY`, `CHAIN_42161_UNISWAP_V2_ROUTER`, and `CHAIN_42161_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `42161`: `ARBITRUM_RPC_URL`, `ARBITRUM_MAINNET_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_42161_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x73ADaF7dBa95221c080db5631466d2bC54f6a76B 0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF --rpc-url "${ARBITRUM_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_42161_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x73ADaF7dBa95221c080db5631466d2bC54f6a76B 0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF --rpc-url "${ARBITRUM_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_42161_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
1. Confirm `CHAIN_42220_UNISWAP_V2_FACTORY`, `CHAIN_42220_UNISWAP_V2_ROUTER`, and `CHAIN_42220_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `42220`: `CELO_RPC_URL`, `CELO_MAINNET_RPC`, `CELO_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_42220_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x73376eB92c16977B126dB9112936A20Fa0De3442 0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3 --rpc-url "${CELO_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_42220_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x73376eB92c16977B126dB9112936A20Fa0De3442 0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3 --rpc-url "${CELO_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_42220_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
|
||||
### Chain `43114` — Avalanche C-Chain
|
||||
|
||||
1. Confirm `CHAIN_43114_UNISWAP_V2_FACTORY`, `CHAIN_43114_UNISWAP_V2_ROUTER`, and `CHAIN_43114_UNISWAP_V2_START_BLOCK` are set in `smom-dbis-138/.env`.
|
||||
2. Confirm one RPC env is usable for chain `43114`: `AVALANCHE_RPC_URL`, `AVALANCHE_MAINNET_RPC`.
|
||||
3. Verify token addresses for `cWUSDT` and `cWUSDC` in `cross-chain-pmm-lps/config/deployment-status.json` before sending any transaction.
|
||||
4. Probe the factory first: `cast call "${CHAIN_43114_UNISWAP_V2_FACTORY}" "getPair(address,address)(address)" 0x8142BA530B08f3950128601F00DaaA678213DFdf 0x0C242b513008Cd49C89078F5aFb237A3112251EB --rpc-url "${AVALANCHE_RPC_URL}"`.
|
||||
5. If the pair is absent, create it: `cast send "${CHAIN_43114_UNISWAP_V2_FACTORY}" "createPair(address,address)(address)" 0x8142BA530B08f3950128601F00DaaA678213DFdf 0x0C242b513008Cd49C89078F5aFb237A3112251EB --rpc-url "${AVALANCHE_RPC_URL}" --private-key "$PRIVATE_KEY"`.
|
||||
6. Approve both phase-1 tokens to the router and seed initial liquidity on `cWUSDT/cWUSDC` with `addLiquidity(...)` through `"${CHAIN_43114_UNISWAP_V2_ROUTER}"`.
|
||||
7. Rebuild live pair discovery and write the discovered pair into `deployment-status.json`.
|
||||
8. Re-run promotion gates and do not move to the next chain until the current one is discoverable and recorded.
|
||||
|
||||
Post-phase-1 commands:
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-live-pair-discovery.sh`
|
||||
- `python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered`
|
||||
- `node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json`
|
||||
- `bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh`
|
||||
284
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_ACTIONS.md
Normal file
284
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_ACTIONS.md
Normal file
@@ -0,0 +1,284 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Funding Actions
|
||||
|
||||
- Generated: `2026-04-17T18:13:05Z`
|
||||
- Signer: `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
|
||||
- Purpose: strict per-chain action plan for phase-1 funding and deployment.
|
||||
|
||||
| Chain | Network | Action | Tokens Missing | Gas Issue | Recommended Seed |
|
||||
|---|---|---|---|---|---:|
|
||||
| `1` | Ethereum Mainnet | `seed_now` | `none` | `false` | `8888511.867466` |
|
||||
| `10` | Optimism | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `true` | `1000` |
|
||||
| `25` | Cronos | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `56` | BSC | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `100` | Gnosis | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `137` | Polygon | `seed_now` | `none` | `false` | `996.297636` |
|
||||
| `8453` | Base | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `true` | `1000` |
|
||||
| `42161` | Arbitrum One | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `42220` | Celo | `mint_destination_then_seed` | `cWUSDT`, `cWUSDC` | `false` | `1000` |
|
||||
| `43114` | Avalanche | `mint_missing_side_then_seed` | `cWUSDC` | `false` | `0.8` |
|
||||
|
||||
## Per-Chain Actions
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- Action: `seed_now`
|
||||
- Tokens missing: `none`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `1` via `CW_BRIDGE_MAINNET` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ETHEREUM_MAINNET_RPC}"
|
||||
export FACTORY="${CHAIN_1_UNISWAP_V2_FACTORY}"
|
||||
export ROUTER="${CHAIN_1_UNISWAP_V2_ROUTER}"
|
||||
export CWUSDT="0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE"
|
||||
export CWUSDC="0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="8888511867466"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `true`
|
||||
- Gas note: Top up native gas on Optimism before minting or seeding; current balance is below the 0.001 safety threshold.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `10` via `CW_BRIDGE_OPTIMISM` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `25` via `CW_BRIDGE_CRONOS` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x72948a7a813B60b37Cd0c920C4657DbFF54312b8" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `56` via `CW_BRIDGE_BSC` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x9a1D0dBEE997929ED02fD19E0E199704d20914dB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x5355148C4740fcc3D7a96F05EdD89AB14851206b" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `100` via `CW_BRIDGE_GNOSIS` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- Action: `seed_now`
|
||||
- Tokens missing: `none`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `137` via `CW_BRIDGE_POLYGON` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Post-funding deploy block:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${POLYGON_MAINNET_RPC}"
|
||||
export FACTORY="${CHAIN_137_UNISWAP_V2_FACTORY}"
|
||||
export ROUTER="${CHAIN_137_UNISWAP_V2_ROUTER}"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="996297636"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `true`
|
||||
- Gas note: Top up native gas on Base before minting or seeding; current balance is below the 0.001 safety threshold.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `8453` via `CW_BRIDGE_BASE` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `42161` via `CW_BRIDGE_ARBITRUM` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73ADaF7dBa95221c080db5631466d2bC54f6a76B" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- Action: `mint_destination_then_seed`
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `42220` via `CW_BRIDGE_CELO` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDT` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73376eB92c16977B126dB9112936A20Fa0De3442" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- Mint `cWUSDC` `1000` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- Action: `mint_missing_side_then_seed`
|
||||
- Tokens missing: `cWUSDC`
|
||||
- Gas issue: `false`
|
||||
- Gas note: No minimum gas top-up issue from the latest preflight snapshot.
|
||||
- Bridge possible: `true`
|
||||
- Bridge note: Bridge path is structurally available for chain `43114` via `CW_BRIDGE_AVALANCHE` and `bridgeAvailable=true`, but the repo-native executable path today is destination-side cW minting. Cross-chain c* -> cW delivery still follows `docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md` and `docs/07-ccip/CW_BRIDGE_APPROACH.md` rather than a single helper script.
|
||||
|
||||
Mint steps:
|
||||
- Mint `cWUSDC` `0.8` with:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0C242b513008Cd49C89078F5aFb237A3112251EB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "800000" \
|
||||
--rpc-url "${AVALANCHE_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
100
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_BUNDLE.md
Normal file
100
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_BUNDLE.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Funding Bundle
|
||||
|
||||
- Generated: `2026-04-17T20:05:59Z`
|
||||
- Signer: `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
|
||||
- Purpose: strict per-chain funding bundle for `cWUSDT/cWUSDC` phase-1 rollout.
|
||||
|
||||
| Chain | Network | Tokens Missing | Minimum Gas Issue | Max Equal Seed | Funding Ready Now |
|
||||
|---|---|---|---|---:|---|
|
||||
| `1` | Ethereum Mainnet | `cWUSDC` | `false` | `0` | `false` |
|
||||
| `10` | Optimism | `cWUSDT`, `cWUSDC` | `false` | `0` | `false` |
|
||||
| `25` | Cronos | `none` | `false` | `1000` | `false` |
|
||||
| `56` | BSC | `none` | `false` | `1000` | `false` |
|
||||
| `100` | Gnosis | `cWUSDT`, `cWUSDC` | `false` | `0` | `false` |
|
||||
| `137` | Polygon | `cWUSDC` | `false` | `0` | `false` |
|
||||
| `8453` | Base | `cWUSDT`, `cWUSDC` | `false` | `0` | `false` |
|
||||
| `42161` | Arbitrum One | `cWUSDT`, `cWUSDC` | `false` | `0` | `false` |
|
||||
| `42220` | Celo | `cWUSDT`, `cWUSDC` | `false` | `0` | `false` |
|
||||
| `43114` | Avalanche | `cWUSDT`, `cWUSDC` | `false` | `0` | `false` |
|
||||
|
||||
## Exact Post-Funding Deploy Blocks
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- Tokens missing: `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Tokens missing: `none`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `1000`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- Tokens missing: `none`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `1000`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- Tokens missing: `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- Tokens missing: `cWUSDT`, `cWUSDC`
|
||||
- Minimum gas issue: `false`
|
||||
- Max equal seed after funding snapshot: `0`
|
||||
|
||||
Post-funding deploy block becomes executable once the missing token and gas blockers are cleared. Use the chain-specific execution checklist plus this chain's env and token addresses.
|
||||
@@ -0,0 +1,89 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Funding Readiness
|
||||
|
||||
- Generated: `2026-04-17T20:05:54Z`
|
||||
- Signer: `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
|
||||
- Purpose: live deployer-wallet funding view for seeding `cWUSDT/cWUSDC` phase-1 pools chain by chain.
|
||||
- Completed: `1`, `10`, `25`, `56`, `100`, `137`, `8453`, `42161`, `42220`, `43114`
|
||||
- Ready now: none
|
||||
- Needs funding: none
|
||||
|
||||
| Chain | Network | Status | Pair Exists | Seeded Live | Native Gas | cWUSDT | cWUSDC | Max Equal Seed |
|
||||
|---|---|---|---|---|---:|---:|---:|---:|
|
||||
| `1` | Ethereum Mainnet | `completed` | `true` | `true` | `0.028982898459925766` | `397.197013` | `0` | `0` |
|
||||
| `10` | Optimism | `completed` | `true` | `true` | `0.001980670026642148` | `0` | `0` | `0` |
|
||||
| `25` | Cronos | `completed` | `true` | `true` | `22.401143346977489259` | `1000` | `1000` | `1000` |
|
||||
| `56` | BSC | `completed` | `true` | `true` | `0.010626271367072709` | `1000` | `1000` | `1000` |
|
||||
| `100` | Gnosis | `completed` | `true` | `true` | `2.407080479781350729` | `0` | `0` | `0` |
|
||||
| `137` | Polygon | `completed` | `true` | `true` | `24.318080574425380349` | `2.686028` | `0` | `0` |
|
||||
| `8453` | Base | `completed` | `true` | `true` | `0.002877934067617928` | `0` | `0` | `0` |
|
||||
| `42161` | Arbitrum One | `completed` | `true` | `true` | `0.001055113904178255` | `0` | `0` | `0` |
|
||||
| `42220` | Celo | `completed` | `true` | `true` | `8.537307308649465530` | `0` | `0` | `0` |
|
||||
| `43114` | Avalanche | `completed` | `true` | `true` | `0.446784013286210977` | `0` | `0` | `0` |
|
||||
|
||||
## Blockers
|
||||
|
||||
### Chain `1` — Ethereum Mainnet
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDC balance is zero
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- no funding blockers
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- no funding blockers
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
|
||||
### Chain `137` — Polygon
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDC balance is zero
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- execution status: `completed`
|
||||
- pair seeded live: `true`
|
||||
- cWUSDT balance is zero
|
||||
- cWUSDC balance is zero
|
||||
@@ -0,0 +1,634 @@
|
||||
# Mr. Promod Uniswap V2 Phase 1 Remaining 8 Operator Paste Pack
|
||||
|
||||
- Generated: `2026-04-17T18:51:53Z`
|
||||
- Purpose: one flat paste-ready pack for the remaining eight phase-1 chains after `1` and `137`.
|
||||
|
||||
| Order | Chain | Network | Preferred Path | 3x cUSDT | 3x cUSDC | CW_BRIDGE Env | Selector Env |
|
||||
|---|---|---|---|---:|---:|---|---|
|
||||
| `1` | `10` | Optimism | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_OPTIMISM` | `OPTIMISM_SELECTOR` |
|
||||
| `2` | `25` | Cronos | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_CRONOS` | `CRONOS_SELECTOR` |
|
||||
| `3` | `56` | BSC | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_BSC` | `BSC_SELECTOR` |
|
||||
| `4` | `100` | Gnosis | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_GNOSIS` | `GNOSIS_SELECTOR` |
|
||||
| `5` | `8453` | Base | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_BASE` | `BASE_SELECTOR` |
|
||||
| `6` | `42161` | Arbitrum One | `bridge_then_seed` | `3000` | `3000` | `CW_BRIDGE_ARBITRUM` | `ARBITRUM_SELECTOR` |
|
||||
| `7` | `42220` | Celo | `mint_then_seed` | `3000` | `3000` | `CW_BRIDGE_CELO` | `missing` |
|
||||
| `8` | `43114` | Avalanche | `bridge_then_seed` | `0` | `2.4` | `CW_BRIDGE_AVALANCHE` | `AVALANCHE_SELECTOR` |
|
||||
|
||||
## Flat Paste Pack
|
||||
|
||||
### Chain `10` — Optimism
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_OPTIMISM`
|
||||
- Selector env: `OPTIMISM_SELECTOR`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${OPTIMISM_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_OPTIMISM}"
|
||||
export DEST_CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export DEST_CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${OPTIMISM_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDT` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- `cWUSDC` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${OPTIMISM_MAINNET_RPC}"
|
||||
export FACTORY="0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf"
|
||||
export ROUTER="0x4A7b5Da61326A6379179b40d00F57E5bbDC962c2"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `25` — Cronos
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_CRONOS`
|
||||
- Selector env: `CRONOS_SELECTOR`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${CRONOS_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_CRONOS}"
|
||||
export DEST_CWUSDT="0x72948a7a813B60b37Cd0c920C4657DbFF54312b8"
|
||||
export DEST_CWUSDC="0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${CRONOS_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDT` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x72948a7a813B60b37Cd0c920C4657DbFF54312b8" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- `cWUSDC` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CRONOS_RPC_URL}"
|
||||
export FACTORY="0x3B44B2a187a7b3824131F8db5a74194D0a42Fc15"
|
||||
export ROUTER="0x145863Eb42Cf62847A6Ca784e6416C1682b1b2Ae"
|
||||
export CWUSDT="0x72948a7a813B60b37Cd0c920C4657DbFF54312b8"
|
||||
export CWUSDC="0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `56` — BSC
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_BSC`
|
||||
- Selector env: `BSC_SELECTOR`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${BSC_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_BSC}"
|
||||
export DEST_CWUSDT="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export DEST_CWUSDC="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${BSC_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDT` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x9a1D0dBEE997929ED02fD19E0E199704d20914dB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- `cWUSDC` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x5355148C4740fcc3D7a96F05EdD89AB14851206b" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BSC_RPC_URL}"
|
||||
export FACTORY="0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73"
|
||||
export ROUTER="0x10ED43C718714eb63d5aA57B78B54704E256024E"
|
||||
export CWUSDT="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export CWUSDC="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `100` — Gnosis
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_GNOSIS`
|
||||
- Selector env: `GNOSIS_SELECTOR`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${GNOSIS_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_GNOSIS}"
|
||||
export DEST_CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export DEST_CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${GNOSIS_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDT` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- `cWUSDC` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${GNOSIS_MAINNET_RPC}"
|
||||
export FACTORY="0xc35DADB65012eC5796536bD9864eD8773aBc74C4"
|
||||
export ROUTER="0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `8453` — Base
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_BASE`
|
||||
- Selector env: `BASE_SELECTOR`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${BASE_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_BASE}"
|
||||
export DEST_CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export DEST_CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${BASE_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDT` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- `cWUSDC` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BASE_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `42161` — Arbitrum One
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_ARBITRUM`
|
||||
- Selector env: `ARBITRUM_SELECTOR`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${ARBITRUM_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_ARBITRUM}"
|
||||
export DEST_CWUSDT="0x73ADaF7dBa95221c080db5631466d2bC54f6a76B"
|
||||
export DEST_CWUSDC="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${ARBITRUM_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDT` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73ADaF7dBa95221c080db5631466d2bC54f6a76B" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- `cWUSDC` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ARBITRUM_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x73ADaF7dBa95221c080db5631466d2bC54f6a76B"
|
||||
export CWUSDC="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `42220` — Celo
|
||||
|
||||
- Preferred path: `mint_then_seed`
|
||||
- 3x cUSDT from 138: `3000`
|
||||
- 3x cUSDC from 138: `3000`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_CELO`
|
||||
- Selector env: `missing`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${CELO_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_CELO}"
|
||||
export DEST_CWUSDT="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export DEST_CWUSDC="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
# DEST_SELECTOR env is not currently documented for this chain in smom-dbis-138/.env
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDT` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73376eB92c16977B126dB9112936A20Fa0De3442" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
- `cWUSDC` `1000`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CELO_MAINNET_RPC}"
|
||||
export FACTORY="0x62d5b84bE28a183aBB507E125B384122D2C25fAE"
|
||||
export ROUTER="0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121"
|
||||
export CWUSDT="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export CWUSDC="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
|
||||
### Chain `43114` — Avalanche
|
||||
|
||||
- Preferred path: `bridge_then_seed`
|
||||
- 3x cUSDT from 138: `0`
|
||||
- 3x cUSDC from 138: `2.4`
|
||||
- CW_BRIDGE env: `CW_BRIDGE_AVALANCHE`
|
||||
- Selector env: `AVALANCHE_SELECTOR`
|
||||
|
||||
Bridge preflight:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_AVALANCHE}"
|
||||
export DEST_CWUSDT="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export DEST_CWUSDC="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="0"
|
||||
export BRIDGE_CUSDC_HUMAN="2.4"
|
||||
export BRIDGE_CUSDT_RAW="0"
|
||||
export BRIDGE_CUSDC_RAW="2400000"
|
||||
export DEST_SELECTOR="${AVALANCHE_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
```
|
||||
|
||||
Mint fallback:
|
||||
- `cWUSDC` `0.8`
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0C242b513008Cd49C89078F5aFb237A3112251EB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "800000" \
|
||||
--rpc-url "${AVALANCHE_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
```
|
||||
|
||||
Post-funding deploy:
|
||||
```bash
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export FACTORY="0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10"
|
||||
export ROUTER="0x60aE616a2155Ee3d9A68541Ba4544862310933d4"
|
||||
export CWUSDT="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export CWUSDC="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="2400000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
```
|
||||
@@ -0,0 +1,458 @@
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${OPTIMISM_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_OPTIMISM}"
|
||||
export DEST_CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export DEST_CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${OPTIMISM_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${OPTIMISM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${OPTIMISM_MAINNET_RPC}"
|
||||
export FACTORY="0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf"
|
||||
export ROUTER="0x4A7b5Da61326A6379179b40d00F57E5bbDC962c2"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${CRONOS_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_CRONOS}"
|
||||
export DEST_CWUSDT="0x72948a7a813B60b37Cd0c920C4657DbFF54312b8"
|
||||
export DEST_CWUSDC="0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${CRONOS_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x72948a7a813B60b37Cd0c920C4657DbFF54312b8" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CRONOS_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CRONOS_RPC_URL}"
|
||||
export FACTORY="0x3B44B2a187a7b3824131F8db5a74194D0a42Fc15"
|
||||
export ROUTER="0x145863Eb42Cf62847A6Ca784e6416C1682b1b2Ae"
|
||||
export CWUSDT="0x72948a7a813B60b37Cd0c920C4657DbFF54312b8"
|
||||
export CWUSDC="0x932566E5bB6BEBF6B035B94f3DE1f75f126304Ec"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${BSC_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_BSC}"
|
||||
export DEST_CWUSDT="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export DEST_CWUSDC="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${BSC_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x9a1D0dBEE997929ED02fD19E0E199704d20914dB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x5355148C4740fcc3D7a96F05EdD89AB14851206b" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BSC_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BSC_RPC_URL}"
|
||||
export FACTORY="0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73"
|
||||
export ROUTER="0x10ED43C718714eb63d5aA57B78B54704E256024E"
|
||||
export CWUSDT="0x9a1D0dBEE997929ED02fD19E0E199704d20914dB"
|
||||
export CWUSDC="0x5355148C4740fcc3D7a96F05EdD89AB14851206b"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${GNOSIS_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_GNOSIS}"
|
||||
export DEST_CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export DEST_CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${GNOSIS_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${GNOSIS_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${GNOSIS_MAINNET_RPC}"
|
||||
export FACTORY="0xc35DADB65012eC5796536bD9864eD8773aBc74C4"
|
||||
export ROUTER="0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506"
|
||||
export CWUSDT="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export CWUSDC="0xd6969bC19b53f866C64f2148aE271B2Dae0C58E4"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${BASE_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_BASE}"
|
||||
export DEST_CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export DEST_CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${BASE_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${BASE_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${BASE_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x04B2AE3c3bb3d70Df506FAd8717b0FBFC78ED7E6"
|
||||
export CWUSDC="0x377a5FaA3162b3Fc6f4e267301A3c817bAd18105"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${ARBITRUM_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_ARBITRUM}"
|
||||
export DEST_CWUSDT="0x73ADaF7dBa95221c080db5631466d2bC54f6a76B"
|
||||
export DEST_CWUSDC="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
export DEST_SELECTOR="${ARBITRUM_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73ADaF7dBa95221c080db5631466d2bC54f6a76B" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${ARBITRUM_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${ARBITRUM_MAINNET_RPC}"
|
||||
export FACTORY="0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E"
|
||||
export ROUTER="0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb"
|
||||
export CWUSDT="0x73ADaF7dBa95221c080db5631466d2bC54f6a76B"
|
||||
export CWUSDC="0x0cb0192C056aa425C557BdeAD8E56C7eEabf7acF"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${CELO_MAINNET_RPC}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_CELO}"
|
||||
export DEST_CWUSDT="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export DEST_CWUSDC="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="3000"
|
||||
export BRIDGE_CUSDC_HUMAN="3000"
|
||||
export BRIDGE_CUSDT_RAW="3000000000"
|
||||
export BRIDGE_CUSDC_RAW="3000000000"
|
||||
# DEST_SELECTOR env is not currently documented for this chain in smom-dbis-138/.env
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x73376eB92c16977B126dB9112936A20Fa0De3442" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "1000000000" \
|
||||
--rpc-url "${CELO_MAINNET_RPC}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${CELO_MAINNET_RPC}"
|
||||
export FACTORY="0x62d5b84bE28a183aBB507E125B384122D2C25fAE"
|
||||
export ROUTER="0xE3D8bd6Aed4F159bc8000a9cD47CffDb95F96121"
|
||||
export CWUSDT="0x73376eB92c16977B126dB9112936A20Fa0De3442"
|
||||
export CWUSDC="0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="3000000000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export SOURCE_RPC_URL="${CHAIN138_RPC}"
|
||||
export DEST_RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export DEST_CW_BRIDGE="${CW_BRIDGE_AVALANCHE}"
|
||||
export DEST_CWUSDT="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export DEST_CWUSDC="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export SOURCE_CUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
export SOURCE_CUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
export BRIDGE_CUSDT_HUMAN="0"
|
||||
export BRIDGE_CUSDC_HUMAN="2.4"
|
||||
export BRIDGE_CUSDT_RAW="0"
|
||||
export BRIDGE_CUSDC_RAW="2400000"
|
||||
export DEST_SELECTOR="${AVALANCHE_SELECTOR}"
|
||||
|
||||
cast call "$DEST_CW_BRIDGE" 'feeToken()(address)' --rpc-url "$DEST_RPC_URL"
|
||||
cast call "$DEST_CW_BRIDGE" 'calculateFee(uint64,uint256)(uint256)' "$DEST_SELECTOR" "$BRIDGE_CUSDC_RAW" --rpc-url "$DEST_RPC_URL"
|
||||
|
||||
echo "Bridge execution stays runbook-driven: follow docs/07-ccip/CW_DEPLOY_AND_WIRE_RUNBOOK.md and docs/07-ccip/CW_BRIDGE_APPROACH.md with the env exported above."
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
cast send "0x0C242b513008Cd49C89078F5aFb237A3112251EB" 'mint(address,uint256)' "$(cast wallet address --private-key "$PRIVATE_KEY")" "800000" \
|
||||
--rpc-url "${AVALANCHE_RPC_URL}" --private-key "$PRIVATE_KEY" --legacy --gas-limit 100000
|
||||
|
||||
source smom-dbis-138/scripts/load-env.sh >/dev/null
|
||||
export RPC_URL="${AVALANCHE_RPC_URL}"
|
||||
export FACTORY="0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10"
|
||||
export ROUTER="0x60aE616a2155Ee3d9A68541Ba4544862310933d4"
|
||||
export CWUSDT="0x8142BA530B08f3950128601F00DaaA678213DFdf"
|
||||
export CWUSDC="0x0C242b513008Cd49C89078F5aFb237A3112251EB"
|
||||
export SIGNER="$(cast wallet address --private-key "$PRIVATE_KEY")"
|
||||
export AMOUNT_RAW="2400000"
|
||||
export DEADLINE="$(( $(date +%s) + 3600 ))"
|
||||
|
||||
PAIR="$(cast call "$FACTORY" 'getPair(address,address)(address)' "$CWUSDT" "$CWUSDC" --rpc-url "$RPC_URL")"
|
||||
if [[ "$PAIR" == "0x0000000000000000000000000000000000000000" ]]; then
|
||||
cast send "$FACTORY" 'createPair(address,address)(address)' "$CWUSDT" "$CWUSDC" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
fi
|
||||
|
||||
cast send "$CWUSDT" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$CWUSDC" 'approve(address,uint256)(bool)' "$ROUTER" "$AMOUNT_RAW" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
cast send "$ROUTER" \
|
||||
'addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)' \
|
||||
"$CWUSDT" "$CWUSDC" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$AMOUNT_RAW" "$SIGNER" "$DEADLINE" \
|
||||
--private-key "$PRIVATE_KEY" --rpc-url "$RPC_URL"
|
||||
|
||||
python3 scripts/lib/promod_uniswap_v2_live_pair_discovery.py --write-discovered
|
||||
bash scripts/verify/build-promod-uniswap-v2-promotion-gates.sh
|
||||
node cross-chain-pmm-lps/scripts/validate-deployment-status.cjs cross-chain-pmm-lps/config/deployment-status.json
|
||||
11987
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE2_OPERATOR_PASTE_PACK.md
Normal file
11987
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE2_OPERATOR_PASTE_PACK.md
Normal file
File diff suppressed because it is too large
Load Diff
11894
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE2_OPERATOR_SEQUENCE.md
Normal file
11894
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE2_OPERATOR_SEQUENCE.md
Normal file
File diff suppressed because it is too large
Load Diff
8813
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE2_SHELL_PASTE_PACK.sh
Normal file
8813
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE2_SHELL_PASTE_PACK.sh
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,83 @@
|
||||
# Promod Uniswap V2 Phase 2 Wave 1 Completion Status
|
||||
|
||||
**Generated:** 2026-04-18T02:30:39.167860+00:00
|
||||
|
||||
**Overall Status:** `complete`
|
||||
|
||||
**Completed Chains:** `1, 10, 25, 56, 100, 137, 8453, 42161, 42220, 43114`
|
||||
|
||||
## Reserve Verification
|
||||
|
||||
| Chain | Network | Pair | Pair Address | Reserves | Status |
|
||||
|---|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `cWAUDC/cWUSDC` | `0x135812ec5E714De8400B47856A8210eE9c4B19bb` | `(1000000000 [1e9], 1000000000 [1e9], 1776459491 [1.776e9])` | `complete` |
|
||||
| `1` | Ethereum Mainnet | `cWAUDC/cWUSDT` | `0xaC36C0De0A6E94fa21718217c9eccEa4dC2680cF` | `(1000000000 [1e9], 1000000000 [1e9], 1776459503 [1.776e9])` | `complete` |
|
||||
| `1` | Ethereum Mainnet | `cWEURC/cWUSDC` | `0xaF10c00226DD1Bb28d7e93C21c904B7072b8076D` | `(1000000000 [1e9], 1000000000 [1e9], 1776459899 [1.776e9])` | `complete` |
|
||||
| `1` | Ethereum Mainnet | `cWEURC/cWUSDT` | `0x58a68B0c4Fc090d63014eA9E1D9D291377EE15Ce` | `(1000000000 [1e9], 1000000000 [1e9], 1776459911 [1.776e9])` | `complete` |
|
||||
| `1` | Ethereum Mainnet | `cWGBPC/cWUSDC` | `0x43fc09d5d619D43DFE764F39B193900D54992718` | `(1000000000 [1e9], 1000000000 [1e9], 1776459923 [1.776e9])` | `complete` |
|
||||
| `1` | Ethereum Mainnet | `cWGBPC/cWUSDT` | `0x122781a70764f958D231ea06E3EA3F4F2a324Da9` | `(1000000000 [1e9], 1000000000 [1e9], 1776459935 [1.776e9])` | `complete` |
|
||||
| `10` | Optimism | `cWAUDC/cWUSDC` | `0xdf58b085EE6Db9Cc0569e8f7FF21877b44645eA8` | `(1000000000 [1e9], 1000000000 [1e9], 1776460061 [1.776e9])` | `complete` |
|
||||
| `10` | Optimism | `cWAUDC/cWUSDT` | `0xe3093934531459110c37f728C7f4e8557236A677` | `(1000000000 [1e9], 1000000000 [1e9], 1776460065 [1.776e9])` | `complete` |
|
||||
| `10` | Optimism | `cWEURC/cWUSDC` | `0x8324cDEcE2618FA2b94469165353829819Caaf19` | `(1000000000 [1e9], 1000000000 [1e9], 1776460067 [1.776e9])` | `complete` |
|
||||
| `10` | Optimism | `cWEURC/cWUSDT` | `0x255BC955CBD24528B83Ce971641A80b75389Fc65` | `(1000000000 [1e9], 1000000000 [1e9], 1776460071 [1.776e9])` | `complete` |
|
||||
| `10` | Optimism | `cWGBPC/cWUSDC` | `0x16BdD425Be56080b670925AF880bAC599C9346ca` | `(1000000000 [1e9], 1000000000 [1e9], 1776460073 [1.776e9])` | `complete` |
|
||||
| `10` | Optimism | `cWGBPC/cWUSDT` | `0x3052541a82d02348Bbe7f9Ce1927992ADb9Bd259` | `(1000000000 [1e9], 1000000000 [1e9], 1776460077 [1.776e9])` | `complete` |
|
||||
| `25` | Cronos | `cWAUDC/cWUSDC` | `0xef0Dd59421024053102b9A29A71D07d4838ef0a5` | `(1000000000 [1e9], 1000000000 [1e9], 1776477932 [1.776e9])` | `complete` |
|
||||
| `25` | Cronos | `cWAUDC/cWUSDT` | `0x480f7Cf816AEBD62EC60A738635FD6363e004709` | `(1000000000 [1e9], 1000000000 [1e9], 1776477936 [1.776e9])` | `complete` |
|
||||
| `25` | Cronos | `cWEURC/cWUSDC` | `0x55dF42030A9780F51E3f479Ae28E63ee9049627a` | `(1000000000 [1e9], 1000000000 [1e9], 1776477974 [1.776e9])` | `complete` |
|
||||
| `25` | Cronos | `cWEURC/cWUSDT` | `0xC3A19A41096265A4137F8346aAcFd5d26568cb97` | `(1000000000 [1e9], 1000000000 [1e9], 1776477978 [1.776e9])` | `complete` |
|
||||
| `25` | Cronos | `cWGBPC/cWUSDC` | `0x673dFF7d10DbF2Cd6e1F495e53a6AeDb291Df1a7` | `(1000000000 [1e9], 1000000000 [1e9], 1776477981 [1.776e9])` | `complete` |
|
||||
| `25` | Cronos | `cWGBPC/cWUSDT` | `0xf6314aCBAaC3EE2F8CCc48C8Ca00525824a35C26` | `(1000000000 [1e9], 1000000000 [1e9], 1776477984 [1.776e9])` | `complete` |
|
||||
| `56` | BSC | `cWAUDC/cWUSDC` | `0x03B5b4bDb04A7D94A8d5D170fE84772756DB912F` | `(1000000000 [1e9], 1000000000 [1e9], 1776478046 [1.776e9])` | `complete` |
|
||||
| `56` | BSC | `cWAUDC/cWUSDT` | `0x8FA9f96f6E5785ea98A51C97E3d1A05AaafB406e` | `(1000000000 [1e9], 1000000000 [1e9], 1776478049 [1.776e9])` | `complete` |
|
||||
| `56` | BSC | `cWEURC/cWUSDC` | `0xa07b120e21bc80333AF35C951150a5F983cf12D9` | `(1000000000 [1e9], 1000000000 [1e9], 1776478052 [1.776e9])` | `complete` |
|
||||
| `56` | BSC | `cWEURC/cWUSDT` | `0xBA9a873BC6cA8885E7E0975247B304cFed2f01E6` | `(1000000000 [1e9], 1000000000 [1e9], 1776478055 [1.776e9])` | `complete` |
|
||||
| `56` | BSC | `cWGBPC/cWUSDC` | `0x43447275C56be6fd30e74cF3368CFDE561fC2fe7` | `(1000000000 [1e9], 1000000000 [1e9], 1776478116 [1.776e9])` | `complete` |
|
||||
| `56` | BSC | `cWGBPC/cWUSDT` | `0xd8ac668D812dC7bB86ea66f8e86824a575bf0ed0` | `(1000000000 [1e9], 1000000000 [1e9], 1776478093 [1.776e9])` | `complete` |
|
||||
| `100` | Gnosis | `cWAUDC/cWUSDC` | `0x65C533F4520816e91303747aFAED84B5B58154d5` | `(1000000000 [1e9], 1000000000 [1e9], 1776457100 [1.776e9])` | `complete` |
|
||||
| `100` | Gnosis | `cWAUDC/cWUSDT` | `0x41078C1DB4Ed26ecF19142feBaA9dCdE0b04e210` | `(1000000000 [1e9], 1000000000 [1e9], 1776457105 [1.776e9])` | `complete` |
|
||||
| `100` | Gnosis | `cWEURC/cWUSDC` | `0xFcf9feEF2bcF708cE2193fE8Ee33dA205610480D` | `(1000000000 [1e9], 1000000000 [1e9], 1776457110 [1.776e9])` | `complete` |
|
||||
| `100` | Gnosis | `cWEURC/cWUSDT` | `0x24B9F12D143d16DdFC6D4eA135b8aC08009367a1` | `(1000000000 [1e9], 1000000000 [1e9], 1776457115 [1.776e9])` | `complete` |
|
||||
| `100` | Gnosis | `cWGBPC/cWUSDC` | `0x86ee10F889dBAA74b640cFD318A07787DBDaaC9b` | `(1000000000 [1e9], 1000000000 [1e9], 1776457120 [1.776e9])` | `complete` |
|
||||
| `100` | Gnosis | `cWGBPC/cWUSDT` | `0x67f36f25Af15910B5bAE08B1b9B6273158E8eA77` | `(1000000000 [1e9], 1000000000 [1e9], 1776457125 [1.776e9])` | `complete` |
|
||||
| `137` | Polygon | `cWAUDC/cWUSDC` | `0x6ffa939d75bd6affe019705f2c9240f97975ffa0` | `(1000000000 [1e9], 1000000000 [1e9], 1776460210 [1.776e9])` | `complete` |
|
||||
| `137` | Polygon | `cWAUDC/cWUSDT` | `0x526a3a38b77d199e8fd07f37597f9ca0fa5a87cd` | `(1000000000 [1e9], 1000000000 [1e9], 1776460214 [1.776e9])` | `complete` |
|
||||
| `137` | Polygon | `cWEURC/cWUSDC` | `0xd5907a692f7e8f650fc5feb8ebb3196fea2069a3` | `(1000000000 [1e9], 1000000000 [1e9], 1776460220 [1.776e9])` | `complete` |
|
||||
| `137` | Polygon | `cWEURC/cWUSDT` | `0x3292c0ed9eec0443635367717047876fe3cdb514` | `(1000000000 [1e9], 1000000000 [1e9], 1776460224 [1.776e9])` | `complete` |
|
||||
| `137` | Polygon | `cWGBPC/cWUSDC` | `0x52786e752be5fb1b18e86959f87b7a59e2c6de6d` | `(1000000000 [1e9], 1000000000 [1e9], 1776460228 [1.776e9])` | `complete` |
|
||||
| `137` | Polygon | `cWGBPC/cWUSDT` | `0x1b6e8484db0cd9c00d39e457c2d126c8983f5390` | `(1000000000 [1e9], 1000000000 [1e9], 1776460232 [1.776e9])` | `complete` |
|
||||
| `8453` | Base | `cWAUDC/cWUSDC` | `0x8e0C0Fa5F7227799bf0cFc9E4129f2c9133230f6` | `(1000000000 [1e9], 1000000000 [1e9], 1776478205 [1.776e9])` | `complete` |
|
||||
| `8453` | Base | `cWAUDC/cWUSDT` | `0xB191eC6D99CeA5aAf557193224b32453F27BBB9f` | `(1000000000 [1e9], 1000000000 [1e9], 1776478249 [1.776e9])` | `complete` |
|
||||
| `8453` | Base | `cWEURC/cWUSDC` | `0x71C979435fDdF15EaF84df4C5191e1b285387758` | `(1000000000 [1e9], 1000000000 [1e9], 1776478207 [1.776e9])` | `complete` |
|
||||
| `8453` | Base | `cWEURC/cWUSDT` | `0x56b54646C559569060435EAC2C3c70346Fa7D849` | `(1000000000 [1e9], 1000000000 [1e9], 1776478253 [1.776e9])` | `complete` |
|
||||
| `8453` | Base | `cWGBPC/cWUSDC` | `0x9b40B0a5EEC3B510d3CdeAe186F9ed27A22BF88a` | `(1000000000 [1e9], 1000000000 [1e9], 1776478187 [1.776e9])` | `complete` |
|
||||
| `8453` | Base | `cWGBPC/cWUSDT` | `0xe5Cf1c4d333992D5a4ceed65d83123398D78594c` | `(1000000000 [1e9], 1000000000 [1e9], 1776478209 [1.776e9])` | `complete` |
|
||||
| `42161` | Arbitrum One | `cWAUDC/cWUSDC` | `0x51fB15df509a8F1dA3813CA810c1d667DeC119f6` | `(1000000000 [1e9], 1000000000 [1e9], 1776478295 [1.776e9])` | `complete` |
|
||||
| `42161` | Arbitrum One | `cWAUDC/cWUSDT` | `0x2Bfd8A45852Bd81cd787a4081A6528b00cf00A79` | `(1000000000 [1e9], 1000000000 [1e9], 1776478296 [1.776e9])` | `complete` |
|
||||
| `42161` | Arbitrum One | `cWEURC/cWUSDC` | `0x443FC120dB180265cF36A30f6eAbB7459106e570` | `(1000000000 [1e9], 1000000000 [1e9], 1776478298 [1.776e9])` | `complete` |
|
||||
| `42161` | Arbitrum One | `cWEURC/cWUSDT` | `0xd55ECf3eB5680351e0f78bB305E67BFb4875B966` | `(1000000000 [1e9], 1000000000 [1e9], 1776478299 [1.776e9])` | `complete` |
|
||||
| `42161` | Arbitrum One | `cWGBPC/cWUSDC` | `0x907a97eAD9B490208fCB1d43ddB8C2D1015581dC` | `(1000000000 [1e9], 1000000000 [1e9], 1776478300 [1.776e9])` | `complete` |
|
||||
| `42161` | Arbitrum One | `cWGBPC/cWUSDT` | `0x65dF46603cDCd5862Caf5935DE5ee44B3756B749` | `(1000000000 [1e9], 1000000000 [1e9], 1776478301 [1.776e9])` | `complete` |
|
||||
| `42220` | Celo | `cWAUDC/cWUSDC` | `0x2d9D8e2E0642C01B600BA9F953ca5D49abFC391E` | `(1000000000 [1e9], 1000000000 [1e9], 1776478385 [1.776e9])` | `complete` |
|
||||
| `42220` | Celo | `cWAUDC/cWUSDT` | `0x4a1ED0471f1832264A704D0998703d1da3E6cb84` | `(1000000000 [1e9], 1000000000 [1e9], 1776478388 [1.776e9])` | `complete` |
|
||||
| `42220` | Celo | `cWEURC/cWUSDC` | `0xFF0bFD8A374Eb1Ec24F27500a76104Ae3B463D80` | `(1000000000 [1e9], 1000000000 [1e9], 1776478392 [1.776e9])` | `complete` |
|
||||
| `42220` | Celo | `cWEURC/cWUSDT` | `0xF93EBA21A0672835415f873e119789Ff27A21ebF` | `(1000000000 [1e9], 1000000000 [1e9], 1776478395 [1.776e9])` | `complete` |
|
||||
| `42220` | Celo | `cWGBPC/cWUSDC` | `0xb3dDd766CE76d07435B197E0857ea80661d20Ed7` | `(1000000000 [1e9], 1000000000 [1e9], 1776478399 [1.776e9])` | `complete` |
|
||||
| `42220` | Celo | `cWGBPC/cWUSDT` | `0xc6187BEfbC1b8cC827049AC4a5Cb05BC023c48De` | `(1000000000 [1e9], 1000000000 [1e9], 1776478402 [1.776e9])` | `complete` |
|
||||
| `43114` | Avalanche C-Chain | `cWAUDC/cWUSDC` | `0xc3d2eAE75b859c151825A49481187885c6c4C424` | `(1000000000 [1e9], 1000000000 [1e9], 1776478469 [1.776e9])` | `complete` |
|
||||
| `43114` | Avalanche C-Chain | `cWAUDC/cWUSDT` | `0x971881b0BCd3ec4C051f8316e22Ad31E8Af291C4` | `(1000000000 [1e9], 1000000000 [1e9], 1776478472 [1.776e9])` | `complete` |
|
||||
| `43114` | Avalanche C-Chain | `cWEURC/cWUSDC` | `0x640e566c107Ca4f6A10a2bD37E919aD011e7627e` | `(1000000000 [1e9], 1000000000 [1e9], 1776478475 [1.776e9])` | `complete` |
|
||||
| `43114` | Avalanche C-Chain | `cWEURC/cWUSDT` | `0x633A3686a5b99E04C0363aA9233a2FD83554589c` | `(1000000000 [1e9], 1000000000 [1e9], 1776478477 [1.776e9])` | `complete` |
|
||||
| `43114` | Avalanche C-Chain | `cWGBPC/cWUSDC` | `0x94090e498dC3cdA064039fe26Ede0dB19e6a1EC3` | `(1000000000 [1e9], 1000000000 [1e9], 1776478480 [1.776e9])` | `complete` |
|
||||
| `43114` | Avalanche C-Chain | `cWGBPC/cWUSDT` | `0xF9A545fF323fbe8c78c21BDeA191D187854F8Ed1` | `(1000000000 [1e9], 1000000000 [1e9], 1776478483 [1.776e9])` | `complete` |
|
||||
|
||||
## Explorer Publication
|
||||
|
||||
**Status:** `blocked`
|
||||
|
||||
Deployment and liquidity rollout is complete, but explorer publication is not fully complete.
|
||||
|
||||
- Current local CompliantWrappedToken artifact does not exactly match deployed runtime bytecode.
|
||||
- forge verify-contract cannot use the historical deploy profile directly in this environment.
|
||||
- Some explorer backends require paid API access or manual submission paths.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
25
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE_ORDER.md
Normal file
25
docs/03-deployment/PROMOD_UNISWAP_V2_PHASE_ORDER.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Mr. Promod Uniswap V2 Phase Order
|
||||
|
||||
- Generated: `2026-04-18T02:19:49Z`
|
||||
- Program: Mr. Promod Uniswap V2 cW Deep Liquidity Program
|
||||
- Mainnet funding posture: `triple-rail-support` via `cWUSDC, cWUSDT, cWAUSDT`
|
||||
- Purpose: strict rollout order for each chain: phase 1 core rail -> phase 2 full cW* wrapped mesh -> phase 3 settlement rails.
|
||||
|
||||
| Chain | Network | Phase 1 Core Rail | Phase 2 Full cW* Wrapped Mesh | Phase 3 Settlement Rails |
|
||||
|---|---|---|---|---|
|
||||
| `1` | Ethereum Mainnet | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` |
|
||||
| `10` | Optimism | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` |
|
||||
| `25` | Cronos | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDT`, `cWUSDT/USDT` |
|
||||
| `56` | BSC | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDT`, `cWUSDT/USDT`, `cWAUSDT/USDT` |
|
||||
| `100` | Gnosis | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` |
|
||||
| `137` | Polygon | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC`, `cWAUSDT/USDC` |
|
||||
| `8453` | Base | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` |
|
||||
| `42161` | Arbitrum One | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC` |
|
||||
| `42220` | Celo | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC`, `cWAUSDT/USDC` |
|
||||
| `43114` | Avalanche C-Chain | `cWUSDT/cWUSDC` | `cWAUDC/cWUSDC`, `cWAUDC/cWUSDT`, `cWBTC/cWUSDC`, `cWBTC/cWUSDT`, `cWCADC/cWUSDC`, `cWCADC/cWUSDT`, `cWCHFC/cWUSDC`, `cWCHFC/cWUSDT`, `cWEURC/cWUSDC`, `cWEURC/cWUSDT` | `cWUSDC/USDC`, `cWUSDT/USDC`, `cWAUSDT/USDC` |
|
||||
|
||||
## Phase Rules
|
||||
|
||||
- Phase 1 opens the network with the standardized core rail `cWUSDT/cWUSDC` when available.
|
||||
- Phase 2 expands the rest of the documented GRU v2 `cW*` assets into wrapped pairs against `cWUSDC` and `cWUSDT`.
|
||||
- Phase 3 adds canonical settlement rails only after the wrapped mesh exists and the chain is ready to expose deeper stable exits.
|
||||
34
docs/03-deployment/PROMOD_UNISWAP_V2_PROMOTION_GATES.md
Normal file
34
docs/03-deployment/PROMOD_UNISWAP_V2_PROMOTION_GATES.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# 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_<id>_UNISWAP_V2_FACTORY`, `CHAIN_<id>_UNISWAP_V2_ROUTER`, and `CHAIN_<id>_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.
|
||||
190
docs/03-deployment/PROVIDER_FACING_PACKAGE_SOURCE_TO_CEX.md
Normal file
190
docs/03-deployment/PROVIDER_FACING_PACKAGE_SOURCE_TO_CEX.md
Normal file
@@ -0,0 +1,190 @@
|
||||
# Provider-Facing Package: Source To CEX / OTC Execution
|
||||
|
||||
**Last Updated:** 2026-04-17
|
||||
**Purpose:** Strict provider-facing package for `Crypto.com OTC`, a DCE, or another institutional execution venue. This is written as an onboarding and commercial brief, not an internal architecture memo.
|
||||
|
||||
## 1. Executive Summary
|
||||
|
||||
We operate a structured digital-asset corridor with:
|
||||
|
||||
- a promoted immediate bucket of Mainnet `cWUSDC` / `cWUSDT`
|
||||
- a much larger same-day corridor feeder set built around Chain 138 `cUSDC`, `cUSDT`, and stable LP unwind paths
|
||||
- a deployer wallet funding posture that should maintain both Mainnet `cWUSDC` and `cWUSDT`
|
||||
- a preferred settlement target of `USDC`
|
||||
- a preferred operating model of:
|
||||
|
||||
`Chain 138 inventory -> canonical bridge -> Mainnet normalization -> provider handoff`
|
||||
|
||||
The current repo-modeled operator state shows:
|
||||
|
||||
- immediate bucket: about `$17.78M`
|
||||
- same-day corridor bucket: about `$1.381B`
|
||||
- strongest verified direct public normalization sink: about `$213.10` via `cWUSDC -> USDC`
|
||||
- direct `cWUSDT -> USDT` path: about `$2.18`
|
||||
|
||||
The practical implication is that we are not seeking a provider to discover our flow. We are seeking a provider to absorb clean normalized settlement flow at institutional scale after bridge and Mainnet normalization.
|
||||
|
||||
## Funding Posture
|
||||
|
||||
The deployer wallet should maintain both:
|
||||
|
||||
- `cWUSDC` for the primary Mainnet `USDC` normalization rail
|
||||
- `cWUSDT` for `cUSDT` landing, fallback handling, and support-rail normalization into `cWUSDC`
|
||||
|
||||
This means the provider-facing package should describe the Mainnet wrapped funding posture as **dual-rail**, even though the preferred final settlement asset remains `USDC`.
|
||||
|
||||
## 2. What We Expect From The Provider
|
||||
|
||||
| Category | Expectation |
|
||||
|---|---|
|
||||
| Onboarding | Clear KYB / KYC / entity onboarding path |
|
||||
| Settlement rail | Accepted deposit assets, chains, address rules, memo/tag rules if any |
|
||||
| Execution model | Clear distinction between OTC RFQ, streamed quotes, exchange-book routing, or hybrid handling |
|
||||
| Size guidance | Minimum clip, normal clip, escalation threshold, and preferred block workflow |
|
||||
| Operational support | Named contacts, escalation path, failed deposit handling, reconciliation contact |
|
||||
| Commercial clarity | Clear fee / spread framework and expected relationship model |
|
||||
| Reliability | Stable intake process for repeatable `USDC`-oriented flow |
|
||||
|
||||
## 3. What The Provider Should Expect From Us
|
||||
|
||||
| Category | Commitment |
|
||||
|---|---|
|
||||
| Flow shape | Clean, normalized settlement-oriented flow, primarily `USDC` |
|
||||
| Route discipline | We do not treat public on-chain pools as the final absorber of institutional size |
|
||||
| Operational clarity | One default operating path, one packetization policy, one settlement preference |
|
||||
| Funding posture | The deployer wallet maintains both `cWUSDC` and `cWUSDT` for Mainnet funding and normalization support |
|
||||
| Treasury control | Clear control over feeder wallets and corridor assets |
|
||||
| Source narrative | Source-of-funds and wallet-control narrative available for onboarding |
|
||||
| Escalation discipline | Named operators and reproducible reconciliation process |
|
||||
| Volume ramp | Small canaries first, then repeatable production clips, then larger negotiated size |
|
||||
|
||||
## 4. Current Flow Presentation
|
||||
|
||||
### Preferred Flow
|
||||
|
||||
| Source Asset | Path To Provider |
|
||||
|---|---|
|
||||
| `cUSDC` | `cUSDC -> bridge -> cWUSDC -> USDC -> provider` |
|
||||
| `cUSDT` | `cUSDT -> bridge -> cWUSDT -> cWUSDC -> USDC -> provider` |
|
||||
| `LP:cUSDT/cUSDC` | `withdraw -> cUSDT/cUSDC -> bridge -> normalize -> USDC -> provider` |
|
||||
| `cWUSDC` | `cWUSDC -> USDC -> provider` |
|
||||
| `cWUSDT` | `cWUSDT -> cWUSDC -> USDC -> provider` |
|
||||
|
||||
### Mainnet Funding Requirement
|
||||
|
||||
The deployer wallet should be treated as funded across both Mainnet wrapped settlement rails:
|
||||
|
||||
- `cWUSDC`
|
||||
- `cWUSDT`
|
||||
|
||||
This is not a contradiction of the `USDC`-first settlement policy. It is the funding requirement that keeps both the primary normalization rail and the `cUSDT` support rail operational.
|
||||
|
||||
### Default Settlement Preference
|
||||
|
||||
1. `USDC`
|
||||
2. `USDT` only if the provider explicitly prefers it and the route is operationally superior
|
||||
|
||||
### Current Constraint
|
||||
|
||||
Without a provider, the system remains terminally concentrated on a shallow public sink. With a provider, the on-chain Mainnet leg becomes a bounded normalization handshake, not the final execution destination.
|
||||
|
||||
## 5. How We Present Volume
|
||||
|
||||
We should present volume in terms of **repeatable flow bands**, not only maximum theoretical inventory.
|
||||
|
||||
### Recommended Provider-Facing Framing
|
||||
|
||||
| Layer | How To Describe It |
|
||||
|---|---|
|
||||
| Immediate inventory | Mainnet normalized-or-near-normalized stable-adjacent assets available for rapid handoff |
|
||||
| Same-day corridor inventory | Chain 138 feeder assets that can be bridged and normalized into `USDC` within the same operational day |
|
||||
| Execution target | Repeatable institutional settlement flow rather than one-off retail-sized swaps |
|
||||
| Growth profile | Initial controlled packets, then increasing clip size after successful canaries and reconciliation |
|
||||
|
||||
### What Not To Do
|
||||
|
||||
- Do not lead with nominal long-tail balances that do not yet have promoted terminal exits
|
||||
- Do not imply that public DEX depth is the true execution capacity
|
||||
- Do not promise production volume before the provider rail is fully enabled
|
||||
|
||||
## 6. How We Drive Traffic / Volume
|
||||
|
||||
| Stage | Objective | Provider Narrative |
|
||||
|---|---|---|
|
||||
| Stage 1 | Prove clean onboarding and settlement | “We can deliver clean `USDC` packets with low operational friction.” |
|
||||
| Stage 2 | Prove repeatable canaries | “We can repeat successful flows with consistent routing and reconciliation.” |
|
||||
| Stage 3 | Increase packet size | “We can move from small clips into desk-appropriate institutional blocks.” |
|
||||
| Stage 4 | Increase cadence | “We can supply repeatable same-day flow, not one-off opportunistic transactions.” |
|
||||
| Stage 5 | Expand provider trust | “We can route more of the corridor inventory into the provider because the process is stable.” |
|
||||
|
||||
### Traffic-Driving Rules
|
||||
|
||||
1. Standardize flow into one settlement asset.
|
||||
2. Use predictable packet sizes.
|
||||
3. Keep reconciliation clean.
|
||||
4. Minimize failed deposits and exception handling.
|
||||
5. Start with canaries and graduate by evidence.
|
||||
6. Expand cadence before claiming unlimited size.
|
||||
|
||||
## 7. First 30-Day Volume Ramp Plan
|
||||
|
||||
### Days 1–7: Onboarding + Zero-Error Setup
|
||||
|
||||
- complete provider onboarding
|
||||
- confirm accepted asset, chain, and deposit instructions
|
||||
- validate operator contacts and exception path
|
||||
- confirm packet policy internally
|
||||
|
||||
### Days 8–14: Canary Execution
|
||||
|
||||
- send smallest operationally meaningful packets
|
||||
- verify:
|
||||
- normalization correctness
|
||||
- provider receipt
|
||||
- reconciliation speed
|
||||
- operator handoff discipline
|
||||
|
||||
### Days 15–21: Controlled Repetition
|
||||
|
||||
- repeat successful clips
|
||||
- keep the same asset and route shape
|
||||
- avoid unnecessary route experimentation
|
||||
|
||||
### Days 22–30: Graduated Ramp
|
||||
|
||||
- widen packet sizes only after zero-error repetition
|
||||
- establish an initial weekly or daily cadence
|
||||
- document observed provider preferences and execution quality
|
||||
|
||||
## 8. Provider Questions We Should Be Ready To Answer
|
||||
|
||||
| Question | Prepared Answer Shape |
|
||||
|---|---|
|
||||
| What asset will you settle in? | Primarily `USDC` |
|
||||
| What chain will you deliver on? | Ethereum Mainnet unless another provider-accepted route is cleaner |
|
||||
| What is your feeder system? | Chain 138 `cUSDC`, `cUSDT`, and stable LP unwind paths, with Mainnet `cW*` immediate assets |
|
||||
| What funding assets do you maintain on Mainnet? | Both `cWUSDC` and `cWUSDT`, with `USDC` as the preferred final settlement target |
|
||||
| Why not execute fully on-chain? | Public normalization pools are shallow; we use on-chain only for bounded preparation before institutional execution |
|
||||
| What size do you expect? | Start with controlled packets, then graduate based on successful settlement and reconciliation |
|
||||
| How do you control source assets? | Treasury-controlled wallets and documented corridor model |
|
||||
| How do you manage risk? | Bounded normalization usage, packet limits, settlement preference, and operator-controlled promotion gates |
|
||||
|
||||
## 9. What We Should Ask The Provider Directly
|
||||
|
||||
1. Which deposit assets do you prefer for repeat institutional flow?
|
||||
2. Which chain(s) are best operationally for your settlement workflow?
|
||||
3. At what clip sizes do you prefer OTC desk handling versus exchange-book handling?
|
||||
4. What packet cadence do you prefer from a new flow source?
|
||||
5. What is your escalation process for failed or delayed deposits?
|
||||
6. Do you support pre-negotiated RFQ / desk routing for normalized `USDC` flow?
|
||||
7. What reconciliation data will you provide back to our operators?
|
||||
|
||||
## 10. Strict Bottom Line
|
||||
|
||||
The correct provider-facing story is not:
|
||||
|
||||
`we have many assets and many routes`
|
||||
|
||||
It is:
|
||||
|
||||
`we control a large same-day corridor feeder system, we normalize into clean settlement assets, and we want a reliable institutional execution partner for repeatable flow`
|
||||
22
docs/03-deployment/SOURCE_TO_CEX_EXECUTION_PLAN.md
Normal file
22
docs/03-deployment/SOURCE_TO_CEX_EXECUTION_PLAN.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# Source To CEX Execution Plan
|
||||
|
||||
- Generated: `2026-04-17T15:11:49Z`
|
||||
- Strategy frame: Chain 138 inventory -> canonical bridge -> Mainnet normalization -> CEX handoff
|
||||
- Mainnet funding posture: `dual-rail` via `cWUSDC, cWUSDT`
|
||||
|
||||
## Operator Table
|
||||
|
||||
| Source Asset | Bridge Output | Preferred Normalization | CEX Deposit Asset | Fallback Path |
|
||||
|---|---|---|---|---|
|
||||
| `cUSDC` | cWUSDC on Ethereum Mainnet | cWUSDC -> USDC | `USDC` | bridge cUSDC -> cWUSDC, then use best available Mainnet USDC normalization route with capped public-pool usage |
|
||||
| `cUSDT` | cWUSDT on Ethereum Mainnet | cWUSDT -> cWUSDC -> USDC | `USDC` | use direct cWUSDT -> USDT only for tiny packets or explicit override; otherwise route through USDC normalization |
|
||||
| `LP:cUSDT/cUSDC` | cUSDT and cUSDC after LP withdrawal | withdraw LP -> prefer cUSDC feeder -> bridge -> cWUSDC -> USDC | `USDC` | withdraw LP, split outputs by best feeder path, avoid forcing whole ticket through direct USDT sink |
|
||||
| `cWUSDC` | none | cWUSDC -> USDC | `USDC` | split size, cap pool usage, treat on-chain conversion strictly as deposit preparation |
|
||||
| `cWUSDT` | none | cWUSDT -> cWUSDC -> USDC | `USDC` | direct USDT path is last-resort and tiny; practical size should flow through USDC-normalization |
|
||||
|
||||
## Notes
|
||||
|
||||
- `cUSDC` is the cleanest same-day corridor feeder.
|
||||
- `cUSDT` should usually normalize through USDC until direct USDT depth improves.
|
||||
- Stable LP claims are feeder-preparation assets.
|
||||
- Mainnet `cWUSDC` and `cWUSDT` are immediate in mechanics, but not deep enough to absorb large tickets on-chain.
|
||||
24
docs/03-deployment/SOURCE_TO_CEX_PRODUCTION_READINESS.md
Normal file
24
docs/03-deployment/SOURCE_TO_CEX_PRODUCTION_READINESS.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Source To CEX Production Readiness
|
||||
|
||||
- Generated: `2026-04-17T15:11:49Z`
|
||||
- Ready for immediate live production: `False`
|
||||
- Policy production enabled: `False`
|
||||
- Mainnet funding posture: `dual-rail` via `cWUSDC, cWUSDT`
|
||||
|
||||
## Blocking Issues
|
||||
|
||||
- no real off-chain sink is currently included in baseline scope
|
||||
- source-to-cex production policy remains disabled
|
||||
|
||||
## Off-Chain Sink Validation
|
||||
|
||||
- Validation ready: `False`
|
||||
- Included sink count: `0`
|
||||
|
||||
## Next Live Inputs Required
|
||||
|
||||
- at least one real off-chain sink row with include_in_baseline=true
|
||||
- enabled_for_production_handoff=true on the real sink
|
||||
- real deposit address and chain for the chosen sink
|
||||
- operational_status=enabled for the chosen sink
|
||||
- operator decision to set production_enabled=true after live canaries succeed
|
||||
@@ -0,0 +1,3 @@
|
||||
# Terminal Liquidity Diversification Build Program
|
||||
|
||||
This repo-native program treats terminal-liquidity diversification as the next operator priority: deepen Mainnet USDC normalization, add real off-chain sinks, and only then promote broader same-day exits.
|
||||
51
docs/03-deployment/WEMIX_BRIDGE_VERIFICATION_STATUS.md
Normal file
51
docs/03-deployment/WEMIX_BRIDGE_VERIFICATION_STATUS.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# WEMIX Bridge Verification Status
|
||||
|
||||
**Last Updated:** 2026-04-18
|
||||
|
||||
## Current State
|
||||
|
||||
The WEMIX bridge contracts are:
|
||||
|
||||
- deployed live
|
||||
- wired bidirectionally with Chain 138
|
||||
- **not yet confirmed as explorer-verified/published**
|
||||
|
||||
Contracts:
|
||||
|
||||
- `CCIPWETH9_BRIDGE_WEMIX=0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04`
|
||||
- `CCIPWETH10_BRIDGE_WEMIX=0xa4B9DD039565AeD9641D45b57061f99d9cA6Df08`
|
||||
|
||||
## Verified Blockers
|
||||
|
||||
1. The repo did not previously have a WEMIX-specific verification helper.
|
||||
2. WEMIX public explorer pages are behind bot protection, so direct scripted page checks are unreliable.
|
||||
3. WEMIX explorer verification needs an `api-key`, and the repo did not previously expose a dedicated `WEMIXSCAN_API_KEY`.
|
||||
4. The WEMIX deploy required a `paris` EVM target, so verification must use that same build profile.
|
||||
|
||||
## Repo-Native Verification Command
|
||||
|
||||
```bash
|
||||
cd smom-dbis-138
|
||||
./scripts/deployment/verify-wemix-bridges.sh
|
||||
```
|
||||
|
||||
Required env:
|
||||
|
||||
- `WEMIXSCAN_API_KEY`
|
||||
- `WEMIX_RPC`
|
||||
- `CCIPWETH9_BRIDGE_WEMIX`
|
||||
- `CCIPWETH10_BRIDGE_WEMIX`
|
||||
- `CCIP_ROUTER_WEMIX`
|
||||
- `WETH9_WEMIX`
|
||||
- `WETH10_WEMIX`
|
||||
- `LINK_TOKEN_WEMIX`
|
||||
|
||||
## Important Build Assumption
|
||||
|
||||
Verification must use:
|
||||
|
||||
- Solidity `0.8.20`
|
||||
- optimizer enabled
|
||||
- optimizer runs `200`
|
||||
- `viaIR=true`
|
||||
- `evmVersion=paris`
|
||||
@@ -1,7 +1,7 @@
|
||||
# Add Chain 138 (Defi Oracle Meta Mainnet) to Trust Wallet
|
||||
|
||||
**Last Updated:** 2026-02-12
|
||||
**Status:** User workaround available; official support via Wallet Core PR
|
||||
**Last Updated:** 2026-04-17
|
||||
**Status:** User workaround available; official support via Wallet Core PR; token/logo submissions use Assets App; new chain business workflow may still require Trust review outside the repo path
|
||||
|
||||
---
|
||||
|
||||
@@ -47,6 +47,8 @@ Trust Wallet allows adding custom EVM networks in the app. Because **Chain 138 i
|
||||
|
||||
To have Chain 138 appear in Trust Wallet’s **built-in** chain list (no manual add), the chain must be added to **Trust Wallet Core** via a PR.
|
||||
|
||||
Important: Trust’s current asset-listing docs separate **new token/logo submissions** from **new chain requests**. The token/logo path goes through the Assets App, while new-chain review may still involve their Business Development / partner process even if Wallet Core code changes are technically prepared.
|
||||
|
||||
### Prerequisites (for Chain 138)
|
||||
|
||||
| Item | Value |
|
||||
@@ -132,7 +134,7 @@ Defi Oracle Meta Mainnet (Chain ID 138) — EVM-compatible chain for Trust Walle
|
||||
## Optional: Token / chain logos (Trust Wallet Assets)
|
||||
|
||||
- **Token logos:** Your app already uses Trust Wallet’s public asset URLs for Ethereum mainnet tokens (e.g. `https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/<address>/logo.png`). For **Chain 138–native tokens**, you can submit logos via [assets.trustwallet.com](https://assets.trustwallet.com) (see [Trust – Listing new assets](https://developer.trustwallet.com/developer/new-asset)); fees and rules apply.
|
||||
- **Chain icon:** If Trust’s app shows a chain icon from their assets repo, adding a chain folder under `blockchains/` (e.g. for `dfiometa` or `eip155-138`) would follow their assets repo structure; check [trustwallet/assets](https://github.com/trustwallet/assets) for current layout.
|
||||
- **Chain icon:** Treat chain-icon work as secondary to Wallet Core support. Trust’s public docs currently direct new token/logo submissions through the Assets App and new chain requests through their business workflow. If a chain-assets repo addition becomes necessary, use the packaged Chain 138 bundle in [pr-ready/eip155-138-package](./pr-ready/eip155-138-package/).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
**Action:** Add or update `_data/chains/eip155-138.json`.
|
||||
|
||||
**File:** [eip155-138.json](./eip155-138.json) — lists only **public** RPC nodes (Core and Private RPC nodes are excluded).
|
||||
**Packaged copy:** [eip155-138-package/eip155-138.chainlist.json](./eip155-138-package/eip155-138.chainlist.json)
|
||||
|
||||
**Steps:**
|
||||
1. Fork https://github.com/ethereum-lists/chains
|
||||
@@ -21,22 +22,53 @@
|
||||
|
||||
---
|
||||
|
||||
## 2. Trust Wallet (trustwallet/wallet-core)
|
||||
## 2. Trust Wallet
|
||||
|
||||
**Repo:** https://github.com/trustwallet/wallet-core
|
||||
**Action:** Add Chain 138 to the chain registry (e.g. `registry.json` or current path per their docs).
|
||||
There are two different Trust Wallet paths:
|
||||
|
||||
**File:** [trust-wallet-registry-chain138.json](./trust-wallet-registry-chain138.json)
|
||||
1. **Wallet Core / built-in chain support**
|
||||
Repo: https://github.com/trustwallet/wallet-core
|
||||
Action: add Chain 138 to the chain registry (e.g. `registry.json` or current path per their docs).
|
||||
2. **Assets / token logos**
|
||||
Use the Assets App: https://assets.trustwallet.com
|
||||
Action: submit token logos and metadata for supported chains.
|
||||
3. **New chain business workflow**
|
||||
Trust’s current assets docs say new chain requests should go through their Business Development contact path, even when Wallet Core technical work is also needed.
|
||||
|
||||
**Steps:**
|
||||
**Wallet Core file:** [trust-wallet-registry-chain138.json](./trust-wallet-registry-chain138.json)
|
||||
**Packaged copy:** [eip155-138-package/trust-wallet-registry-chain138.json](./eip155-138-package/trust-wallet-registry-chain138.json)
|
||||
|
||||
**Wallet Core steps:**
|
||||
1. Clone trustwallet/wallet-core and follow [Trust – New EVM chain](https://developer.trustwallet.com/developer/wallet-core/newblockchain/newevmchain)
|
||||
2. Add the JSON entry from `trust-wallet-registry-chain138.json` to the registry file (path may be `registry.json` or under `registry/`; check repo)
|
||||
3. Run codegen: `./tools/new-evmchain dfiometa` (use registry **id**, not chainId 138; requires Rust/cargo)
|
||||
4. Extend derivation tests if required
|
||||
5. Build and test, then open PR with registry change + generated files
|
||||
|
||||
**Assets / logo path:** Use `assets.trustwallet.com` for token/logo submissions on supported networks.
|
||||
**Full guide:** [ADD_CHAIN138_TO_TRUST_WALLET.md](../ADD_CHAIN138_TO_TRUST_WALLET.md)
|
||||
|
||||
## 2a. Packaged Submission Directory
|
||||
|
||||
**Directory:** [eip155-138-package/](./eip155-138-package/)
|
||||
|
||||
This folder is the operator-friendly handoff bundle for Defi Oracle Meta Mainnet (`eip155-138`). It contains:
|
||||
|
||||
- a Chainlist-ready JSON copy
|
||||
- a Trust Wallet Wallet Core registry entry copy
|
||||
- a manifest with canonical source paths
|
||||
|
||||
The canonical editable files remain:
|
||||
|
||||
- [eip155-138.json](./eip155-138.json)
|
||||
- [trust-wallet-registry-chain138.json](./trust-wallet-registry-chain138.json)
|
||||
|
||||
Rebuild the package after updates with:
|
||||
|
||||
```bash
|
||||
bash scripts/verify/build-chain138-pr-ready-package.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Ledger (after they respond)
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
# Chain 138 Asset Submission Package
|
||||
|
||||
**Chain:** Defi Oracle Meta Mainnet
|
||||
**Chain ID:** 138
|
||||
**CAIP-2:** `eip155:138`
|
||||
|
||||
This package is for **token asset submissions** on Chain 138.
|
||||
|
||||
It is intentionally separate from the Wallet Core chain-support PR because those are different review surfaces:
|
||||
|
||||
- **Wallet Core**: chain metadata, coin type, address derivation, explorer URL patterns
|
||||
- **Wallet / assets apps**: token logos and token metadata
|
||||
- **Listing sites**: token pages and market metadata
|
||||
|
||||
## Important scope boundary
|
||||
|
||||
`wallet-core` does **not** carry:
|
||||
|
||||
- bridge route listings
|
||||
- liquidity pool listings
|
||||
- DEX pool inventories
|
||||
- market / venue listings
|
||||
|
||||
Those belong to other systems such as token assets apps, token lists, aggregators, explorers, or market-data platforms.
|
||||
|
||||
## Contents
|
||||
|
||||
| File | Purpose |
|
||||
| --- | --- |
|
||||
| `manifest.json` | Package metadata and scope notes |
|
||||
| `wallet-token-submissions.chain138.json` | Wallet-facing token asset submission set |
|
||||
| `listing-token-submissions.chain138.json` | Listing-surface token submission set |
|
||||
|
||||
## Included assets
|
||||
|
||||
### Wallet-facing
|
||||
|
||||
- `WETH9` representation on Chain 138
|
||||
Note: canonical Chain 138 token lists currently use symbol `WETH`; this package includes a `WETH9` alias view only for surfaces that explicitly expect that branding.
|
||||
- GRU v2 canonical forward assets verified in repo sources:
|
||||
- `cUSDT V2`
|
||||
- `cUSDC V2`
|
||||
- `cEURC V2`
|
||||
- `cEURT V2`
|
||||
- `cGBPC V2`
|
||||
- `cGBPT V2`
|
||||
- `cAUDC V2`
|
||||
- `cJPYC V2`
|
||||
- `cCHFC V2`
|
||||
- `cCADC V2`
|
||||
- `cXAUC V2`
|
||||
- `cXAUT V2`
|
||||
|
||||
### Not included
|
||||
|
||||
- bridges
|
||||
- pools
|
||||
- cW public-network wrappers
|
||||
- unsupported or unverified V2 candidates not confirmed in the current repo snapshot
|
||||
|
||||
## Suggested submission order
|
||||
|
||||
1. Wallet assets / wallet token metadata surfaces
|
||||
2. Explorer token metadata alignment
|
||||
3. Market-listing surfaces after market-eligibility evidence exists
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"chainId": 138,
|
||||
"chainName": "Defi Oracle Meta Mainnet",
|
||||
"submissionType": "listing_surfaces",
|
||||
"surfaceNotes": {
|
||||
"walletCore": "Chain metadata only. No token assets, bridge listings, or pool listings.",
|
||||
"trustWalletAssetsApp": "Suitable for token metadata / logos on supported surfaces.",
|
||||
"coingecko": "Token pages require platform support and market eligibility evidence.",
|
||||
"coinmarketcap": "Token pages require market/listing eligibility evidence.",
|
||||
"explorers": "Suitable for token metadata enrichment and display labels."
|
||||
},
|
||||
"priorityAssets": [
|
||||
{
|
||||
"priority": 1,
|
||||
"symbol": "cUSDC",
|
||||
"name": "USD Coin (Compliant V2)",
|
||||
"address": "0x219522c60e83dEe01FC5b0329d6fA8fD84b9D13d",
|
||||
"decimals": 6,
|
||||
"listingRationale": [
|
||||
"forward canonical",
|
||||
"x402 ready",
|
||||
"active GRU v2 settlement candidate"
|
||||
]
|
||||
},
|
||||
{
|
||||
"priority": 2,
|
||||
"symbol": "cUSDT",
|
||||
"name": "Tether USD (Compliant V2)",
|
||||
"address": "0x9FBfab33882Efe0038DAa608185718b772EE5660",
|
||||
"decimals": 6,
|
||||
"listingRationale": [
|
||||
"forward canonical",
|
||||
"x402 ready",
|
||||
"active GRU v2 settlement candidate"
|
||||
]
|
||||
},
|
||||
{
|
||||
"priority": 3,
|
||||
"symbol": "WETH9",
|
||||
"name": "Wrapped Ether (WETH9)",
|
||||
"address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
||||
"decimals": 18,
|
||||
"listingRationale": [
|
||||
"useful wallet-recognition alias",
|
||||
"canonical token list currently uses symbol WETH"
|
||||
]
|
||||
}
|
||||
],
|
||||
"secondaryGruV2Assets": [
|
||||
"0x243e6581Dc8a98d98B92265858b322b193555C81",
|
||||
"0x2bAFA83d8fF8BaE9505511998987D0659791605B",
|
||||
"0x707508D223103f5D2d9EFBc656302c9d48878b29",
|
||||
"0xee17c18E10E55ce23F7457D018aAa2Fb1E64B281",
|
||||
"0xfb37aFd415B70C5cEDc9bA58a72D517207b769Bb",
|
||||
"0x2c751bBE4f299b989b3A8c333E0A966cdcA6Fd98",
|
||||
"0x60B7FB8e0DD0Be8595AD12Fe80AE832861Be747c",
|
||||
"0xe799033c87fE0CE316DAECcefBE3134CC74b76a9",
|
||||
"0xF0F0F81bE3D033D8586bAfd2293e37eE2f615647",
|
||||
"0x89477E982847023aaB5C3492082cd1bB4b1b9Ef1"
|
||||
],
|
||||
"exclusions": [
|
||||
{
|
||||
"symbol": "cUSDW",
|
||||
"reason": "Repo-native hub asset is present on Chain 138, but a separate V2 token candidate is not verified in the current source snapshot."
|
||||
},
|
||||
{
|
||||
"symbol": "bridges_and_pools",
|
||||
"reason": "Bridge routes and pool listings are not token asset submissions and should not be bundled with wallet-core or token-listing metadata."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"name": "Chain 138 Asset Submission Package",
|
||||
"chainName": "Defi Oracle Meta Mainnet",
|
||||
"chainId": 138,
|
||||
"caip2": "eip155:138",
|
||||
"purpose": "Submission bundle for Chain 138 token assets across wallet and listing surfaces.",
|
||||
"walletCoreScope": {
|
||||
"supportsChainMetadata": true,
|
||||
"supportsTokenAssets": false,
|
||||
"includesBridgeListings": false,
|
||||
"includesPoolListings": false
|
||||
},
|
||||
"artifacts": {
|
||||
"walletSubmissions": "docs/04-configuration/pr-ready/chain138-asset-package/wallet-token-submissions.chain138.json",
|
||||
"listingSubmissions": "docs/04-configuration/pr-ready/chain138-asset-package/listing-token-submissions.chain138.json"
|
||||
},
|
||||
"verifiedSourcePaths": [
|
||||
"token-lists/lists/dbis-138.tokenlist.json",
|
||||
"metamask-integration/config/token-list.json",
|
||||
"explorer-monorepo/frontend/src/services/api/gruExplorerData.ts",
|
||||
"smom-dbis-138/scripts/mint-c-star-v2-wave1-138.sh"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
{
|
||||
"chainId": 138,
|
||||
"chainName": "Defi Oracle Meta Mainnet",
|
||||
"submissionType": "wallet_assets",
|
||||
"notes": [
|
||||
"This file is for wallet-facing token asset metadata, not Wallet Core chain support.",
|
||||
"Use the WETH9 alias only on surfaces that explicitly expect WETH9 branding. The canonical Chain 138 token list currently uses symbol WETH for the same address.",
|
||||
"Bridge and pool metadata are out of scope for wallet-core and for this package."
|
||||
],
|
||||
"assets": [
|
||||
{
|
||||
"packageKey": "chain138-weth9-alias",
|
||||
"canonicalSymbol": "WETH",
|
||||
"submissionDisplaySymbol": "WETH9",
|
||||
"name": "Wrapped Ether (WETH9)",
|
||||
"address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
||||
"decimals": 18,
|
||||
"logoURI": "https://ipfs.io/ipfs/Qma3FKtLce9MjgJgWbtyCxBiPjJ6xi8jGWUSKNS5Jc2ong",
|
||||
"surfaceRecommendations": [
|
||||
"wallet assets app",
|
||||
"custom token metadata",
|
||||
"explorer token metadata"
|
||||
],
|
||||
"verifiedSourcePaths": [
|
||||
"token-lists/lists/dbis-138.tokenlist.json"
|
||||
],
|
||||
"notes": [
|
||||
"Canonical Chain 138 token list symbol is WETH.",
|
||||
"Use WETH9 only where the receiving surface specifically distinguishes WETH9 from other wrapped Ether forms."
|
||||
]
|
||||
},
|
||||
{
|
||||
"packageKey": "gru-v2-cusdt",
|
||||
"canonicalSymbol": "cUSDT",
|
||||
"submissionDisplaySymbol": "cUSDT",
|
||||
"name": "Tether USD (Compliant V2)",
|
||||
"address": "0x9FBfab33882Efe0038DAa608185718b772EE5660",
|
||||
"decimals": 6,
|
||||
"logoURI": "https://explorer.d-bis.org/token-icons/cUSDT.png",
|
||||
"gruVersion": "v2",
|
||||
"verifiedSourcePaths": [
|
||||
"metamask-integration/config/token-list.json"
|
||||
]
|
||||
},
|
||||
{
|
||||
"packageKey": "gru-v2-cusdc",
|
||||
"canonicalSymbol": "cUSDC",
|
||||
"submissionDisplaySymbol": "cUSDC",
|
||||
"name": "USD Coin (Compliant V2)",
|
||||
"address": "0x219522c60e83dEe01FC5b0329d6fA8fD84b9D13d",
|
||||
"decimals": 6,
|
||||
"logoURI": "https://explorer.d-bis.org/token-icons/cUSDC.png",
|
||||
"gruVersion": "v2",
|
||||
"verifiedSourcePaths": [
|
||||
"metamask-integration/config/token-list.json"
|
||||
]
|
||||
},
|
||||
{
|
||||
"packageKey": "gru-v2-ceurc",
|
||||
"canonicalSymbol": "cEURC",
|
||||
"submissionDisplaySymbol": "cEURC",
|
||||
"name": "Euro Coin (Compliant V2)",
|
||||
"address": "0x243e6581Dc8a98d98B92265858b322b193555C81",
|
||||
"decimals": 6,
|
||||
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cEURC.svg",
|
||||
"gruVersion": "v2",
|
||||
"verifiedSourcePaths": [
|
||||
"smom-dbis-138/scripts/mint-c-star-v2-wave1-138.sh",
|
||||
"explorer-monorepo/frontend/src/services/api/gruExplorerData.ts"
|
||||
]
|
||||
},
|
||||
{
|
||||
"packageKey": "gru-v2-ceurt",
|
||||
"canonicalSymbol": "cEURT",
|
||||
"submissionDisplaySymbol": "cEURT",
|
||||
"name": "Tether EUR (Compliant V2)",
|
||||
"address": "0x2bAFA83d8fF8BaE9505511998987D0659791605B",
|
||||
"decimals": 6,
|
||||
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cEURT.svg",
|
||||
"gruVersion": "v2",
|
||||
"verifiedSourcePaths": [
|
||||
"smom-dbis-138/scripts/mint-c-star-v2-wave1-138.sh",
|
||||
"explorer-monorepo/frontend/src/services/api/gruExplorerData.ts"
|
||||
]
|
||||
},
|
||||
{
|
||||
"packageKey": "gru-v2-cgbpc",
|
||||
"canonicalSymbol": "cGBPC",
|
||||
"submissionDisplaySymbol": "cGBPC",
|
||||
"name": "Pound Sterling (Compliant V2)",
|
||||
"address": "0x707508D223103f5D2d9EFBc656302c9d48878b29",
|
||||
"decimals": 6,
|
||||
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cGBPC.svg",
|
||||
"gruVersion": "v2",
|
||||
"verifiedSourcePaths": [
|
||||
"smom-dbis-138/scripts/mint-c-star-v2-wave1-138.sh",
|
||||
"explorer-monorepo/frontend/src/services/api/gruExplorerData.ts"
|
||||
]
|
||||
},
|
||||
{
|
||||
"packageKey": "gru-v2-cgbpt",
|
||||
"canonicalSymbol": "cGBPT",
|
||||
"submissionDisplaySymbol": "cGBPT",
|
||||
"name": "Tether GBP (Compliant V2)",
|
||||
"address": "0xee17c18E10E55ce23F7457D018aAa2Fb1E64B281",
|
||||
"decimals": 6,
|
||||
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cGBPT.svg",
|
||||
"gruVersion": "v2",
|
||||
"verifiedSourcePaths": [
|
||||
"smom-dbis-138/scripts/mint-c-star-v2-wave1-138.sh",
|
||||
"explorer-monorepo/frontend/src/services/api/gruExplorerData.ts"
|
||||
]
|
||||
},
|
||||
{
|
||||
"packageKey": "gru-v2-caudc",
|
||||
"canonicalSymbol": "cAUDC",
|
||||
"submissionDisplaySymbol": "cAUDC",
|
||||
"name": "Australian Dollar (Compliant V2)",
|
||||
"address": "0xfb37aFd415B70C5cEDc9bA58a72D517207b769Bb",
|
||||
"decimals": 6,
|
||||
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cAUDC.svg",
|
||||
"gruVersion": "v2",
|
||||
"verifiedSourcePaths": [
|
||||
"smom-dbis-138/scripts/mint-c-star-v2-wave1-138.sh",
|
||||
"explorer-monorepo/frontend/src/services/api/gruExplorerData.ts"
|
||||
]
|
||||
},
|
||||
{
|
||||
"packageKey": "gru-v2-cjpyc",
|
||||
"canonicalSymbol": "cJPYC",
|
||||
"submissionDisplaySymbol": "cJPYC",
|
||||
"name": "Japanese Yen (Compliant V2)",
|
||||
"address": "0x2c751bBE4f299b989b3A8c333E0A966cdcA6Fd98",
|
||||
"decimals": 6,
|
||||
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cJPYC.svg",
|
||||
"gruVersion": "v2",
|
||||
"verifiedSourcePaths": [
|
||||
"smom-dbis-138/scripts/mint-c-star-v2-wave1-138.sh",
|
||||
"explorer-monorepo/frontend/src/services/api/gruExplorerData.ts"
|
||||
]
|
||||
},
|
||||
{
|
||||
"packageKey": "gru-v2-cchfc",
|
||||
"canonicalSymbol": "cCHFC",
|
||||
"submissionDisplaySymbol": "cCHFC",
|
||||
"name": "Swiss Franc (Compliant V2)",
|
||||
"address": "0x60B7FB8e0DD0Be8595AD12Fe80AE832861Be747c",
|
||||
"decimals": 6,
|
||||
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cCHFC.svg",
|
||||
"gruVersion": "v2",
|
||||
"verifiedSourcePaths": [
|
||||
"smom-dbis-138/scripts/mint-c-star-v2-wave1-138.sh",
|
||||
"explorer-monorepo/frontend/src/services/api/gruExplorerData.ts"
|
||||
]
|
||||
},
|
||||
{
|
||||
"packageKey": "gru-v2-ccadc",
|
||||
"canonicalSymbol": "cCADC",
|
||||
"submissionDisplaySymbol": "cCADC",
|
||||
"name": "Canadian Dollar (Compliant V2)",
|
||||
"address": "0xe799033c87fE0CE316DAECcefBE3134CC74b76a9",
|
||||
"decimals": 6,
|
||||
"logoURI": "https://raw.githubusercontent.com/Order-of-Hospitallers/proxmox-cp/main/token-lists/logos/gru/cCADC.svg",
|
||||
"gruVersion": "v2",
|
||||
"verifiedSourcePaths": [
|
||||
"smom-dbis-138/scripts/mint-c-star-v2-wave1-138.sh",
|
||||
"explorer-monorepo/frontend/src/services/api/gruExplorerData.ts"
|
||||
]
|
||||
},
|
||||
{
|
||||
"packageKey": "gru-v2-cxauc",
|
||||
"canonicalSymbol": "cXAUC",
|
||||
"submissionDisplaySymbol": "cXAUC",
|
||||
"name": "Gold (Compliant V2)",
|
||||
"address": "0xF0F0F81bE3D033D8586bAfd2293e37eE2f615647",
|
||||
"decimals": 6,
|
||||
"logoURI": "https://explorer.d-bis.org/token-icons/cXAUC.png",
|
||||
"gruVersion": "v2",
|
||||
"unitOfAccount": "troy_ounce",
|
||||
"verifiedSourcePaths": [
|
||||
"smom-dbis-138/scripts/mint-c-star-v2-wave1-138.sh",
|
||||
"explorer-monorepo/frontend/src/services/api/gruExplorerData.ts"
|
||||
]
|
||||
},
|
||||
{
|
||||
"packageKey": "gru-v2-cxaut",
|
||||
"canonicalSymbol": "cXAUT",
|
||||
"submissionDisplaySymbol": "cXAUT",
|
||||
"name": "Tether XAU (Compliant V2)",
|
||||
"address": "0x89477E982847023aaB5C3492082cd1bB4b1b9Ef1",
|
||||
"decimals": 6,
|
||||
"logoURI": "https://explorer.d-bis.org/token-icons/cXAUT.png",
|
||||
"gruVersion": "v2",
|
||||
"unitOfAccount": "troy_ounce",
|
||||
"verifiedSourcePaths": [
|
||||
"smom-dbis-138/scripts/mint-c-star-v2-wave1-138.sh",
|
||||
"explorer-monorepo/frontend/src/services/api/gruExplorerData.ts"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
30
docs/04-configuration/pr-ready/eip155-138-package/README.md
Normal file
30
docs/04-configuration/pr-ready/eip155-138-package/README.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Defi Oracle Meta Mainnet PR-Ready Package
|
||||
|
||||
**Chain:** Defi Oracle Meta Mainnet
|
||||
**Chain ID:** 138
|
||||
**CAIP-2:** `eip155:138`
|
||||
|
||||
This directory is the handoff bundle for external chain-listing and wallet-support work.
|
||||
|
||||
## Contents
|
||||
|
||||
| File | Purpose |
|
||||
| --- | --- |
|
||||
| `eip155-138.chainlist.json` | Chainlist / `ethereum-lists/chains` submission copy |
|
||||
| `trust-wallet-registry-chain138.json` | Trust Wallet Wallet Core registry entry copy |
|
||||
| `manifest.json` | Package metadata and canonical source paths |
|
||||
|
||||
## Canonical sources
|
||||
|
||||
The editable source files live one directory up:
|
||||
|
||||
- `../eip155-138.json`
|
||||
- `../trust-wallet-registry-chain138.json`
|
||||
|
||||
Do not manually edit the copies in this package unless you are intentionally preparing a one-off external handoff. Prefer updating the canonical sources and rebuilding the package.
|
||||
|
||||
## Rebuild
|
||||
|
||||
```bash
|
||||
bash scripts/verify/build-chain138-pr-ready-package.sh
|
||||
```
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"name": "Defi Oracle Meta Mainnet",
|
||||
"chain": "dfiometa",
|
||||
"rpc": [
|
||||
"https://rpc-http-pub.d-bis.org",
|
||||
"wss://rpc-ws-pub.d-bis.org",
|
||||
"https://rpc.d-bis.org",
|
||||
"wss://rpc.d-bis.org",
|
||||
"https://rpc2.d-bis.org",
|
||||
"wss://ws.rpc.d-bis.org",
|
||||
"wss://ws.rpc2.d-bis.org",
|
||||
"https://rpc.public-0138.defi-oracle.io",
|
||||
"wss://rpc.public-0138.defi-oracle.io",
|
||||
"https://rpc.defi-oracle.io",
|
||||
"wss://wss.defi-oracle.io"
|
||||
],
|
||||
"features": [
|
||||
{
|
||||
"name": "EIP155"
|
||||
},
|
||||
{
|
||||
"name": "EIP1559"
|
||||
},
|
||||
{
|
||||
"name": "EIP2718"
|
||||
},
|
||||
{
|
||||
"name": "EIP2930"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"nativeCurrency": {
|
||||
"name": "Ether",
|
||||
"symbol": "ETH",
|
||||
"decimals": 18
|
||||
},
|
||||
"infoURL": "https://d-bis.org",
|
||||
"shortName": "dfio-meta-main",
|
||||
"chainId": 138,
|
||||
"networkId": 138,
|
||||
"slip44": 60,
|
||||
"ens": {
|
||||
"registry": "0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85"
|
||||
},
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Blockscout",
|
||||
"url": "https://explorer.d-bis.org",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "Defi Oracle Meta Mainnet PR-Ready Package",
|
||||
"chainId": 138,
|
||||
"caip2": "eip155:138",
|
||||
"generatedBy": "scripts/verify/build-chain138-pr-ready-package.sh",
|
||||
"canonicalSources": {
|
||||
"chainlist": "docs/04-configuration/pr-ready/eip155-138.json",
|
||||
"trustWalletRegistry": "docs/04-configuration/pr-ready/trust-wallet-registry-chain138.json"
|
||||
},
|
||||
"artifacts": {
|
||||
"chainlist": "docs/04-configuration/pr-ready/eip155-138-package/eip155-138.chainlist.json",
|
||||
"trustWalletRegistry": "docs/04-configuration/pr-ready/eip155-138-package/trust-wallet-registry-chain138.json"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": "dfiometa",
|
||||
"name": "Defi Oracle Meta Mainnet",
|
||||
"coinId": 10000138,
|
||||
"symbol": "ETH",
|
||||
"decimals": 18,
|
||||
"blockchain": "Ethereum",
|
||||
"derivation": [
|
||||
{ "path": "m/44'/60'/0'/0/0" }
|
||||
],
|
||||
"curve": "secp256k1",
|
||||
"publicKeyType": "secp256k1Extended",
|
||||
"chainId": "138",
|
||||
"addressHasher": "keccak256",
|
||||
"explorer": {
|
||||
"url": "https://explorer.d-bis.org",
|
||||
"txPath": "/tx/",
|
||||
"accountPath": "/address/",
|
||||
"sampleTx": "0xbc36c6050ea6b6f484009a1fcd8f8c6c2c2bd629661bc75fa5e84829c662a604",
|
||||
"sampleAccount": "0x4A666F96fC8764181194447A7dFdb7d471b301C8"
|
||||
},
|
||||
"info": {
|
||||
"url": "https://d-bis.org",
|
||||
"source": "https://gitea.d-bis.org/d-bis",
|
||||
"rpc": "https://rpc-http-pub.d-bis.org",
|
||||
"documentation": "https://d-bis.org"
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,12 @@
|
||||
},
|
||||
{
|
||||
"name": "EIP1559"
|
||||
},
|
||||
{
|
||||
"name": "EIP2718"
|
||||
},
|
||||
{
|
||||
"name": "EIP2930"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
@@ -43,4 +49,4 @@
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,36 @@
|
||||
| **Required / optional / recommended (full plan)** | [00-meta/COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md](00-meta/COMPLETE_REQUIRED_OPTIONAL_RECOMMENDED_INDEX.md) |
|
||||
| **Single task list** | [00-meta/TODOS_CONSOLIDATED.md](00-meta/TODOS_CONSOLIDATED.md) |
|
||||
| **Execution: multiple routes + liquidity (all + optional, suggested order)** | [00-meta/EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md](00-meta/EXECUTION_CHECKLIST_MULTIPLE_ROUTES_AND_LIQUIDITY.md) |
|
||||
| **Source to CEX execution plan** | [03-deployment/SOURCE_TO_CEX_EXECUTION_PLAN.md](03-deployment/SOURCE_TO_CEX_EXECUTION_PLAN.md) — operator bridge, normalization, and exchange-handoff plan |
|
||||
| **Source to CEX production readiness** | [03-deployment/SOURCE_TO_CEX_PRODUCTION_READINESS.md](03-deployment/SOURCE_TO_CEX_PRODUCTION_READINESS.md) — repo-native readiness gate for immediate production |
|
||||
| **Immediate live production task list: source to CEX** | [03-deployment/IMMEDIATE_LIVE_PRODUCTION_TASK_LIST_SOURCE_TO_CEX.md](03-deployment/IMMEDIATE_LIVE_PRODUCTION_TASK_LIST_SOURCE_TO_CEX.md) — task list with remaining live blockers called out |
|
||||
| **Crypto.com OTC before vs after matrix** | [03-deployment/CRYPTO_COM_OTC_BEFORE_AFTER_OPERATOR_MATRIX.md](03-deployment/CRYPTO_COM_OTC_BEFORE_AFTER_OPERATOR_MATRIX.md) — strict operator comparison of the current ecosystem versus the state after a real Crypto.com OTC sink is connected |
|
||||
| **Provider-facing source to CEX package** | [03-deployment/PROVIDER_FACING_PACKAGE_SOURCE_TO_CEX.md](03-deployment/PROVIDER_FACING_PACKAGE_SOURCE_TO_CEX.md) — strict provider-facing package covering expectations, flow presentation, questions, and a first 30-day ramp plan |
|
||||
| **Mr. Promod Uniswap V2 liquidity program** | [03-deployment/PROMOD_UNISWAP_V2_LIQUIDITY_PROGRAM.md](03-deployment/PROMOD_UNISWAP_V2_LIQUIDITY_PROGRAM.md) — wrapped-depth-first Uniswap V2 rollout for cW* and cWAUSDT on bridged public networks |
|
||||
| **Mr. Promod Uniswap V2 promotion gates** | [03-deployment/PROMOD_UNISWAP_V2_PROMOTION_GATES.md](03-deployment/PROMOD_UNISWAP_V2_PROMOTION_GATES.md) — exact per-chain env vars and registry records required before any live Uniswap V2 pool can be promoted |
|
||||
| **Mr. Promod Uniswap V2 live pair discovery** | [03-deployment/PROMOD_UNISWAP_V2_LIVE_PAIR_DISCOVERY.md](03-deployment/PROMOD_UNISWAP_V2_LIVE_PAIR_DISCOVERY.md) — env-ready chain scan for live cW Uniswap V2-compatible pairs and the path to record them |
|
||||
| **Mr. Promod Uniswap V2 first deployment target matrix** | [03-deployment/PROMOD_UNISWAP_V2_FIRST_DEPLOYMENT_TARGET_MATRIX.md](03-deployment/PROMOD_UNISWAP_V2_FIRST_DEPLOYMENT_TARGET_MATRIX.md) — exact first pair per chain, why it goes first, required tokens, and post-deploy commands |
|
||||
| **Mr. Promod Uniswap V2 phase order** | [03-deployment/PROMOD_UNISWAP_V2_PHASE_ORDER.md](03-deployment/PROMOD_UNISWAP_V2_PHASE_ORDER.md) — strict rollout order: phase 1 core rail, phase 2 full cW* wrapped mesh, phase 3 settlement rails |
|
||||
| **Mr. Promod Uniswap V2 phase 2 operator sequence** | [03-deployment/PROMOD_UNISWAP_V2_PHASE2_OPERATOR_SEQUENCE.md](03-deployment/PROMOD_UNISWAP_V2_PHASE2_OPERATOR_SEQUENCE.md) — exact chain-by-chain phase-2 cW* wrapped-mesh rollout with per-pair probe, create, and deploy blocks |
|
||||
| **Mr. Promod Uniswap V2 phase 2 wave 2 operator sequence** | [03-deployment/PROMOD_UNISWAP_V2_PHASE2_WAVE2_OPERATOR_SEQUENCE.md](03-deployment/PROMOD_UNISWAP_V2_PHASE2_WAVE2_OPERATOR_SEQUENCE.md) — exact chain-by-chain rollout for the remaining wrapped-mesh assets after wave 1 |
|
||||
| **Mr. Promod Uniswap V2 phase 2 wave 2 operator paste pack** | [03-deployment/PROMOD_UNISWAP_V2_PHASE2_WAVE2_OPERATOR_PASTE_PACK.md](03-deployment/PROMOD_UNISWAP_V2_PHASE2_WAVE2_OPERATOR_PASTE_PACK.md) — flat paste-ready operator pack for every remaining wrapped-mesh pair in wave 2 |
|
||||
| **Mr. Promod Uniswap V2 phase 2 wave 2 shell paste pack** | [03-deployment/PROMOD_UNISWAP_V2_PHASE2_WAVE2_SHELL_PASTE_PACK.sh](03-deployment/PROMOD_UNISWAP_V2_PHASE2_WAVE2_SHELL_PASTE_PACK.sh) — pure shell-only sequence for every remaining wrapped-mesh pair in wave 2 |
|
||||
| **Mr. Promod Uniswap V2 phase 2 operator paste pack** | [03-deployment/PROMOD_UNISWAP_V2_PHASE2_OPERATOR_PASTE_PACK.md](03-deployment/PROMOD_UNISWAP_V2_PHASE2_OPERATOR_PASTE_PACK.md) — flat paste-ready operator pack for every phase-2 wrapped-mesh pair in execution order |
|
||||
| **Mr. Promod Uniswap V2 phase 2 shell paste pack** | [03-deployment/PROMOD_UNISWAP_V2_PHASE2_SHELL_PASTE_PACK.sh](03-deployment/PROMOD_UNISWAP_V2_PHASE2_SHELL_PASTE_PACK.sh) — pure shell-only sequence for phase-2 wrapped-mesh pair creation and seeding |
|
||||
| **Mr. Promod Uniswap V2 phase 2 wave 1 completion status** | [03-deployment/PROMOD_UNISWAP_V2_PHASE2_WAVE1_COMPLETION_STATUS.md](03-deployment/PROMOD_UNISWAP_V2_PHASE2_WAVE1_COMPLETION_STATUS.md) — live reserve-backed completion report for the six wave-1 wrapped pairs on all target networks, plus current explorer-publication blockers |
|
||||
| **Mr. Promod GRU v2 full mesh gap report** | [03-deployment/PROMOD_GRU_V2_FULL_MESH_GAP_REPORT.md](03-deployment/PROMOD_GRU_V2_FULL_MESH_GAP_REPORT.md) — strict per-network gap report for the remaining cW mesh across DODO PMM, Uniswap V2, Balancer, Curve, and other venue surfaces |
|
||||
| **Chain 138 -> Wemix 1111 bridge completion checklist** | [03-deployment/CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md](03-deployment/CHAIN_138_TO_WEMIX_1111_BRIDGE_COMPLETION_CHECKLIST.md) — exact operator checklist for deploying the WEMIX WETH bridges, wiring destinations, funding LINK, and promoting `1111` out of deferred state |
|
||||
| **WEMIX bridge verification status** | [03-deployment/WEMIX_BRIDGE_VERIFICATION_STATUS.md](03-deployment/WEMIX_BRIDGE_VERIFICATION_STATUS.md) — current explorer-publication state for the deployed WEMIX bridges and the repo-native verification command |
|
||||
| **Mr. Promod Uniswap V2 phase 1 execution checklist** | [03-deployment/PROMOD_UNISWAP_V2_PHASE1_EXECUTION_CHECKLIST.md](03-deployment/PROMOD_UNISWAP_V2_PHASE1_EXECUTION_CHECKLIST.md) — exact chain-by-chain operator checklist for the first full `cWUSDT/cWUSDC` rollout |
|
||||
| **Mr. Promod Uniswap V2 phase 1 funding readiness** | [03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_READINESS.md](03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_READINESS.md) — live deployer-wallet balances and max equal-sided seed size for each `cWUSDT/cWUSDC` target chain |
|
||||
| **Mr. Promod Uniswap V2 phase 1 funding bundle** | [03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_BUNDLE.md](03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_BUNDLE.md) — per-chain missing-token/gas bundle and exact post-funding deploy block for phase 1 |
|
||||
| **Mr. Promod Uniswap V2 phase 1 funding actions** | [03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_ACTIONS.md](03-deployment/PROMOD_UNISWAP_V2_PHASE1_FUNDING_ACTIONS.md) — strict per-chain mint-before-seed or seed-now action plan, with bridge-possible notes tied to the cW bridge runbooks |
|
||||
| **Mr. Promod Uniswap V2 phase 1 bridge-from-138 matrix** | [03-deployment/PROMOD_UNISWAP_V2_PHASE1_BRIDGE_FROM_138_MATRIX.md](03-deployment/PROMOD_UNISWAP_V2_PHASE1_BRIDGE_FROM_138_MATRIX.md) — strict destination shortfall matrix showing how much cUSDT/cUSDC Chain 138 inventory could source for the remaining phase-1 rollout |
|
||||
| **Mr. Promod Uniswap V2 phase 1 bridge 3x matrix** | [03-deployment/PROMOD_UNISWAP_V2_PHASE1_BRIDGE_3X_MATRIX.md](03-deployment/PROMOD_UNISWAP_V2_PHASE1_BRIDGE_3X_MATRIX.md) — strict 3x bridge sizing plan from Chain 138 for the remaining phase-1 destination shortfalls |
|
||||
| **Mr. Promod Uniswap V2 phase 1 bridge 3x operator packet** | [03-deployment/PROMOD_UNISWAP_V2_PHASE1_BRIDGE_3X_OPERATOR_PACKET.md](03-deployment/PROMOD_UNISWAP_V2_PHASE1_BRIDGE_3X_OPERATOR_PACKET.md) — strict operator packet with 3x bridge amounts, destination cW addresses, bridge env, and post-funding deploy block per chain |
|
||||
| **Mr. Promod Uniswap V2 phase 1 bridge-or-mint runbook** | [03-deployment/PROMOD_UNISWAP_V2_PHASE1_BRIDGE_OR_MINT_RUNBOOK.md](03-deployment/PROMOD_UNISWAP_V2_PHASE1_BRIDGE_OR_MINT_RUNBOOK.md) — strict runbook that ties the 3x operator packet to bridge preflight, exact mint fallback blocks, and post-funding deploy blocks |
|
||||
| **Mr. Promod Uniswap V2 phase 1 remaining 8 operator paste pack** | [03-deployment/PROMOD_UNISWAP_V2_PHASE1_REMAINING_8_OPERATOR_PASTE_PACK.md](03-deployment/PROMOD_UNISWAP_V2_PHASE1_REMAINING_8_OPERATOR_PASTE_PACK.md) — one flat paste-ready pack for the remaining eight phase-1 chains after `1` and `137` |
|
||||
| **Mr. Promod Uniswap V2 phase 1 remaining 8 shell paste pack** | [03-deployment/PROMOD_UNISWAP_V2_PHASE1_REMAINING_8_SHELL_PASTE_PACK.sh](03-deployment/PROMOD_UNISWAP_V2_PHASE1_REMAINING_8_SHELL_PASTE_PACK.sh) — pure shell-only paste pack for the remaining eight phase-1 chains with no markdown headings |
|
||||
| **All additional recommendations (table)** | [00-meta/ADDITIONAL_RECOMMENDATIONS_TABLE.md](00-meta/ADDITIONAL_RECOMMENDATIONS_TABLE.md) — consolidated table of every recommendation with description and command/doc |
|
||||
| **Dotenv & markdown audit (gaps + recommendations)** | [00-meta/DOTENV_AND_MARKDOWN_AUDIT_GAPS_AND_RECOMMENDATIONS.md](00-meta/DOTENV_AND_MARKDOWN_AUDIT_GAPS_AND_RECOMMENDATIONS.md) — required env/markdown info, run results, gaps, recommendations |
|
||||
| **Next steps (concise)** | [00-meta/NEXT_STEPS_LIST.md](00-meta/NEXT_STEPS_LIST.md) — bridge/swap/Phase C status, quick commands |
|
||||
|
||||
Reference in New Issue
Block a user