From 442e18ef093f8daa18f528de0bdbffdd336b4e91 Mon Sep 17 00:00:00 2001 From: Mubaris NK Date: Fri, 16 Apr 2021 17:58:42 +0530 Subject: [PATCH] Add new testcases (all failing) --- contracts/senders/aave-v2-migrator/main.sol | 2 + hardhat.config.js | 2 +- test/migrator_l1.test.js | 6 +- test/sender_l1.test.js | 179 +++++++++++++++----- 4 files changed, 141 insertions(+), 48 deletions(-) diff --git a/contracts/senders/aave-v2-migrator/main.sol b/contracts/senders/aave-v2-migrator/main.sol index 317861c..229d53b 100644 --- a/contracts/senders/aave-v2-migrator/main.sol +++ b/contracts/senders/aave-v2-migrator/main.sol @@ -7,6 +7,7 @@ import { TokenInterface } from "../../common/interfaces.sol"; import { Helpers } from "./helpers.sol"; import { AaveInterface, ATokenInterface, IndexInterface } from "./interfaces.sol"; import { Events } from "./events.sol"; +import "hardhat/console.sol"; contract LiquidityResolver is Helpers, Events { using SafeERC20 for IERC20; @@ -156,6 +157,7 @@ contract MigrateResolver is LiquidityResolver { isPositionSafe(); stateSender.syncState(polygonReceiver, abi.encode(data)); + console.logBytes(abi.encode(data)); emit LogAaveV2Migrate( sourceDsa, diff --git a/hardhat.config.js b/hardhat.config.js index eaa5071..f49e141 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -33,7 +33,7 @@ module.exports = { hardhat: { // matic forking forking: { url: `https://cold-red-river.matic.quiknode.pro/${QUIKNODE_ID}/`, - blockNumber: 13317966, + blockNumber: 13344493, }, blockGasLimit: 12000000, }, diff --git a/test/migrator_l1.test.js b/test/migrator_l1.test.js index c2bce78..5235fad 100644 --- a/test/migrator_l1.test.js +++ b/test/migrator_l1.test.js @@ -177,7 +177,7 @@ describe("Migrator", function() { const sourceAddr = '0x6126f2a1bd956630f810d5ea351c5a4d65cb5033' const rawData = { - targetDsa: sourceAddr, + targetDsa: '0x150Acc42e6751776c9E784EfF830cB4f35aE98f3', supplyTokens: [weth, aave], borrowTokens: [usdc, usdt, dai], supplyAmts: [ethers.utils.parseEther('100'), ethers.utils.parseEther('80')], @@ -204,7 +204,7 @@ describe("Migrator", function() { const sourceAddr = '0x37e5df37885a6d0b43bee9ec2997b1e0037fb490' const rawData = { - targetDsa: sourceAddr, + targetDsa: '0xAA5Aa4110C8215A98c62d5F57adaA4A35cec8cbe', supplyTokens: [weth], borrowTokens: [usdc, usdt], supplyAmts: [ethers.utils.parseEther('1000')], @@ -229,7 +229,7 @@ describe("Migrator", function() { const sourceAddr = '0xeb43b5597e3bde0b0c03ee6731ba7c0247e1581e' const rawData = { - targetDsa: sourceAddr, + targetDsa: '0x43cc83DC7AC2d47a5AD14DB7E817b2E80b5Cb93e', supplyTokens: [weth, wbtc], borrowTokens: [usdc], supplyAmts: [ethers.utils.parseEther('4000'), ethers.utils.parseUnits('30', 8)], diff --git a/test/sender_l1.test.js b/test/sender_l1.test.js index 91e6792..2c311b6 100644 --- a/test/sender_l1.test.js +++ b/test/sender_l1.test.js @@ -14,8 +14,9 @@ const tokenMaps = { '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063': '0x6B175474E89094C44Da98b954EedeAC495271d0F', // DAI '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174': '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC '0xc2132D05D31c914a87C6611C10748AEb04B58e8F': '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT - '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270': '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0', - '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6': '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' + '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270': '0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0', // MATIC + '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6': '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', // WBTC + '0xD6DF932A45C0f255f85145f286eA0b292B21C90B': '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9' // AAVE } // @@ -35,13 +36,13 @@ describe("Migrator", function() { const implementations_m2Sigs = ["0x5a19a5eb"] const migrateData = "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000150acc42e6751776c9e784eff830cb4f35ae98f300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000033f007ebdfe640000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000002540be4000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000001000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7" - // const usdc = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' - // const usdt = '0xdac17f958d2ee523a2206206994597c13d831ec7' - // const dai = '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063' - // const wbtc = '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599' - // const aave = '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9' - // const eth = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' - // const weth = '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619' + + const usdc = '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' + const usdt = '0xc2132D05D31c914a87C6611C10748AEb04B58e8F' + const dai = '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063' + const wbtc = '0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6' + const aave = '0xD6DF932A45C0f255f85145f286eA0b292B21C90B' + const weth = '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619' const instaConnectorsV2 = '0x0a0a82D2F86b9E46AE60E22FCE4e8b916F858Ddc' const instaImplementations = '0x39d3d5e7c11D61E072511485878dd84711c19d4A' @@ -98,13 +99,13 @@ describe("Migrator", function() { const receipt = await tx.wait() const _migrateData = await migrator.positions("345") - console.log("_migrateData", _migrateData) + // console.log("_migrateData", _migrateData) // console.log("tokenMapping deployed: ", await tokenMapping.getMapping("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48")) expect(_migrateData).to.be.eq(migrateData); }) - it("test settle", async function() { + it("test settle", async function() { const tx = await migrator.settle() const receipt = await tx.wait() @@ -112,25 +113,6 @@ describe("Migrator", function() { }) it("test migrate", async function() { - // const sourceAddr = '0x42c7788dd1cef71cf04ae4d6bca37d129c27e001' - - // const rawData = { - // targetDsa: sourceAddr, - // supplyTokens: [weth], - // borrowTokens: [usdc], - // supplyAmts: [ethers.utils.parseEther('60')], - // 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 awethContract = new ethers.Contract(aweth, erc20Abi, signer) - // await awethContract.approve(migrator.address, maxValue) const tx = await migrator.migrate("345") const receipt = await tx.wait() @@ -138,23 +120,132 @@ describe("Migrator", function() { // console.log(receipt) }) - // it("test settle", async function() { - // const tokens = [weth] - // const amts = [ethers.utils.parseEther('60')] + it("fund assets", async function() { + const usdcHolderAddr = '0x986a2fCa9eDa0e06fBf7839B89BfC006eE2a23Dd' // 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 tx = await migrator.settle(tokens, amts) - // const receipt = await tx.wait() + const usdtHolderAddr = '0xe67e43b831A541c5Fa40DE52aB0aFbE311514E64' // 500,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('500000', 6)) - // // console.log(receipt) - // }) + const daiHolderAddr = '0x7A61A0Ed364E599Ae4748D1EbE74bf236Dd27B09' // 300,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('300000', 18)) - // it("test settle 2", async function() { - // const tokens = [usdc] - // const amts = [ethers.utils.parseUnits('20000', 6)] + // const wbtcHolderAddr = '0x4572581Fc62D4477B9E11bb65eA8a1c306CbBa3D' // 1 + // 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('0.5', 8)) - // const tx = await migrator.settle(tokens, amts) - // const receipt = await tx.wait() + let wethHolderAddr = '0xac1513a6C4C3E74Cb0c1f77c8cBbbf22A2400e33' // 150 + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [ wethHolderAddr ] + }) + let wethHolder = ethers.provider.getSigner(wethHolderAddr) + let wethContract = new ethers.Contract(weth, erc20Abi, wethHolder) + await wethContract.transfer(migrator.address, ethers.utils.parseUnits('150', 18)) - // // console.log(receipt) - // }) + wethHolderAddr = '0xBe31a54c78f6E73819ffF78072Be1660485c8105' // 130 + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [ wethHolderAddr ] + }) + wethHolder = ethers.provider.getSigner(wethHolderAddr) + wethContract = new ethers.Contract(weth, erc20Abi, wethHolder) + await wethContract.transfer(migrator.address, ethers.utils.parseUnits('130', 18)) + + wethHolderAddr = '0x10752de2972390BA3D5A47A26179E526019C01c0' // 100 + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [ wethHolderAddr ] + }) + wethHolder = ethers.provider.getSigner(wethHolderAddr) + wethContract = new ethers.Contract(weth, erc20Abi, wethHolder) + await wethContract.transfer(migrator.address, ethers.utils.parseUnits('100', 18)) + + wethHolderAddr = '0x0ee5CDBec0665D31ee00EE35b46e85EdcB9CEb31' // 100 + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [ wethHolderAddr ] + }) + wethHolder = ethers.provider.getSigner(wethHolderAddr) + wethContract = new ethers.Contract(weth, erc20Abi, wethHolder) + await wethContract.transfer(migrator.address, ethers.utils.parseUnits('100', 18)) + + wethHolderAddr = '0xE3f892174190b3F0Fa502Eb84c8208c7c0998c50' // 90 + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [ wethHolderAddr ] + }) + wethHolder = ethers.provider.getSigner(wethHolderAddr) + wethContract = new ethers.Contract(weth, erc20Abi, wethHolder) + await wethContract.transfer(migrator.address, ethers.utils.parseUnits('100', 18)) + + const aaveHolderAddr = '0x3f25e13D98b9a7702eF5729c831e853f8486eD00' // 400 + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [ aaveHolderAddr ] + }) + const aaveHolder = ethers.provider.getSigner(aaveHolderAddr) + const aaveContract = new ethers.Contract(aave, erc20Abi, aaveHolder) + await aaveContract.transfer(migrator.address, ethers.utils.parseUnits('400', 18)) + }) + + it("test settle 2", async function() { + const tx = await migrator.settle() + const receipt = await tx.wait() + + // console.log(receipt) + }) + + it("test migrate 2", async function() { + const positionData = '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000150acc42e6751776c9e784eff830cb4f35ae98f300000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000056900d33ca7fc00000000000000000000000000000000000000000000000000045400a8fd53300000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000004a817c80000000000000000000000000000000000000000000000000000000004a817c800000000000000000000000000000000000000000000000878678326eac90000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae90000000000000000000000000000000000000000000000000000000000000003000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000006b175474e89094c44da98b954eedeac495271d0f' + let tx = await migrator.onStateReceive("346", positionData) + await tx.wait() + + tx = await migrator.migrate("346") + await tx.wait() + }) + + it("test migrate 3", async function() { + const positionData = '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000aa5aa4110c8215a98c62d5f57adaa4a35cec8cbe00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000361a08405e8fd8000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000df847580000000000000000000000000000000000000000000000000000000009502f90000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7' + let tx = await migrator.onStateReceive("347", positionData) + await tx.wait() + + tx = await migrator.migrate("347") + await tx.wait() + }) + + it("test migrate 4", async function() { + const positionData = '0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000043cc83dc7ac2d47a5ad14db7e817b2e80b5cb93e00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000d86821017a3f60000000000000000000000000000000000000000000000000000000000000b274d080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000574fbde60000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c5990000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' + let tx = await migrator.onStateReceive("348", positionData) + await tx.wait() + + tx = await migrator.migrate("348") + await tx.wait() + }) }) \ No newline at end of file