diff --git a/contracts/liquidity.sol b/contracts/liquidity.sol index 991df3a..402b7fb 100644 --- a/contracts/liquidity.sol +++ b/contracts/liquidity.sol @@ -262,7 +262,7 @@ interface MigrationInterface { contract Setup { address public constant soloAddr = 0x1E0447b19BB6EcFdAe1e4AE1694b0C3659614e4e; address public constant wethAddr = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; - MigrationInterface public constant migrationAddr = MigrationInterface(address(0)); // TODO: Migration address + MigrationInterface public constant migrationAddr = MigrationInterface(0xE3901a1bb3EefBF6bc90c201076e9068b646C1f3); // TODO: Migration address TokenInterface wethContract = TokenInterface(wethAddr); ISoloMargin solo = ISoloMargin(soloAddr); @@ -288,7 +288,7 @@ contract DydxFlashloaner is Setup, ICallee, DydxFlashloanBase, DSMath { wethContract.transfer(address(migrationAddr), ethAmt); - Address.functionCall(address(migrationAddr), callData); + Address.functionCall(address(migrationAddr), callData); // Failing here?? `revert Address: low-level call failed` } function initiateFlashLoan(bytes memory data, uint ethAmt) external { diff --git a/contracts/senders/aave-v2-migrator/main.sol b/contracts/senders/aave-v2-migrator/main.sol index 144ec42..0088e91 100644 --- a/contracts/senders/aave-v2-migrator/main.sol +++ b/contracts/senders/aave-v2-migrator/main.sol @@ -3,6 +3,7 @@ pragma experimental ABIEncoderV2; import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "hardhat/console.sol"; import { TokenInterface } from "../../common/interfaces.sol"; import { Helpers } from "./helpers.sol"; import { AaveInterface, ATokenInterface, IndexInterface } from "./interfaces.sol"; @@ -172,6 +173,7 @@ contract MigrateResolver is LiquidityResolver { } function migrateFlashCallback(AaveDataRaw calldata _data, address dsa, uint ethAmt) external { + console.log("msg.sender", msg.sender); require(msg.sender == address(flashloanContract), "not-flashloan-contract"); // TODO: flash loan contract AaveInterface aave = AaveInterface(aaveProvider.getLendingPool()); diff --git a/contracts/senders/aave-v2-migrator/variables.sol b/contracts/senders/aave-v2-migrator/variables.sol index 9ce8e72..bbf0b54 100644 --- a/contracts/senders/aave-v2-migrator/variables.sol +++ b/contracts/senders/aave-v2-migrator/variables.sol @@ -40,7 +40,7 @@ contract Variables { uint16 constant internal referralCode = 3228; address constant internal polygonReceiver = address(0); // TODO: Replace this - FlashloanInterface constant internal flashloanContract = FlashloanInterface(address(0)); // TODO: Replace this + FlashloanInterface constant internal flashloanContract = FlashloanInterface(0x709407B70ce0845996108205aA92aE87B22F7b1a); // TODO: Replace this address constant internal erc20Predicate = 0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf; // This will be used to have debt/collateral ratio always 20% less than liquidation diff --git a/hardhat.config.js b/hardhat.config.js index 2231bbd..38c8bd5 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -67,6 +67,9 @@ module.exports = { }, etherscan: { apiKey: process.env.ETHERSCAN + }, + mocha: { + timeout: 50000 } }; \ No newline at end of file diff --git a/test/migrator_l1.test.js b/test/migrator_l1.test.js index 08eff94..3250c03 100644 --- a/test/migrator_l1.test.js +++ b/test/migrator_l1.test.js @@ -4,9 +4,10 @@ const { ethers, network, waffle } = hre; const { provider, deployContract } = waffle const Migrator = require("../artifacts/contracts/senders/aave-v2-migrator/main.sol/MigrateResolver.json") +const InstaPool = require("../artifacts/contracts/liquidity.sol/InstaPool.json") describe("Migrator", function() { - let accounts, masterAddress, master, migrator, ethereum + let accounts, masterAddress, master, migrator, ethereum, instapool const erc20Abi = [ "function balanceOf(address) view returns (uint)", @@ -32,8 +33,10 @@ describe("Migrator", function() { master = ethers.provider.getSigner(masterAddress) migrator = await deployContract(master, Migrator, []) + instapool = await deployContract(master, InstaPool, []) console.log("Migrator deployed: ", migrator.address) + console.log("Instapool deployed: ", instapool.address) const usdcHolderAddr = '0x47ac0fb4f2d84898e4d9e7b4dab3c24507a6d503' // 1,000,000 await accounts[0].sendTransaction({ to: usdcHolderAddr, value: ethers.utils.parseEther('1') }) @@ -82,6 +85,7 @@ describe("Migrator", function() { const wethHolder = ethers.provider.getSigner(wethHolderAddr) const wethContract = new ethers.Contract(weth, erc20Abi, wethHolder) await wethContract.transfer(migrator.address, ethers.utils.parseUnits('500', 18)) + await wethContract.transfer(instapool.address, ethers.utils.parseUnits('10', 18)) ethereum = network.provider }) @@ -111,7 +115,7 @@ describe("Migrator", function() { }) const signer = ethers.provider.getSigner(sourceAddr) - const tx = await migrator.connect(signer).migrate(rawData) + const tx = await migrator.connect(signer).migrateWithFlash(rawData, ethers.utils.parseEther('20')) const receipt = await tx.wait() console.log(receipt)