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,42 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
import {Script, console} from "forge-std/Script.sol";
import "../../../contracts/bridge/trustless/EnhancedSwapRouterV2.sol";
import "../../../contracts/bridge/trustless/RouteTypesV2.sol";
contract ConfigureEnhancedSwapRouterV2DodoOnly is Script {
address constant LIVE_ROUTER_V2 = 0xF1c93F54A5C2fc0d7766Ccb0Ad8f157DFB4C99Ce;
function run() external {
require(block.chainid == 138, "ConfigureEnhancedSwapRouterV2DodoOnly: Chain 138 only");
uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
address routerAddress = vm.envOr("ENHANCED_SWAP_ROUTER_V2_ADDRESS", LIVE_ROUTER_V2);
EnhancedSwapRouterV2 router = EnhancedSwapRouterV2(payable(routerAddress));
RouteTypesV2.Provider[] memory providers = new RouteTypesV2.Provider[](1);
providers[0] = RouteTypesV2.Provider.Dodo;
vm.startBroadcast(deployerPrivateKey);
router.setRoutingConfig(0, providers);
router.setRoutingConfig(1, providers);
router.setRoutingConfig(2, providers);
router.setProviderEnabled(RouteTypesV2.Provider.UniswapV3, false);
router.setProviderEnabled(RouteTypesV2.Provider.Balancer, false);
router.setProviderEnabled(RouteTypesV2.Provider.Curve, false);
router.setProviderEnabled(RouteTypesV2.Provider.OneInch, false);
router.setProviderEnabled(RouteTypesV2.Provider.Partner, false);
vm.stopBroadcast();
console.log("EnhancedSwapRouterV2 DODO-only routing configured:", routerAddress);
console.log("sizeCategory 0 provider:", uint8(providers[0]));
console.log("sizeCategory 1 provider:", uint8(providers[0]));
console.log("sizeCategory 2 provider:", uint8(providers[0]));
console.log("disabled provider:", uint8(RouteTypesV2.Provider.UniswapV3));
console.log("disabled provider:", uint8(RouteTypesV2.Provider.Balancer));
console.log("disabled provider:", uint8(RouteTypesV2.Provider.Curve));
console.log("disabled provider:", uint8(RouteTypesV2.Provider.OneInch));
console.log("disabled provider:", uint8(RouteTypesV2.Provider.Partner));
}
}

View File

@@ -80,12 +80,8 @@ contract DeployEnhancedSwapRouterV2 is Script {
CurveRouteExecutorAdapter curveAdapter = new CurveRouteExecutorAdapter();
OneInchRouteExecutorAdapter oneInchAdapter = new OneInchRouteExecutorAdapter();
EnhancedSwapRouterV2 router = new EnhancedSwapRouterV2(
CHAIN138_WETH,
CHAIN138_USDT,
CHAIN138_USDC,
CHAIN138_DAI_PLACEHOLDER
);
EnhancedSwapRouterV2 router =
new EnhancedSwapRouterV2(CHAIN138_WETH, CHAIN138_USDT, CHAIN138_USDC, CHAIN138_DAI_PLACEHOLDER);
IntentBridgeCoordinatorV2 coordinator = new IntentBridgeCoordinatorV2(address(router));
router.setProviderAdapter(RouteTypesV2.Provider.Dodo, address(dodoAdapter));
@@ -94,6 +90,7 @@ contract DeployEnhancedSwapRouterV2 is Script {
router.setProviderAdapter(RouteTypesV2.Provider.Balancer, address(balancerAdapter));
router.setProviderAdapter(RouteTypesV2.Provider.Curve, address(curveAdapter));
router.setProviderAdapter(RouteTypesV2.Provider.OneInch, address(oneInchAdapter));
_setDodoOnlyRouting(router);
_setDodoPair(router, CHAIN138_cUSDT, CHAIN138_cUSDC, dodoProvider, CHAIN138_POOL_CUSDTCUSDC);
_setDodoPair(router, CHAIN138_cUSDT, CHAIN138_USDT, dodoProvider, CHAIN138_POOL_CUSDTUSDT);
@@ -128,7 +125,10 @@ contract DeployEnhancedSwapRouterV2 is Script {
if (balancerVault != address(0) && balancerWethUsdcPoolId != bytes32(0)) {
_setBalancerPair(router, CHAIN138_WETH, CHAIN138_USDC, balancerVault, balancerWethUsdcPoolId);
}
if (balancerVault == address(0) || (balancerWethUsdtPoolId == bytes32(0) && balancerWethUsdcPoolId == bytes32(0))) {
if (
balancerVault == address(0)
|| (balancerWethUsdtPoolId == bytes32(0) && balancerWethUsdcPoolId == bytes32(0))
) {
router.setProviderEnabled(RouteTypesV2.Provider.Balancer, false);
}
@@ -141,6 +141,7 @@ contract DeployEnhancedSwapRouterV2 is Script {
if (oneInchRouter == address(0)) {
router.setProviderEnabled(RouteTypesV2.Provider.OneInch, false);
}
_disableNonDodoProviders(router);
vm.stopBroadcast();
@@ -154,13 +155,25 @@ contract DeployEnhancedSwapRouterV2 is Script {
console.log("OneInchRouteExecutorAdapter:", address(oneInchAdapter));
}
function _setDodoPair(
EnhancedSwapRouterV2 router,
address tokenA,
address tokenB,
address target,
address pool
) internal {
function _setDodoOnlyRouting(EnhancedSwapRouterV2 router) internal {
RouteTypesV2.Provider[] memory providers = new RouteTypesV2.Provider[](1);
providers[0] = RouteTypesV2.Provider.Dodo;
router.setRoutingConfig(0, providers);
router.setRoutingConfig(1, providers);
router.setRoutingConfig(2, providers);
}
function _disableNonDodoProviders(EnhancedSwapRouterV2 router) internal {
router.setProviderEnabled(RouteTypesV2.Provider.UniswapV3, false);
router.setProviderEnabled(RouteTypesV2.Provider.Balancer, false);
router.setProviderEnabled(RouteTypesV2.Provider.Curve, false);
router.setProviderEnabled(RouteTypesV2.Provider.OneInch, false);
router.setProviderEnabled(RouteTypesV2.Provider.Partner, false);
}
function _setDodoPair(EnhancedSwapRouterV2 router, address tokenA, address tokenB, address target, address pool)
internal
{
bytes memory providerData = abi.encode(pool);
router.setProviderRoute(tokenA, tokenB, RouteTypesV2.Provider.Dodo, target, providerData, true);
router.setProviderRoute(tokenB, tokenA, RouteTypesV2.Provider.Dodo, target, providerData, true);
@@ -179,13 +192,9 @@ contract DeployEnhancedSwapRouterV2 is Script {
router.setProviderRoute(tokenB, tokenA, RouteTypesV2.Provider.UniswapV3, target, providerData, true);
}
function _setDodoV3Pair(
EnhancedSwapRouterV2 router,
address tokenA,
address tokenB,
address target,
address pool
) internal {
function _setDodoV3Pair(EnhancedSwapRouterV2 router, address tokenA, address tokenB, address target, address pool)
internal
{
bytes memory providerData = abi.encode(pool);
router.setProviderRoute(tokenA, tokenB, RouteTypesV2.Provider.DodoV3, target, providerData, true);
router.setProviderRoute(tokenB, tokenA, RouteTypesV2.Provider.DodoV3, target, providerData, true);