# DEX, Liquidity Pools, and Cross-Chain Contracts — What’s Deployed vs Needed **Purpose:** Answer what contracts (and code) are needed beyond current deployments for full Dodo PMM, Uniswap, cross-chain liquidity pools, multi-token multi-chain routing, and atomic swaps. Also clarify TransactionMirror deployment status. **Related:** [ADDRESS_MATRIX_AND_STATUS](ADDRESS_MATRIX_AND_STATUS.md) | [CONTRACTS_TO_DEPLOY](CONTRACTS_TO_DEPLOY.md) | [CONTRACT_DEPLOYMENT_RUNBOOK](../03-deployment/CONTRACT_DEPLOYMENT_RUNBOOK.md) | [PLACEHOLDERS_AND_TBD](../PLACEHOLDERS_AND_TBD.md) | [OPERATOR_OPTIONAL_CHECKLIST](OPERATOR_OPTIONAL_CHECKLIST.md) §6 --- ## 1. TransactionMirror — Deployment Status | Chain | Status | Address | Notes | |-------|--------|---------|--------| | **Ethereum Mainnet** | Deployed | `0x4CF42c4F1dBa748601b8938be3E7ABD732E87cE9` | Receives mirrored Chain 138 transactions from the Transaction Mirroring Service. Frontend-dapp uses this address. Etherscan verification may still be pending (see docs/06-besu/TRANSACTIONMIRROR_VERIFICATION_STATUS.md). | | **Chain 138** | **Not deployed** | — | Optional: deploy when mirror feature is needed on Chain 138. Script can hit Forge constructor-args decode bug; use `forge create` or `./scripts/deployment/deploy-transaction-mirror-chain138.sh`. Not included in the 36-address on-chain check. | **Conclusion:** TransactionMirror is **fully deployed on Mainnet** (and used by the Transaction Mirroring Service). On **Chain 138** it is **not** deployed; it is optional and can be deployed when needed via the helper script. --- ## 2. Currently Deployed (Relevant to DEX / Routing / Cross-Chain) - **Chain 138:** CCIP bridges (CCIPWETH9/10), UniversalCCIPBridge, BridgeOrchestrator, AlltraAdapter, Lockbox138 (trustless), PaymentChannelManager, GenericStateChannelManager, AddressMapper, MirrorManager, Vault/Reserve system, MerchantSettlementRegistry, WithdrawalEscrow, phased core, CREATE2 deterministic set, **DODOPMMIntegration** (`0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D`, Mock DVM — pools not yet created). See [CONTRACT_ADDRESSES_REFERENCE](CONTRACT_ADDRESSES_REFERENCE.md) and [ADDRESS_MATRIX_AND_STATUS](ADDRESS_MATRIX_AND_STATUS.md). - **alltra-lifi-settlement:** MerchantSettlementRegistry, WithdrawalEscrow (Chain 138). --- ## 3. Contracts and Code Still Needed for Full DEX / Liquidity / Routing ### 3.1 Dodo PMM | Item | Location | Status | What’s needed | |------|----------|--------|----------------| | **DODOPMMIntegration** | `smom-dbis-138/contracts/dex/DODOPMMIntegration.sol` | **Deployed** (Chain 138: `0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D`, Mock DVM) | Create pools via `createCUSDTCUSDCPool`, `createCUSDTUSDTPool`, `createCUSDCUSDCPool`; add liquidity. See [PMM_DEX_ROUTING_STATUS](PMM_DEX_ROUTING_STATUS.md), [DODO_PMM_INTEGRATION](../../smom-dbis-138/docs/integration/DODO_PMM_INTEGRATION.md). | | **DODOPMMProvider** | `smom-dbis-138/contracts/liquidity/providers/DODOPMMProvider.sol` | Placeholder | Implement oracle-driven `optimizePoolParameters` (or document flow); complete when DODO is integrated. See [NOT_CHANGED_BY_DESIGN_ACTIONABLE_STEPS](../00-meta/NOT_CHANGED_BY_DESIGN_ACTIONABLE_STEPS.md) §3. | | **Test** | `test/dex/DODOPMMIntegration.t.sol.bak` | Renamed to .bak | Restore/fix and re-enable when DODO integration is active (mockCall ambiguity was reason for .bak). | ### 3.2 Uniswap / Balancer / EnhancedSwapRouter | Item | Location | Status | What’s needed | |------|----------|--------|----------------| | **EnhancedSwapRouter** | `smom-dbis-138/contracts/bridge/trustless/EnhancedSwapRouter.sol` | Exists; placeholders | Set Uniswap V3 quoter address and Balancer poolId when pools exist on chain. Deploy via `script/bridge/trustless/DeployEnhancedSwapRouter.s.sol`. Script is mainnet-oriented; for Chain 138 set quoter/pool env when pools exist. See [PLACEHOLDERS_AND_TBD](../PLACEHOLDERS_AND_TBD.md), [REQUIRED_FIXES_UPDATES_GAPS](../REQUIRED_FIXES_UPDATES_GAPS.md) §4. | | **Uniswap/Curve services** | `alltra-lifi-settlement/src/payments/uniswap/uniswap.service.ts`, `curve.service.ts` | Stubs | Implement when Uniswap/Curve pools exist on 138/651940. See [TEZOS_CCIP_REMAINING_ITEMS](../07-ccip/TEZOS_CCIP_REMAINING_ITEMS.md) §8. | ### 3.3 Full Trustless Bridge Stack (Cross-Chain Liquidity / Atomic Swaps) Lockbox138 is deployed on Chain 138. The rest of the trustless stack is **not** deployed (placeholders in config when needed): | Contract | Script | Purpose | |----------|--------|---------| | **InboxETH** | `script/bridge/trustless/DeployTrustlessBridge.s.sol` (or DeployCompleteSystem) | Inbox for cross-chain messages | | **BondManager** | same | Bond management | | **ChallengeManager** | same | Fraud proofs / challenges | | **LiquidityPoolETH** | same | Liquidity pool for bridge | | **SwapRouter** | `contracts/bridge/trustless/SwapRouter.sol` | Swap routing | | **SwapBridgeSwapCoordinator** / **BridgeSwapCoordinator** | `DeploySwapBridgeSwapCoordinator.s.sol`, etc. | Coordinates swap + bridge for atomic flows | | **MULTISIG** | (config) | Admin / relayer multisig | See [ADDRESS_MATRIX_AND_STATUS](ADDRESS_MATRIX_AND_STATUS.md) §4: “INBOX_ETH, BOND_MANAGER, CHALLENGE_MANAGER, LIQUIDITY_POOL, SWAP_ROUTER, BRIDGE_SWAP_COORDINATOR, MULTISIG — still placeholders in config when needed.” ### 3.4 Multi-Token Multi-Chain Routing (Off-Chain / Services) | Component | Location | Status | What’s needed | |-----------|----------|--------|----------------| | **LiFi** | alltra-lifi-settlement | Used | Route building; ensure 138/651940/42793 supported in chains config. | | **Jumper** | alltra-lifi-settlement | Stub | Implement real API when Jumper supports 138, 651940, 42793. See [TEZOS_CCIP_REMAINING_ITEMS](../07-ccip/TEZOS_CCIP_REMAINING_ITEMS.md) §4. | | **Quote service** | smom-dbis-138 orchestration | FABRIC_CHAIN_ID=999 placeholder | Set real Fabric chain ID when Fabric is live. | | **Token Aggregation API** | smom-dbis-138/services/token-aggregation | Deployed | Serves canonical tokens and report endpoints; DEX factory config (Uniswap V2/V3, DODO) per chain when pools exist. | ### 3.5 Other Contracts (Optional / When Needed) - **PaymentChannelManager / GenericStateChannelManager:** Deployed on Chain 138. - **Trustless bridge (mainnet side):** Deploy from `script/bridge/trustless/` for mainnet; document addresses per chain. - **eMoney / smart accounts:** `script/emoney/`, `script/smart-accounts/` — deploy when those features are required. --- ## 4. Summary Table — “What’s Needed” for Full Capability | Capability | Deployed | Still needed | |------------|----------|--------------| | **Cross-chain bridge (CCIP)** | CCIP WETH9/10, UniversalCCIPBridge, AlltraAdapter | — | | **TransactionMirror** | Mainnet (0x4CF42...); optional on 138 | Chain 138: run deploy script if needed; Mainnet: confirm Etherscan verification | | **Dodo PMM liquidity** | DODOPMMIntegration deployed (Mock DVM); pools not created | Create PMM pools; add liquidity; deploy DODOPMMProvider and register pools | | **Uniswap/Balancer swaps** | — | Pools on 138/651940; deploy EnhancedSwapRouter with quoter/poolId; implement uniswap.service when pools exist | | **Full trustless atomic swap** | Lockbox138 | InboxETH, BondManager, ChallengeManager, LiquidityPoolETH, SwapRouter, BridgeSwapCoordinator, MULTISIG | | **Multi-chain routing** | LiFi (and config) | Jumper API when supported; Curve/Uniswap stubs when pools exist; quote service Fabric chainId | --- ## 5. Commands and References - **Deploy TransactionMirror (Chain 138):** `./scripts/deployment/deploy-transaction-mirror-chain138.sh` (then set `TRANSACTION_MIRROR_ADDRESS` in .env). See [CONTRACT_DEPLOYMENT_RUNBOOK](../03-deployment/CONTRACT_DEPLOYMENT_RUNBOOK.md) § TransactionMirror. - **Deploy EnhancedSwapRouter / Dodo:** [OPERATOR_OPTIONAL_CHECKLIST](OPERATOR_OPTIONAL_CHECKLIST.md) §6 — `script/deploy/dex/`, `script/bridge/trustless/DeployEnhancedSwapRouter.s.sol`; Chain 138: `--with-gas-price 1000000000`. - **On-chain check (36 addresses):** `./scripts/verify/check-contracts-on-chain-138.sh [RPC_URL]` — does not include TransactionMirror or DODO/EnhancedSwapRouter.