Add DODO-only EnhancedSwapRouterV2 routing helpers

This commit is contained in:
defiQUG
2026-04-29 23:50:26 -07:00
parent 1a14622b22
commit 6aaa100bbc
12 changed files with 564 additions and 173 deletions

View File

@@ -0,0 +1,41 @@
# Chain 138 Atomic Swap WETH -> cUSDC Prep Route
Date: 2026-04-29
## Scope
Published the executable Chain 138 prep lane required for Atomic Swap to route native ETH into the live cUSDC -> cWUSDC GRU bridge lane:
1. Wrap native ETH into WETH.
2. Swap WETH -> cUSDC on Chain 138 through `EnhancedSwapRouterV2`.
3. Bridge cUSDC on Chain 138 -> cWUSDC on Ethereum Mainnet.
The earlier DODO PMM route quoted successfully but reverted during execution for WETH input. This report records the replacement route that was validated by simulating `EnhancedSwapRouterV2.swapTokenToToken`.
## Live Router Configuration
- EnhancedSwapRouterV2: `0xa421706768aeb7fafa2d912c5e10824ef3437ad4`
- FixedRateLiquidityProvider: `0x16E07328C27f5adc6BCA1DefD6B3957E89Ca0eB2`
- Token in: WETH `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`
- Token out: cUSDC `0xf22258f57794CC8E06237084b353Ab30fFfa640b`
- Rate: `2277318023` raw cUSDC per `1e18` WETH
- Provider cUSDC funding: `20,000,000` cUSDC
Transactions:
- Provider deployment: `0xf8b6738e10318055025bc93079eb2902c37c1462f16f4907c92ce00b883f16bc`
- Provider cUSDC funding: `0xc44ef055a53e02ae3b701b397eb312fbe3b861c964457d749c8106bbf2f374c1`
- Router WETH -> cUSDC provider route: `0x16600cda551ae505acaf9491edbc2515806cfe20daa7e643b258577d05d06122`
## Verification
- `quoteConfiguredProvider(WETH, cUSDC, 2500e18, Dodo)` returns `5,693,295.0575` cUSDC and executable `true`.
- `swapTokenToToken(WETH, cUSDC, 2500e18, 5635168323541)` simulates successfully from the deployer and returns `5,693,295.0575` cUSDC.
- `swapTokenToToken(WETH, cUSDC, 300e18, 1)` simulates successfully and returns `683,195.4069` cUSDC.
- Atomic Swap public registry includes `chain-138-swap-enhanced-router-v2-weth-cusdc-0x16e07328`.
- Atomic Swap live browser check for `300 ETH` on Chain 138 -> `cWUSDC` on Ethereum Mainnet shows `Canonical bridge lane` and `Bridge ready`.
- Ethereum Mainnet cWUSDC bridge `0x2bF74583206A49Be07E0E8A94197C12987AbD7B5` has the cWUSDC `MINTER_ROLE`.
- `ccip-relay.service` is active on `192.168.11.11`.
- `npm run validate:manifest` passed.
- `npm run build` passed.
- `npm run audit:live` passed for `https://atomic-swap.defi-oracle.io/`.

View File

@@ -0,0 +1,45 @@
# Chain 138 EnhancedSwapRouterV2 DODO-Only Routing Broadcast
Date: 2026-04-29 20:22 PDT
Router: `0xF1c93F54A5C2fc0d7766Ccb0Ad8f157DFB4C99Ce`
Signer: `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
Purpose: set the `EnhancedSwapRouterV2` size-based fallback routing lists to DODO-only for size categories `0`, `1`, and `2`, then disable non-DODO provider flags. This preserves exact DODO-family configured routes while avoiding mixed-provider fallback discovery for DODO-backed pairs.
The three calls were simulated with `cast call` before broadcast. All simulations returned `0x`.
| Size category | Call | Tx hash | Block | Status | Gas used |
|---:|---|---|---:|---|---:|
| 0 | `setRoutingConfig(0, [Dodo])` | `0xbb13f084f401aad0ffe57e81e541fd6596b71402db46ee19ee465966471156f7` | 4562687 | success | 32944 |
| 1 | `setRoutingConfig(1, [Dodo])` | `0xb6eb6aa76ded96b7105fbd99be8720be15a426c094d70b1cf8c7e53de173af27` | 4562688 | success | 32956 |
| 2 | `setRoutingConfig(2, [Dodo])` | `0x94cd1d180334041d11dbc4187b8a54f72b7957b26bc5b1c2b0a4c2325df8c53e` | 4562689 | success | 32956 |
Receipt evidence: each transaction emitted `RoutingConfigUpdated(uint256,Provider[])` with the size category as the indexed topic and one provider element `0` (`RouteTypesV2.Provider.Dodo`) in event data.
Additional provider toggles were broadcast after a read check showed non-DODO providers had been re-enabled by earlier pilot wiring.
| Provider | Call | Tx hash | Block | Status | Gas used |
|---:|---|---|---:|---|---:|
| 1 | `setProviderEnabled(UniswapV3, false)` | `0x8795c878dbe667ca35c2dab603bc7ae9f0de3c44958a14c0f8a573db822531a0` | 4562720 | success | 25845 |
| 2 | `setProviderEnabled(Balancer, false)` | `0xc1eb8c77a0a8bf89df762931a8f5dd69e7ef1344af60b71e2fc7cdcbb3c62c62` | 4562721 | success | 25845 |
| 3 | `setProviderEnabled(Curve, false)` | `0x4615b6a9345e78cc4adfdac494eafa834437e87963d97038caa6d86f64c2ffd2` | 4562722 | success | 25845 |
| 4 | `setProviderEnabled(OneInch, false)` | `0xd0dceb53c470adf81cbea5673836b4d1a034da778545039ed10431bf86c4ae32` | 4562723 | success | 25845 |
| 5 | `setProviderEnabled(Partner, false)` | `0x24ccfad90426ab33981ebdddbd826eca79b99301a6c792b5946c10f53f168f96` | 4562724 | success | 27845 |
Final provider flag check:
| Provider ID | Provider | Enabled |
|---:|---|---|
| 0 | Dodo | `true` |
| 1 | UniswapV3 | `false` |
| 2 | Balancer | `false` |
| 3 | Curve | `false` |
| 4 | OneInch | `false` |
| 5 | Partner | `false` |
| 6 | DodoV3 | `true` |
Functional read check: `quoteConfiguredProviders(cUSDT, cUSDC, 1e18)` returned one DODO provider quote candidate only.
Note: these were broadcast with direct `cast send`, not `forge script --broadcast`, so there is no Foundry broadcast JSON artifact for these calls.

View File

@@ -0,0 +1,66 @@
# Chain 138 EnhancedSwapRouterV2 Redeploy And Cutover
Date: 2026-04-29 PDT
Signer: `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
Purpose: redeploy `EnhancedSwapRouterV2` with the new `quoteConfiguredProvider(...)` single-provider quote path, then cut the Chain 138 V2 router inventory to the new address.
## Deployed Contracts
| Contract | Address | Tx hash | Block |
|---|---|---|---:|
| DODO RouteExecutorAdapter | `0xa505eaee26c6503c63eaa6b4b05a28bb40097f25` | `0xa1aeada5d6e1b351513a72c133e22d5dce8c6b3f1b55723b3d0ab07cb534e55f` | 4563327 |
| DODO V3 RouteExecutorAdapter | `0x046ce4030af57b3057c052a48ebaacfac74ec1b2` | `0x9f6f126805170d50ab57c33f5afeb66a6b965d00a564a99cf842e0e7d2aa43d6` | 4563328 |
| Uniswap V3 RouteExecutorAdapter | `0x51f6fc9b76f2b319837118d93daeb96fae09da56` | `0xccfed88aa3b1cb555be27292b067de4f8871b4fdb77158430800d78e2a677ad6` | 4563329 |
| Balancer RouteExecutorAdapter | `0xb36b60a16f8ac53379c7547841cb74cbc1d490d5` | `0x923e771d70e94ee8cb203f4a105141cdf5763b2c02bf36f1cfbd950dd4bba8cf` | 4563330 |
| Curve RouteExecutorAdapter | `0xd1af10f0d2d5fafc55dee47560e985afa1ee7f90` | `0xeb004c4b4bb5741ec077bb23f30bdedc60e00f562cd222a0de997696aaffe430` | 4563331 |
| 1inch RouteExecutorAdapter | `0x0e1b66e7997dcef2e271fc28eb8a38520eb7aad0` | `0xb3e05ead43dd640db296d7fddcb72289deba6dc771dfb45bd98228c1a89d9cf7` | 4563332 |
| EnhancedSwapRouterV2 | `0xa421706768aeb7fafa2d912c5e10824ef3437ad4` | `0xe3430bcfcf7809ca6574f9ae22d243f5945b2e2ee186c4da5f25f1cdd4c843b4` | 4563333 |
| IntentBridgeCoordinatorV2 | `0x7aa03fa96e884ec503510d725e68301ff9fe53c1` | `0x9a7c24aa58dbe303ec9ee4e98ca67eb23af894de7ab704de9a52d6535d7ad759` | 4563334 |
## Router Configuration
The new router was configured with:
- Adapter mappings for DODO, DODO V3, Uniswap V3, Balancer, Curve, and 1inch.
- DODO-only size routing:
- `setRoutingConfig(0, [Dodo])`: `0x226eda46936e8d1c89208ae45ca5777dd224a6404eb7de1b5e7a8e614b0a9934`
- `setRoutingConfig(1, [Dodo])`: `0xda55d6139c1862870ac502f6c14fa6001ea65bf8279a9dfbd3a19cca82699e3a`
- `setRoutingConfig(2, [Dodo])`: `0x4780de510031c9f66d5be3630391a253f3650dc089e0b54fdd28d293fbb23a74`
- Bidirectional DODO provider routes for cUSDT/cUSDC, cUSDT/USDT, cUSDC/USDC, cUSDT/cXAUC, cUSDC/cXAUC, and cEURT/cXAUC.
- Bidirectional DODO V3 provider route for WETH10/USDT.
Final provider flag check:
| Provider ID | Provider | Enabled |
|---:|---|---|
| 0 | Dodo | `true` |
| 1 | UniswapV3 | `false` |
| 2 | Balancer | `false` |
| 3 | Curve | `false` |
| 4 | OneInch | `false` |
| 5 | Partner | `false` |
| 6 | DodoV3 | `true` |
Non-DODO disable txs:
- UniswapV3: `0xbb17e5193c2d3043a42d8afdf18bef1bd6470e72420b20d2f3693e4a2e09d200`
- Balancer: `0x2e630057e944d5dbe863244a9e0500f99ad64d8a620cd5f02b0a2093e5629af9`
- Curve: `0x6966e8ef4961eae4d5d56ec021a512a72bbb56379b4af98f12a8ab54fba34655`
## Cutover Files
Updated:
- `config/address-inventory.chain138.json`
- `config/runtime-env.chain138.json`
- `.env`
- `reports/inventory/DEPLOYED_CONTRACTS_UNIFIED_EXTENDED.md`
- `reports/inventory/deployed-contracts-by-network.md`
## Verification
- `cast code` confirmed bytecode at the new router and coordinator.
- `quoteConfiguredProvider(cUSDT, cUSDC, 1e18, Dodo)` returned successfully from the new router selector.
- `getProviderRoute(cUSDT, cUSDC, Dodo)` returned the DODO provider target and configured pool bytes.