Created
March 19, 2025 21:23
-
-
Save voith/a205d89854bdbb148097d510ddf6267e to your computer and use it in GitHub Desktop.
ODOS aggregator integration
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// SPDX-License-Identifier: Apache-2.0 | |
pragma solidity 0.8.26; | |
import "forge-std/Test.sol"; | |
import "forge-std/console.sol"; | |
import {IERC20} from "@openzeppelin-contracts-5/contracts/token/ERC20/IERC20.sol"; | |
//POST: https://api.odos.xyz/sor/quote/v2 | |
//{ | |
// "chainId": 42161, | |
// "compact": true, | |
// "inputTokens": [ | |
// { | |
// "amount": "100000000000", | |
// "tokenAddress": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831" | |
// } | |
// ], | |
// "outputTokens": [ | |
// { | |
// "proportion": 1, | |
// "tokenAddress": "0x6694340fc020c5E6B96567843da2df01b2CE1eb6" | |
// } | |
// ], | |
// "userAddr": "0xcafA84d24F613f68c158376f50571A75e2A78a26" | |
//} | |
//https://api.odos.xyz/sor/assemble | |
//{ | |
// "pathId": "39c90f02239feae50de5041f26a974ff", | |
// "simulate": false, | |
// "userAddr": "0xcafA84d24F613f68c158376f50571A75e2A78a26" | |
//} | |
contract TestODOS is Test { | |
IERC20 usdc = IERC20(0xaf88d065e77c8cC2239327C5EDb3A432268e5831); | |
IERC20 stargate = IERC20(0x6694340fc020c5E6B96567843da2df01b2CE1eb6); | |
address osdosRouter = 0xa669e7A0d4b3e4Fa48af2dE86BD4CD7126Be4e13; | |
address user = 0xcafA84d24F613f68c158376f50571A75e2A78a26; | |
bytes data = hex"83bd37f9000a003105174876e8000a54d4cdf914945400000000c49b000114ADf53c57Aeb3BB4A665f37Ba0B80EAC428F49500000001cafA84d24F613f68c158376f50571A75e2A78a26000000001308031201114a63ab2801000102010c73c3b60b010003010001086d4ddb0b0100040100010b1ac5200b01000501000107ac78390b0100060100010954b1680b010007010001090804d70b010008010001039e00a70702000109423a1323c871abc9d89eb06855bf5347048fc4a50000000000000000000004960175c206520b02000a010101b28f013f0b02000b010101618011ca0b02000c0101011712edb0130200010d0101016d568674100200010e010900480200010904070001090f3a4c6d2404b5eb14915041e01f63200a82f4a34300020000000000000000006503066752da030001011002001e020b0001110200ff00000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e583182af49447d8a07e3bd95bd0d56f35241523fbab1b1026b8e7276e7ac75410f1fcbbe21796e8f7526c473e2aee3441bf9240be85eb122abb059a3b57cc6962004f452be9203591991d15f6b388e09e8d06f38e884725a116c9c7fbf208e79fe8828a2595ff3eb87c1f6020982173c908e7eb31aa66c1f02967fcdc35463e3770c2fb992716cd070b63540b947ff970a61a04b1ca14834a43f5de4533ebddb5cc8c86eb7b85807020b4548ee05b54bfc956eebbfcd8e295789c9465487074a65b1ae9ce0351172393fe8bb56ee968333bf18f9cbbe8eeef350540f9607c1ad239594c165bd4d8847d281232172a4520818489ee077994b6658eafa855c308275ead8097c4a6694340fc020c5e6b96567843da2df01b2ce1eb647888c34e9aa879363e94e5302681e763b18d39ea8bd646f72ea828ccbc40fa2976866884f883409000000000000000000000000"; | |
uint256 arbitrumMainnetForkId; | |
function setUp() external { | |
string memory ARBITRUM_MAINNET_RPC_URL = vm.envString("ARBITRUM_URL"); | |
arbitrumMainnetForkId = vm.createFork(ARBITRUM_MAINNET_RPC_URL); | |
vm.selectFork(arbitrumMainnetForkId); | |
} | |
function test() external { | |
vm.selectFork(arbitrumMainnetForkId); | |
deal({token: address(usdc), to: user, give: 500000e6}); | |
vm.startPrank(user); | |
usdc.approve(osdosRouter, 100000e6); | |
console2.log(stargate.balanceOf(user)); | |
(bool success, ) = osdosRouter.call(data); | |
require(success, 'odos router call failed'); | |
console2.log(stargate.balanceOf(user)); | |
vm.stopPrank(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment