Skip to content

Commit

Permalink
pay: new DFS deployment, bsc chain
Browse files Browse the repository at this point in the history
  • Loading branch information
nalinbhardwaj committed Nov 2, 2024
1 parent b09f3d4 commit 7ee1a5d
Show file tree
Hide file tree
Showing 42 changed files with 63,074 additions and 27,128 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
"transactions": [
{
"hash": "0x04ae8898cc5dcafb2a610d07c6fd534ef7e1f5e5293e492eb3af54826d7c114c",
"transactionType": "CREATE2",
"contractName": "CREATE3Factory",
"contractAddress": "0x4ce25be5611b6527ea48f7abf513d48bacb4cc44",
"function": null,
"arguments": null,
"transaction": {
"from": "0x2f321372e8a9755cd2ca6114eb8da32a14f8100b",
"to": "0x4e59b44847b379578588920ca78fbf26c0b4956c",
"gas": "0x7a1a5",
"value": "0x0",
"input": "0xb7b4348bd25e1384f3ea3920200f44516adaaaa36647ca6a75c74e53e700cbbe6080806040523460155761059e908161001b8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816350f1c46414610297575063cdcb760a1461003557600080fd5b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102925760243567ffffffffffffffff811161029257366023820112156102925780600401359061008b826103ca565b91610099604051938461035a565b8083526020830191366024838301011161029257816000926024602093018537840101526040513360601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020820190815260043560348301529061012b81605481015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261035a565b51902080610137610404565b6020815191016000f573ffffffffffffffffffffffffffffffffffffffff8116156102345760009261016b8493309061043f565b94519134905af13d1561022f573d610182816103ca565b90610190604051928361035a565b8152600060203d92013e5b80610225575b156101c75760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152fd5b50803b15156101a1565b61019b565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c45440000000000000000000000000000006044820152fd5b600080fd5b346102925760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610292576004359073ffffffffffffffffffffffffffffffffffffffff821682036102925760609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082810191825260243560348401529161033c919061033281605481016100ff565b519020309061043f565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761039b57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161039b57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6040519061041360408361035a565b601082527f67363d3d37363d34f03d5260086018f3000000000000000000000000000000006020830152565b9073ffffffffffffffffffffffffffffffffffffffff9161045e610404565b60208151910120604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947fff00000000000000000000000000000000000000000000000000000000000000865260601b16602184015260358301526055820152605581526104d460758261035a565b5190206040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208201927fd694000000000000000000000000000000000000000000000000000000000000845260601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201526017815261056160378261035a565b519020169056fea26469706673582212205ddc3b62506002605f8e56b354c461c27258994d60a0a456286a18125a7d5aa764736f6c634300081a0033",
"nonce": "0x0",
"chainId": "0x38"
},
"additionalContracts": [],
"isFixedGasLimit": false
}
],
"receipts": [
{
"status": "0x1",
"cumulativeGasUsed": "0x89726b",
"logs": [],
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"type": "0x0",
"transactionHash": "0x04ae8898cc5dcafb2a610d07c6fd534ef7e1f5e5293e492eb3af54826d7c114c",
"transactionIndex": "0x5f",
"blockHash": "0x9d2e054df111934440a3f6a376da9890df2b040728d8a380e7fafe8436b0335f",
"blockNumber": "0x298c452",
"gasUsed": "0x586c4",
"effectiveGasPrice": "0x3b9aca00",
"from": "0x2f321372e8a9755cd2ca6114eb8da32a14f8100b",
"to": "0x4e59b44847b379578588920ca78fbf26c0b4956c",
"contractAddress": "0x4ce25be5611b6527ea48f7abf513d48bacb4cc44"
}
],
"libraries": [],
"pending": [],
"returns": {
"factory": {
"internal_type": "contract CREATE3Factory",
"value": "0x4Ce25bE5611B6527eA48f7Abf513d48BAcb4Cc44"
}
},
"timestamp": 1730278550,
"chain": 56,
"commit": "740c9a76"
}
146 changes: 73 additions & 73 deletions packages/contract/broadcast/DeployFlexSwapper.s.sol/10/run-latest.json

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

153 changes: 153 additions & 0 deletions packages/contract/broadcast/DeployFlexSwapper.s.sol/56/run-latest.json

Large diffs are not rendered by default.

Large diffs are not rendered by default.

149 changes: 102 additions & 47 deletions packages/contract/broadcast/DeployFlexSwapper.s.sol/8453/run-latest.json

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

54 changes: 44 additions & 10 deletions packages/contract/script/Constants.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ uint256 constant BASE_MAINNET = 8453;
uint256 constant BLAST_MAINNET = 81457;
uint256 constant ETH_MAINNET = 1;
uint256 constant LINEA_MAINNET = 59144;
uint256 constant BSC_MAINNET = 56;
uint256 constant LISK_MAINNET = 1135;
uint256 constant MODE_MAINNET = 34443;
uint256 constant OP_MAINNET = 10;
Expand Down Expand Up @@ -83,6 +84,7 @@ address constant ETH_MAINNET_DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
address constant OP_MAINNET_DAI = 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1;
address constant POLYGON_MAINNET_DAI = 0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063;
address constant LINEA_MAINNET_DAI = 0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5;
address constant BSC_MAINNET_DAI = 0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3;

// USDT addresses
address constant ARBITRUM_MAINNET_USDT = 0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9;
Expand All @@ -93,16 +95,28 @@ address constant LISK_MAINNET_USDT = 0x05D032ac25d322df992303dCa074EE7392C117b9;
address constant OP_MAINNET_USDT = 0x94b008aA00579c1307B0EF2c499aD98a8ce58e58;
address constant POLYGON_MAINNET_USDT = 0xc2132D05D31c914a87C6611C10748AEb04B58e8F;
address constant LINEA_MAINNET_USDT = 0xA219439258ca9da29E9Cc4cE5596924745e12B93;
address constant BSC_MAINNET_USDT = 0x55d398326f99059fF775485246999027B3197955;

// USDC.e or USDbC (bridged USDC) addresses
address constant ARBITRUM_MAINNET_BRIDGED_USDC = 0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8;
address constant AVAX_MAINNET_BRIDGED_USDC = 0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664;
address constant BASE_MAINNET_BRIDGED_USDC = 0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA;
address constant LINEA_MAINNET_BRIDGED_USDC = 0x176211869cA2b568f2A7D4EE941E073a821EE1ff;
address constant BSC_MAINNET_BRIDGED_USDC = 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d; // NOTE: Binance pegged USDC has 18 decimals on BSC.
address constant MODE_MAINNET_BRIDGED_USDC = 0xd988097fb8612cc24eeC14542bC03424c656005f;
address constant OP_MAINNET_BRIDGED_USDC = 0x7F5c764cBc14f9669B88837ca1490cCa17c31607;
address constant POLYGON_MAINNET_BRIDGED_USDC = 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174;

// axlUSDC (Axelar wrapped USDC) addresses
address constant ARBITRUM_MAINNET_AXLUSDC = 0xEB466342C4d449BC9f53A865D5Cb90586f405215;
address constant AVAX_MAINNET_AXLUSDC = 0xfaB550568C688d5D8A52C7d794cb93Edc26eC0eC;
address constant BASE_MAINNET_AXLUSDC = 0xEB466342C4d449BC9f53A865D5Cb90586f405215;
address constant BSC_MAINNET_AXLUSDC = 0x4268B8F0B87b6Eae5d897996E6b845ddbD99Adf3;
address constant ETH_MAINNET_AXLUSDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
address constant LINEA_MAINNET_AXLUSDC = 0xEB466342C4d449BC9f53A865D5Cb90586f405215;
address constant OP_MAINNET_AXLUSDC = 0xEB466342C4d449BC9f53A865D5Cb90586f405215;
address constant POLYGON_MAINNET_AXLUSDC = 0x750e4C4984a9e0f12978eA6742Bc1c5D248f40ed;

// USDB
address constant BLAST_MAINNET_USDB = 0x4300000000000000000000000000000000000003;

Expand All @@ -120,6 +134,7 @@ address constant POLYGON_WETH = 0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619;
address constant LINEA_WETH = 0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f;

address constant POLYGON_WMATIC = 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270;
address constant BSC_MAINNET_WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
address constant AVAX_WAVAX = 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7;

// ----------------- Flex Swapper ----------------- //
Expand Down Expand Up @@ -175,6 +190,9 @@ address constant AVAX_TESTNET_UNISWAP_FACTORY = address(0); // Not deployed
address constant LINEA_MAINNET_UNISWAP_ROUTER = 0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a;
address constant LINEA_MAINNET_UNISWAP_FACTORY = 0x31FAfd4889FA1269F7a13A66eE0fB458f27D72A9;

address constant BSC_MAINNET_UNISWAP_ROUTER = 0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2;
address constant BSC_MAINNET_UNISWAP_FACTORY = 0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F7;

function _getUSDCAddress(uint256 chainId) pure returns (address) {
// Mainnets
if (chainId == ARBITRUM_MAINNET) return ARBITRUM_MAINNET_USDC;
Expand All @@ -193,7 +211,7 @@ function _getUSDCAddress(uint256 chainId) pure returns (address) {
if (chainId == OP_TESTNET) return OP_TESTNET_USDC;
if (chainId == POLYGON_TESTNET) return POLYGON_TESTNET_USDC;

revert("Unsupported chainID");
return address(0);
}

function _getUniswapFactoryAddress(uint256 chainId) pure returns (address) {
Expand All @@ -205,7 +223,7 @@ function _getUniswapFactoryAddress(uint256 chainId) pure returns (address) {
if (chainId == POLYGON_MAINNET) return POLYGON_MAINNET_UNISWAP_FACTORY;
if (chainId == AVAX_MAINNET) return AVAX_MAINNET_UNISWAP_FACTORY;
if (chainId == LINEA_MAINNET) return LINEA_MAINNET_UNISWAP_FACTORY;

if (chainId == BSC_MAINNET) return BSC_MAINNET_UNISWAP_FACTORY;
// Testnets
if (chainId == ETH_TESTNET) return ETH_TESTNET_UNISWAP_FACTORY;
if (chainId == BASE_TESTNET) return BASE_TESTNET_UNISWAP_FACTORY;
Expand All @@ -214,7 +232,7 @@ function _getUniswapFactoryAddress(uint256 chainId) pure returns (address) {
if (chainId == POLYGON_TESTNET) return POLYGON_TESTNET_UNISWAP_FACTORY;
if (chainId == AVAX_TESTNET) return AVAX_TESTNET_UNISWAP_FACTORY;

revert("Unsupported chainID");
return address(0);
}

function _getWETH(uint256 chainId) pure returns (address) {
Expand All @@ -235,12 +253,13 @@ function _getWETH(uint256 chainId) pure returns (address) {
if (chainId == OP_TESTNET) return OP_STACK_WETH;
if (chainId == POLYGON_TESTNET) return POLYGON_WETH;

revert("Unsupported chainID");
return address(0);
}

function _getWrappedNativeToken(uint256 chainId) pure returns (address) {
if (chainId == AVAX_MAINNET) return AVAX_WAVAX;
if (chainId == POLYGON_MAINNET) return POLYGON_WMATIC;
if (chainId == BSC_MAINNET) return BSC_MAINNET_WBNB;

if (chainId == AVAX_TESTNET) return AVAX_WAVAX;
if (chainId == POLYGON_TESTNET) return POLYGON_WMATIC;
Expand All @@ -258,10 +277,11 @@ function _getDAIAddress(uint256 chainId) pure returns (address) {
if (chainId == OP_MAINNET) return OP_MAINNET_DAI;
if (chainId == POLYGON_MAINNET) return POLYGON_MAINNET_DAI;
if (chainId == LINEA_MAINNET) return LINEA_MAINNET_DAI;
if (chainId == BSC_MAINNET) return BSC_MAINNET_DAI;

if (_isTestnet(chainId)) return address(0);

revert("Unsupported chainID");
return address(0);
}

function _getUSDTAddress(uint256 chainId) pure returns (address) {
Expand All @@ -273,22 +293,36 @@ function _getUSDTAddress(uint256 chainId) pure returns (address) {
if (chainId == OP_MAINNET) return OP_MAINNET_USDT;
if (chainId == POLYGON_MAINNET) return POLYGON_MAINNET_USDT;
if (chainId == LINEA_MAINNET) return LINEA_MAINNET_USDT;
if (chainId == BSC_MAINNET) return BSC_MAINNET_USDT;

if (_isTestnet(chainId)) return address(0);

revert("Unsupported chainID");
return address(0);
}

function _getBridgedUSDCAddress(uint256 chainId) pure returns (address) {
if (chainId == ARBITRUM_MAINNET) return ARBITRUM_MAINNET_BRIDGED_USDC;
if (chainId == AVAX_MAINNET) return AVAX_MAINNET_BRIDGED_USDC;
if (chainId == BASE_MAINNET) return BASE_MAINNET_BRIDGED_USDC;
if (chainId == LINEA_MAINNET) return LINEA_MAINNET_BRIDGED_USDC;
if (chainId == BSC_MAINNET) return BSC_MAINNET_BRIDGED_USDC;
if (chainId == MODE_MAINNET) return MODE_MAINNET_BRIDGED_USDC;
if (chainId == OP_MAINNET) return OP_MAINNET_BRIDGED_USDC;
if (chainId == POLYGON_MAINNET) return POLYGON_MAINNET_BRIDGED_USDC;

revert("Unsupported chainID");
return address(0);
}

function _getAxlUsdcAddress(uint256 chainId) pure returns (address) {
if (chainId == ARBITRUM_MAINNET) return ARBITRUM_MAINNET_AXLUSDC;
if (chainId == AVAX_MAINNET) return AVAX_MAINNET_AXLUSDC;
if (chainId == BASE_MAINNET) return BASE_MAINNET_AXLUSDC;
if (chainId == BSC_MAINNET) return BSC_MAINNET_AXLUSDC;
if (chainId == LINEA_MAINNET) return LINEA_MAINNET_AXLUSDC;
if (chainId == OP_MAINNET) return OP_MAINNET_AXLUSDC;
if (chainId == POLYGON_MAINNET) return POLYGON_MAINNET_AXLUSDC;

return address(0);
}

// Chainlink DataFeed aggregator addresses (tokenIn --> USD)
Expand Down Expand Up @@ -342,7 +376,7 @@ function _getTokenMessengerAddress(uint256 chainId) pure returns (address) {
chainId == POLYGON_TESTNET
) return TESTNET_TOKEN_MESSENGER;

revert("Unsupported chainID");
return address(0);
}

// Check whether the chain is a testnet.
Expand Down Expand Up @@ -404,7 +438,7 @@ function _getTokenMinterAddress(uint256 chainId) pure returns (address) {
chainId == POLYGON_TESTNET
) return TESTNET_TOKEN_MINTER;

revert("Unsupported chainID");
return address(0);
}

// ----------------- Across ----------------- //
Expand Down Expand Up @@ -437,7 +471,7 @@ function _getSpokePoolAddress(uint256 chainId) pure returns (address) {
if (chainId == LISK_MAINNET) return LISK_MAINNET_SPOKE_POOL;
if (chainId == REDSTONE_MAINNET) return REDSTONE_MAINNET_SPOKE_POOL;

revert("Unsupported chainID");
return address(0);
}

// ----------------- Deployment ----------------- //
Expand Down
77 changes: 35 additions & 42 deletions packages/contract/script/DeployFlexSwapper.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -20,33 +20,30 @@ contract DeployFlexSwapperScript is Script {

vm.startBroadcast();

DaimoFlexSwapper implementation = new DaimoFlexSwapper{salt: 0}();
DaimoFlexSwapper implementation = new DaimoFlexSwapper{
salt: bytes32(uint256(17))
}();
address swapper = CREATE3.deploy(
keccak256("DaimoFlexSwapper-13"),
keccak256("DaimoFlexSwapper-17"),
abi.encodePacked(
type(ERC1967Proxy).creationCode,
abi.encode(address(implementation), initCall)
)
);
console2.log("swapper deployed at address:", swapper);
console2.log("swapper (with feeds) deployed at address:", swapper);

vm.stopBroadcast();
}

function _loadKnownTokens() private {
IERC20 usdc = IERC20(address(0));
if (_isCCTP(block.chainid)) {
usdc = IERC20(_getUSDCAddress(block.chainid));
}
IERC20 usdc = IERC20(_getUSDCAddress(block.chainid));
IERC20 dai = IERC20(_getDAIAddress(block.chainid));
IERC20 usdt = IERC20(_getUSDTAddress(block.chainid));
IERC20 bridgedUsdc = IERC20(address(0));
if (!_isTestnet(block.chainid) && !_isL1(block.chainid)) {
bridgedUsdc = IERC20(_getBridgedUSDCAddress(block.chainid));
}
IERC20 bridgedUsdc = IERC20(_getBridgedUSDCAddress(block.chainid));
IERC20 axlUsdc = IERC20(_getAxlUsdcAddress(block.chainid));

// Add priced tokens with Chainlink feeds
string memory file = "./chainlink-feeds.jsonl";
string memory file = "./script/data/chainlink-feeds.jsonl";
while (true) {
string memory vector = vm.readLine(file);
if (bytes(vector).length == 0) {
Expand All @@ -65,7 +62,8 @@ contract DeployFlexSwapperScript is Script {
bool isStablecoin = tokenAddr == address(usdc) ||
tokenAddr == address(dai) ||
tokenAddr == address(usdt) ||
tokenAddr == address(bridgedUsdc);
tokenAddr == address(bridgedUsdc) ||
tokenAddr == address(axlUsdc);
if (isStablecoin) {
continue;
}
Expand Down Expand Up @@ -96,6 +94,9 @@ contract DeployFlexSwapperScript is Script {
if (bridgedUsdc != IERC20(address(0))) {
_knownTokenAddrs.push(bridgedUsdc);
}
if (axlUsdc != IERC20(address(0))) {
_knownTokenAddrs.push(axlUsdc);
}
require(_knownTokenAddrs.length > 0, "No known tokens");
for (uint256 i = numChainlinkTokens; i < _knownTokenAddrs.length; i++) {
DaimoFlexSwapper.KnownToken memory knownToken = DaimoFlexSwapper
Expand All @@ -108,7 +109,7 @@ contract DeployFlexSwapperScript is Script {
}
}

function _getInitCall() private view returns (bytes memory) {
function _getInitCall() private returns (bytes memory) {
uint24[] memory oracleFeeTiers = new uint24[](4);
oracleFeeTiers[0] = 100;
oracleFeeTiers[1] = 500;
Expand Down Expand Up @@ -144,11 +145,12 @@ contract DeployFlexSwapperScript is Script {
);
}

IERC20[] stablecoins;

function _getAddrs(
uint256 chainId
)
private
view
returns (
IERC20 wrappedNative,
IERC20[] memory hopTokens,
Expand All @@ -160,39 +162,30 @@ contract DeployFlexSwapperScript is Script {
{
wrappedNative = IERC20(_getWrappedNativeToken(chainId));
IERC20 weth = IERC20(_getWETH(chainId));
if (weth == wrappedNative) {
hopTokens = new IERC20[](1);
hopTokens[0] = weth;
} else {
if (address(weth) != address(0) && weth != wrappedNative) {
hopTokens = new IERC20[](2);
hopTokens[0] = weth;
hopTokens[1] = wrappedNative;
} else {
hopTokens = new IERC20[](1);
hopTokens[0] = wrappedNative;
}

// Stablecoins
IERC20[] memory stablecoins;
if (_isTestnet(chainId)) {
// There is no swapping liquidity on testnets so no need for
// stablecoin options.
stablecoins = new IERC20[](1);
stablecoins[0] = IERC20(_getUSDCAddress(chainId));
} else if (_isL1(chainId)) {
// No bridged USDC on L1
stablecoins = new IERC20[](3);
stablecoins[0] = IERC20(_getUSDCAddress(chainId));
stablecoins[1] = IERC20(_getUSDTAddress(chainId));
stablecoins[2] = IERC20(_getDAIAddress(chainId));
} else if (_isCCTP(chainId)) {
stablecoins = new IERC20[](4);
stablecoins[0] = IERC20(_getUSDCAddress(chainId));
stablecoins[1] = IERC20(_getUSDTAddress(chainId));
stablecoins[2] = IERC20(_getDAIAddress(chainId));
stablecoins[3] = IERC20(_getBridgedUSDCAddress(chainId));
} else {
stablecoins = new IERC20[](3);
stablecoins[0] = IERC20(_getBridgedUSDCAddress(chainId));
stablecoins[1] = IERC20(_getUSDTAddress(chainId));
stablecoins[2] = IERC20(_getDAIAddress(chainId));
if (_getUSDCAddress(chainId) != address(0)) {
stablecoins.push(IERC20(_getUSDCAddress(chainId)));
}
if (_getUSDTAddress(chainId) != address(0)) {
stablecoins.push(IERC20(_getUSDTAddress(chainId)));
}
if (_getDAIAddress(chainId) != address(0)) {
stablecoins.push(IERC20(_getDAIAddress(chainId)));
}
if (_getBridgedUSDCAddress(chainId) != address(0)) {
stablecoins.push(IERC20(_getBridgedUSDCAddress(chainId)));
}
if (_getAxlUsdcAddress(chainId) != address(0)) {
stablecoins.push(IERC20(_getAxlUsdcAddress(chainId)));
}

// Supported output tokens (stablecoins + hopTokens)
Expand Down
Loading

0 comments on commit 7ee1a5d

Please sign in to comment.