From 5dc98ffa036ef553d3c5bec0cc3c66c994fbc977 Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Wed, 20 Nov 2019 06:33:22 +0530 Subject: [PATCH] Fixed mcd migration bug --- contracts/ProxyLogics/MCD/InstaMcdMigrate.sol | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/contracts/ProxyLogics/MCD/InstaMcdMigrate.sol b/contracts/ProxyLogics/MCD/InstaMcdMigrate.sol index ffcaf06..3f108cb 100644 --- a/contracts/ProxyLogics/MCD/InstaMcdMigrate.sol +++ b/contracts/ProxyLogics/MCD/InstaMcdMigrate.sol @@ -489,19 +489,21 @@ contract MigrateHelper is MCDResolver { uint saiBal = tub.sai().balanceOf(saiJoin); uint _wadTotal = tub.tab(cup); - uint feeAmt = 0; // wad according to toConvert ratio _wad = wmul(_wadTotal, toConvert); // if migration is by debt method, Add fee(SAI) to _wad if (payFeeWith == getSaiAddress()) { - uint mkrAmt = getFeeOfCdp(cup, _wad); - (, feeAmt) = getBestMkrSwap(getSaiAddress(), mkrAmt); - _wad = add(_wad, feeAmt); + (,uint feeAmt) = getBestMkrSwap(getSaiAddress(), getFeeOfCdp(cup, _wad)); + if (saiBal < add(_wad, feeAmt)) { + (, uint totalFeeAmt) = getBestMkrSwap(getSaiAddress(), getFeeOfCdp(cup, _wadTotal)); + uint _totalWadDebt = add(_wadTotal, totalFeeAmt); + maxConvert = sub(wdiv(saiBal, _totalWadDebt), 1000); // (saiBal / debt + fee) => toConvert + _wad = wmul(_wadTotal, maxConvert); + } } - //if sai_join has enough sai to migrate. if (saiBal < _wad) { // set saiBal as wad amount And sub feeAmt(feeAmt > 0, when its debt method). _wad = sub(saiBal, 100000); @@ -510,7 +512,6 @@ contract MigrateHelper is MCDResolver { } // ink according to maxConvert ratio. - _wad = sub(_wad, feeAmt); _ink = wmul(tub.ink(cup), maxConvert); }