From 3d126f011f5852d32727322f9df1aa18c84687fa Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Sat, 16 Nov 2019 03:44:11 +0530 Subject: [PATCH] added mcd addresses interface in comp debt migrate --- contracts/ProxyLogics/InstaCompMigrate.sol | 66 ++++++++++++++++++---- 1 file changed, 56 insertions(+), 10 deletions(-) diff --git a/contracts/ProxyLogics/InstaCompMigrate.sol b/contracts/ProxyLogics/InstaCompMigrate.sol index 08558b5..a95a178 100644 --- a/contracts/ProxyLogics/InstaCompMigrate.sol +++ b/contracts/ProxyLogics/InstaCompMigrate.sol @@ -1,5 +1,7 @@ pragma solidity ^0.5.7; - +/** + compound debt migrate + */ interface CTokenInterface { function mint(uint mintAmount) external returns (uint); function redeem(uint redeemTokens) external returns (uint); @@ -42,6 +44,43 @@ interface ScdMcdMigration { function swapSaiToDai(uint saiAmt) external; } +interface InstaMcdAddress { + function manager() external returns (address); + function dai() external returns (address); + function daiJoin() external returns (address); + function vat() external returns (address); + function jug() external returns (address); + function cat() external returns (address); + function gov() external returns (address); + function adm() external returns (address); + function vow() external returns (address); + function spot() external returns (address); + function pot() external returns (address); + function esm() external returns (address); + function mcdFlap() external returns (address); + function mcdFlop() external returns (address); + function mcdDeploy() external returns (address); + function mcdEnd() external returns (address); + function proxyActions() external returns (address); + function proxyActionsEnd() external returns (address); + function proxyActionsDsr() external returns (address); + function getCdps() external returns (address); + function saiTub() external returns (address); + function weth() external returns (address); + function bat() external returns (address); + function sai() external returns (address); + function ethAJoin() external returns (address); + function ethAFlip() external returns (address); + function batAJoin() external returns (address); + function batAFlip() external returns (address); + function ethPip() external returns (address); + function batAPip() external returns (address); + function saiJoin() external returns (address); + function saiFlip() external returns (address); + function saiPip() external returns (address); + function migration() external returns (address payable); +} + contract DSMath { @@ -79,6 +118,13 @@ contract Helpers is DSMath { troller = 0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B; } + /** + * @dev get MakerDAO MCD Address contract + */ + function getMcdAddresses() public pure returns (address mcd) { + mcd = 0x448a5065aeBB8E423F0896E6c5D525C040f59af3; // Check Thrilok - add addr at time of deploy + } + /** * @dev get Compound Comptroller Address */ @@ -90,7 +136,7 @@ contract Helpers is DSMath { * @dev get Compound Comptroller Address */ function getCDaiAddress() public pure returns (address cdaiAddr) { - // cdaiAddr = ; + cdaiAddr = 0xF5DCe57282A584D2746FaF1593d3121Fcac444dC; //Check Thrilok - add address before release } /** @@ -104,7 +150,7 @@ contract Helpers is DSMath { * @dev get Compound Comptroller Address */ function getDaiAddress() public pure returns (address daiAddr) { - // daiAddr = ; + daiAddr = 0x6B175474E89094C44Da98b954EedeAC495271d0F; } /** @@ -168,10 +214,10 @@ contract PoolActions is Helpers { contract MigrationProxyActions is PoolActions { function swapSaiToDai( - address scdMcdMigration, // Migration contract address uint wad // Amount to swap ) internal { + address payable scdMcdMigration = InstaMcdAddress(getMcdAddresses()).migration(); ERC20Interface sai = ERC20Interface(getSaiAddress()); if (sai.allowance(address(this), scdMcdMigration) < wad) { sai.approve(scdMcdMigration, wad); @@ -180,10 +226,10 @@ contract MigrationProxyActions is PoolActions { } function swapDaiToSai( - address scdMcdMigration, // Migration contract address uint wad // Amount to swap ) internal { + address payable scdMcdMigration = InstaMcdAddress(getMcdAddresses()).migration(); ERC20Interface sai = ERC20Interface(getSaiAddress()); ERC20Interface dai = ERC20Interface(getDaiAddress()); if (dai.allowance(address(this), scdMcdMigration) < wad) { @@ -249,24 +295,24 @@ contract CompMigration is CompoundResolver { event LogCompMigrateCSaiToCDai(uint swapAmt, address owner); event LogCompMigrateDebt(uint migrateAmt, address owner); - function migrateCSaiToCDai(uint ctknToMigrate, address scdMcdMigration) external { + function migrateCSaiToCDai(uint ctknToMigrate) external { redeemCSai(getCSaiAddress(), ctknToMigrate); uint saiBal = ERC20Interface(getSaiAddress()).balanceOf(address(this)); - swapSaiToDai(scdMcdMigration, saiBal); + swapSaiToDai(saiBal); mintCDai(getCDaiAddress()); emit LogCompMigrateCSaiToCDai(saiBal, address(this)); } - function migrateDebt(uint debtToMigrate, address scdMcdMigration, address daiJoin) external { + function migrateDebt(uint debtToMigrate) external { uint initialPoolBal = sub(getLiquidityAddress().balance, 10000000000); - uint saiJoinBal = ERC20Interface(getSaiAddress()).balanceOf(daiJoin); + uint saiJoinBal = ERC20Interface(getSaiAddress()).balanceOf(InstaMcdAddress(getMcdAddresses()).saiJoin()); // Check SAI balance of migration contract. If less than debtToMigrate then set debtToMigrate = SAI_Bal uint migrateAmt = debtToMigrate < saiJoinBal ? debtToMigrate : sub(saiJoinBal, 1000); uint debtPaid = repaySAI(migrateAmt); // Repaying SAI debt using InstaDApp pool borrowDAI(debtPaid); // borrowing DAI debt - swapDaiToSai(scdMcdMigration, debtPaid); // swapping SAI into DAI and paying back to InstaDApp pool + swapDaiToSai(debtPaid); // swapping SAI into DAI and paying back to InstaDApp pool uint finalPoolBal = getLiquidityAddress().balance; assert(finalPoolBal >= initialPoolBal); emit LogCompMigrateDebt(debtPaid, address(this));