diff --git a/contracts/senders/aave-v2-migrator/helpers.sol b/contracts/senders/aave-v2-migrator/helpers.sol index 4c3a7ad..435ded5 100644 --- a/contracts/senders/aave-v2-migrator/helpers.sol +++ b/contracts/senders/aave-v2-migrator/helpers.sol @@ -5,6 +5,7 @@ import { DSMath } from "../../common/math.sol"; import { Stores } from "../../common/stores-mainnet.sol"; import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "hardhat/console.sol"; import { Variables } from "./variables.sol"; @@ -68,7 +69,10 @@ abstract contract Helpers is DSMath, Stores, Variables { ,,,,, ) = aaveData.getUserReserveData(_token, sourceDsa); - stableBorrow[i] = _data.stableBorrowAmts[i] == uint(-1) ? stableDebt : _data.stableBorrowAmts[i]; + console.log("debts", stableDebt, variableDebt); + console.log("token", _token); + + stableBorrow[i] = _data.stableBorrowAmts[i] == uint(-1) ? stableDebt : _data.stableBorrowAmts[i]; // Failing here?? 'invalid-opcode' variableBorrow[i] = _data.variableBorrowAmts[i] == uint(-1) ? variableDebt : _data.variableBorrowAmts[i]; totalBorrow[i] = add(stableBorrow[i], variableBorrow[i]); diff --git a/test/migrator_l1.test.js b/test/migrator_l1.test.js index 54aba11..61f99f3 100644 --- a/test/migrator_l1.test.js +++ b/test/migrator_l1.test.js @@ -7,6 +7,12 @@ const Migrator = require("../artifacts/contracts/senders/aave-v2-migrator/main.s describe("Migrator", function() { let accounts, masterAddress, master, migrator, ethereum + + const erc20Abi = [ + "function balanceOf(address) view returns (uint)", + "function transfer(address to, uint amount)" + ] + const usdc = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' const usdt = '0xdac17f958d2ee523a2206206994597c13d831ec7' const dai = '0x6b175474e89094c44da98b954eedeac495271d0f' @@ -29,6 +35,54 @@ describe("Migrator", function() { console.log("Migrator deployed: ", migrator.address) + const usdcHolderAddr = '0x47ac0fb4f2d84898e4d9e7b4dab3c24507a6d503' // 1,000,000 + await accounts[0].sendTransaction({ to: usdcHolderAddr, value: ethers.utils.parseEther('1') }) + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [ usdcHolderAddr ] + }) + const usdcHolder = ethers.provider.getSigner(usdcHolderAddr) + const usdcContract = new ethers.Contract(usdc, erc20Abi, usdcHolder) + await usdcContract.transfer(migrator.address, ethers.utils.parseUnits('1000000', 6)) + + const usdtHolderAddr = '0x47ac0fb4f2d84898e4d9e7b4dab3c24507a6d503' // 1,000,000 + await accounts[0].sendTransaction({ to: usdtHolderAddr, value: ethers.utils.parseEther('1') }) + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [ usdtHolderAddr ] + }) + const usdtHolder = ethers.provider.getSigner(usdtHolderAddr) + const usdtContract = new ethers.Contract(usdt, erc20Abi, usdtHolder) + await usdtContract.transfer(migrator.address, ethers.utils.parseUnits('1000000', 6)) + + const daiHolderAddr = '0x47ac0fb4f2d84898e4d9e7b4dab3c24507a6d503' // 1,000,000 + await accounts[0].sendTransaction({ to: daiHolderAddr, value: ethers.utils.parseEther('1') }) + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [ daiHolderAddr ] + }) + const daiHolder = ethers.provider.getSigner(daiHolderAddr) + const daiContract = new ethers.Contract(dai, erc20Abi, daiHolder) + await daiContract.transfer(migrator.address, ethers.utils.parseUnits('1000000', 18)) + + const wbtcHolderAddr = '0xf977814e90da44bfa03b6295a0616a897441acec' // 16 + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [ wbtcHolderAddr ] + }) + const wbtcHolder = ethers.provider.getSigner(wbtcHolderAddr) + const wbtcContract = new ethers.Contract(wbtc, erc20Abi, wbtcHolder) + await wbtcContract.transfer(migrator.address, ethers.utils.parseUnits('16', 8)) + + const wethHolderAddr = '0x0f4ee9631f4be0a63756515141281a3e2b293bbe' // 500 + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [ wethHolderAddr ] + }) + const wethHolder = ethers.provider.getSigner(wethHolderAddr) + const wethContract = new ethers.Contract(weth, erc20Abi, wethHolder) + await wethContract.transfer(migrator.address, ethers.utils.parseUnits('500', 18)) + ethereum = network.provider }) @@ -39,4 +93,27 @@ describe("Migrator", function() { const isUsdc = await migrator.isSupportedToken(usdc) expect(isUsdc).to.be.true; }) + + it("test migrate", async function() { + const sourceAddr = '0x42c7788dd1cef71cf04ae4d6bca37d129c27e001' + const rawData = { + targetDsa: sourceAddr, + supplyTokens: [eth], + borrowTokens: [usdc], + supplyAmts: [ethers.utils.parseEther('20')], + variableBorrowAmts: [ethers.utils.parseUnits('10000', 6)], + stableBorrowAmts: [ethers.utils.parseUnits('10000', 6)] + } + + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [ sourceAddr ] + }) + const signer = ethers.provider.getSigner(sourceAddr) + + const tx = await migrator.connect(signer).migrate(rawData) + const receipt = await tx.wait() + + console.log(receipt) + }) }) \ No newline at end of file