mirror of
https://github.com/Instadapp/smart-contract.git
synced 2024-07-29 22:08:07 +00:00
Added mcd addresses interface
This commit is contained in:
parent
2859df8d21
commit
c642c8ddc5
|
@ -73,23 +73,25 @@ interface OtcInterface {
|
||||||
) external;
|
) external;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface GemLike {
|
||||||
|
function approve(address, uint) external;
|
||||||
|
function transfer(address, uint) external;
|
||||||
|
function transferFrom(address, address, uint) external;
|
||||||
|
function deposit() external payable;
|
||||||
|
function withdraw(uint) external;
|
||||||
|
}
|
||||||
|
|
||||||
interface ManagerLike {
|
interface ManagerLike {
|
||||||
function cdpCan(address, uint, address) external view returns (uint);
|
function cdpCan(address, uint, address) external view returns (uint);
|
||||||
function ilks(uint) external view returns (bytes32);
|
function ilks(uint) external view returns (bytes32);
|
||||||
function owns(uint) external view returns (address);
|
function owns(uint) external view returns (address);
|
||||||
function urns(uint) external view returns (address);
|
function urns(uint) external view returns (address);
|
||||||
function vat() external view returns (address);
|
function vat() external view returns (address);
|
||||||
function open(bytes32) external returns (uint);
|
function open(bytes32, address) external returns (uint);
|
||||||
function give(uint, address) external;
|
function give(uint, address) external;
|
||||||
function cdpAllow(uint, address, uint) external;
|
function cdpAllow(uint, address, uint) external;
|
||||||
function urnAllow(address, uint) external;
|
function urnAllow(address, uint) external;
|
||||||
function frob(uint, int, int) external;
|
function frob(uint, int, int) external;
|
||||||
function frob(
|
|
||||||
uint,
|
|
||||||
address,
|
|
||||||
int,
|
|
||||||
int
|
|
||||||
) external;
|
|
||||||
function flux(uint, address, uint) external;
|
function flux(uint, address, uint) external;
|
||||||
function move(uint, address, uint) external;
|
function move(uint, address, uint) external;
|
||||||
function exit(
|
function exit(
|
||||||
|
@ -103,6 +105,43 @@ interface ManagerLike {
|
||||||
function shift(uint, uint) external;
|
function shift(uint, uint) 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 {
|
contract DSMath {
|
||||||
|
|
||||||
|
@ -149,6 +188,13 @@ contract Helpers is DSMath {
|
||||||
sai = 0x448a5065aeBB8E423F0896E6c5D525C040f59af3;
|
sai = 0x448a5065aeBB8E423F0896E6c5D525C040f59af3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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 Sai (Dai v1) address
|
* @dev get Sai (Dai v1) address
|
||||||
*/
|
*/
|
||||||
|
@ -170,20 +216,6 @@ contract Helpers is DSMath {
|
||||||
otcAddr = 0x39755357759cE0d7f32dC8dC45414CCa409AE24e; // main
|
otcAddr = 0x39755357759cE0d7f32dC8dC45414CCa409AE24e; // main
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev get uniswap MKR exchange
|
|
||||||
*/
|
|
||||||
function getUniswapMKRExchange() public pure returns (address ume) {
|
|
||||||
ume = 0x2C4Bd064b998838076fa341A83d007FC2FA50957;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dev get uniswap factory
|
|
||||||
*/
|
|
||||||
function getUniswapFactory() public pure returns (address addr) {
|
|
||||||
addr = 0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev get InstaDApp Liquidity Address
|
* @dev get InstaDApp Liquidity Address
|
||||||
*/
|
*/
|
||||||
|
@ -263,21 +295,17 @@ contract MKRSwapper is LiquidityResolver {
|
||||||
contract SCDResolver is MKRSwapper {
|
contract SCDResolver is MKRSwapper {
|
||||||
|
|
||||||
function getFeeOfCdp(bytes32 cup, uint _wad) internal returns (uint feeAmt) {
|
function getFeeOfCdp(bytes32 cup, uint _wad) internal returns (uint feeAmt) {
|
||||||
// Set ratio according to user.
|
|
||||||
TubInterface tub = TubInterface(getSaiTubAddress());
|
TubInterface tub = TubInterface(getSaiTubAddress());
|
||||||
|
|
||||||
(bytes32 val, bool ok) = tub.pep().peek();
|
(bytes32 val, bool ok) = tub.pep().peek();
|
||||||
TokenInterface mkr = TubInterface(getSaiTubAddress()).gov();
|
TokenInterface mkr = TubInterface(getSaiTubAddress()).gov();
|
||||||
|
|
||||||
feeAmt = 0;
|
feeAmt = 0;
|
||||||
|
|
||||||
// wad according to toConvert ratio
|
|
||||||
|
|
||||||
if (ok && val != 0) {
|
if (ok && val != 0) {
|
||||||
// MKR required for wipe = Stability fees accrued in Dai / MKRUSD value
|
// MKR required for wipe = Stability fees accrued in Dai / MKRUSD value
|
||||||
uint mkrFee = rdiv(tub.rap(cup), tub.tab(cup));
|
uint mkrFee = rdiv(tub.rap(cup), tub.tab(cup));
|
||||||
mkrFee = rmul(_wad, mkrFee);
|
mkrFee = rmul(_wad, mkrFee);
|
||||||
mkrFee = wdiv(mkrFee, uint(val));
|
mkrFee = wdiv(mkrFee, uint(val));
|
||||||
|
// convert mkr amount into sai amount
|
||||||
feeAmt = OtcInterface(getOtcAddress()).getPayAmount(getSaiAddress(), address(mkr), mkrFee);
|
feeAmt = OtcInterface(getOtcAddress()).getPayAmount(getSaiAddress(), address(mkr), mkrFee);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -346,11 +374,11 @@ contract SCDResolver is MKRSwapper {
|
||||||
|
|
||||||
contract MCDResolver is SCDResolver {
|
contract MCDResolver is SCDResolver {
|
||||||
function migrateToMCD(
|
function migrateToMCD(
|
||||||
address payable scdMcdMigration, // Migration contract address
|
|
||||||
bytes32 cup, // SCD CDP Id to migrate
|
bytes32 cup, // SCD CDP Id to migrate
|
||||||
address payGem // Token address
|
address payGem // Token address
|
||||||
) internal returns (uint cdp)
|
) internal returns (uint cdp)
|
||||||
{
|
{
|
||||||
|
address payable scdMcdMigration = InstaMcdAddress(getMcdAddresses()).migration();
|
||||||
TubInterface tub = TubInterface(getSaiTubAddress());
|
TubInterface tub = TubInterface(getSaiTubAddress());
|
||||||
tub.give(cup, address(scdMcdMigration));
|
tub.give(cup, address(scdMcdMigration));
|
||||||
|
|
||||||
|
@ -362,10 +390,10 @@ contract MCDResolver is SCDResolver {
|
||||||
if (govFee > 0) {
|
if (govFee > 0) {
|
||||||
if (payGem != address(0)) {
|
if (payGem != address(0)) {
|
||||||
swapToMkrOtc(payGem, govFee);
|
swapToMkrOtc(payGem, govFee);
|
||||||
|
require(tub.gov().transfer(address(scdMcdMigration), govFee), "transfer-failed");
|
||||||
} else {
|
} else {
|
||||||
require(tub.gov().transferFrom(msg.sender, address(this), govFee), "transfer-failed"); // Check Samyak - We can directly transfer MKR to address(scdMcdMigration). Right?
|
require(tub.gov().transferFrom(msg.sender, address(scdMcdMigration), govFee), "transfer-failed"); // Check Thrilok - is it working => We can directly transfer MKR to address(scdMcdMigration). Right?
|
||||||
}
|
}
|
||||||
require(tub.gov().transfer(address(scdMcdMigration), govFee), "transfer-failed");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Execute migrate function
|
// Execute migrate function
|
||||||
|
@ -373,20 +401,20 @@ contract MCDResolver is SCDResolver {
|
||||||
}
|
}
|
||||||
|
|
||||||
function giveCDP(
|
function giveCDP(
|
||||||
address manager,
|
|
||||||
uint cdp,
|
uint cdp,
|
||||||
address nextOwner
|
address nextOwner
|
||||||
) internal
|
) internal
|
||||||
{
|
{
|
||||||
|
address manager = InstaMcdAddress(getMcdAddresses()).manager();
|
||||||
ManagerLike(manager).give(cdp, nextOwner);
|
ManagerLike(manager).give(cdp, nextOwner);
|
||||||
}
|
}
|
||||||
|
|
||||||
function shiftCDP(
|
function shiftCDP(
|
||||||
address manager,
|
|
||||||
uint cdpSrc,
|
uint cdpSrc,
|
||||||
uint cdpOrg
|
uint cdpOrg
|
||||||
) internal
|
) internal
|
||||||
{
|
{
|
||||||
|
address manager = InstaMcdAddress(getMcdAddresses()).manager();
|
||||||
require(ManagerLike(manager).owns(cdpOrg) == address(this), "NOT-OWNER");
|
require(ManagerLike(manager).owns(cdpOrg) == address(this), "NOT-OWNER");
|
||||||
ManagerLike(manager).shift(cdpSrc, cdpOrg);
|
ManagerLike(manager).shift(cdpSrc, cdpOrg);
|
||||||
}
|
}
|
||||||
|
@ -442,7 +470,7 @@ contract MigrateHelper is MCDResolver {
|
||||||
uint initialPoolBal = sub(getPoolAddress().balance, 10000000000);
|
uint initialPoolBal = sub(getPoolAddress().balance, 10000000000);
|
||||||
|
|
||||||
// Check if the split fee is paid by debt from the cdp.
|
// Check if the split fee is paid by debt from the cdp.
|
||||||
uint _wadForDebt = payFeeWith == getSaiAddress() ? add(_wad, getFeeOfCdp(scdCup, _wad)) : _wad; // Check Thrilok - gas fee;
|
uint _wadForDebt = payFeeWith == getSaiAddress() ? add(_wad, getFeeOfCdp(scdCup, _wad)) : _wad;
|
||||||
|
|
||||||
//fetch liquidity from InstaDApp Pool.
|
//fetch liquidity from InstaDApp Pool.
|
||||||
getLiquidity(_wadForDebt);
|
getLiquidity(_wadForDebt);
|
||||||
|
@ -479,10 +507,7 @@ contract MigrateResolver is MigrateHelper {
|
||||||
uint scdCDP,
|
uint scdCDP,
|
||||||
uint mergeCDP,
|
uint mergeCDP,
|
||||||
uint toConvert,
|
uint toConvert,
|
||||||
address payFeeWith,
|
address payFeeWith
|
||||||
address payable scdMcdMigration,
|
|
||||||
address manager,
|
|
||||||
address daiJoin
|
|
||||||
) external payable returns (uint newMcdCdp)
|
) external payable returns (uint newMcdCdp)
|
||||||
{
|
{
|
||||||
bytes32 scdCup = bytes32(scdCDP);
|
bytes32 scdCup = bytes32(scdCDP);
|
||||||
|
@ -499,7 +524,7 @@ contract MigrateResolver is MigrateHelper {
|
||||||
scdCup,
|
scdCup,
|
||||||
toConvert,
|
toConvert,
|
||||||
payFeeWith,
|
payFeeWith,
|
||||||
daiJoin);
|
InstaMcdAddress(getMcdAddresses()).saiJoin());
|
||||||
|
|
||||||
//split the assets into split cdp.
|
//split the assets into split cdp.
|
||||||
splitCdp(
|
splitCdp(
|
||||||
|
@ -511,10 +536,10 @@ contract MigrateResolver is MigrateHelper {
|
||||||
);
|
);
|
||||||
|
|
||||||
//migrate the split cdp.
|
//migrate the split cdp.
|
||||||
newMcdCdp = migrateToMCD(scdMcdMigration, splitCup, payFeeWith);
|
newMcdCdp = migrateToMCD(splitCup, payFeeWith);
|
||||||
} else {
|
} else {
|
||||||
//migrate the scd cdp.
|
//migrate the scd cdp.
|
||||||
newMcdCdp = migrateToMCD(scdMcdMigration, scdCup, payFeeWith);
|
newMcdCdp = migrateToMCD(scdCup, payFeeWith);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Transfer if any ETH leftover.
|
//Transfer if any ETH leftover.
|
||||||
|
@ -524,8 +549,8 @@ contract MigrateResolver is MigrateHelper {
|
||||||
|
|
||||||
//merge the already existing mcd cdp with the new migrated cdp.
|
//merge the already existing mcd cdp with the new migrated cdp.
|
||||||
if (mergeCDP != 0) {
|
if (mergeCDP != 0) {
|
||||||
shiftCDP(manager, newMcdCdp, mergeCDP);
|
shiftCDP(newMcdCdp, mergeCDP);
|
||||||
giveCDP(manager, newMcdCdp, getGiveAddress());
|
giveCDP(newMcdCdp, getGiveAddress());
|
||||||
}
|
}
|
||||||
|
|
||||||
emit LogMigrate(
|
emit LogMigrate(
|
||||||
|
@ -541,10 +566,7 @@ contract MigrateResolver is MigrateHelper {
|
||||||
uint scdCDP,
|
uint scdCDP,
|
||||||
uint mergeCDP,
|
uint mergeCDP,
|
||||||
uint toConvert,
|
uint toConvert,
|
||||||
address payFeeWith,
|
address payFeeWith
|
||||||
address payable scdMcdMigration,
|
|
||||||
address manager,
|
|
||||||
address daiJoin
|
|
||||||
) external payable returns (uint newMcdCdp)
|
) external payable returns (uint newMcdCdp)
|
||||||
{
|
{
|
||||||
bytes32 scdCup = bytes32(scdCDP);
|
bytes32 scdCup = bytes32(scdCDP);
|
||||||
|
@ -561,7 +583,7 @@ contract MigrateResolver is MigrateHelper {
|
||||||
scdCup,
|
scdCup,
|
||||||
toConvert,
|
toConvert,
|
||||||
payFeeWith,
|
payFeeWith,
|
||||||
daiJoin);
|
InstaMcdAddress(getMcdAddresses()).saiJoin());
|
||||||
|
|
||||||
//split the assets into split cdp.
|
//split the assets into split cdp.
|
||||||
splitCdp(
|
splitCdp(
|
||||||
|
@ -573,12 +595,12 @@ contract MigrateResolver is MigrateHelper {
|
||||||
);
|
);
|
||||||
|
|
||||||
//migrate the split cdp.
|
//migrate the split cdp.
|
||||||
newMcdCdp = migrateToMCD(scdMcdMigration, splitCup, payFeeWith);
|
newMcdCdp = migrateToMCD(splitCup, payFeeWith);
|
||||||
} else {
|
} else {
|
||||||
// draw extra SAI for paying fee.
|
// draw extra SAI for paying fee.
|
||||||
drawDebtForFee(scdCup);
|
drawDebtForFee(scdCup);
|
||||||
//migrate the scd cdp.
|
//migrate the scd cdp.
|
||||||
newMcdCdp = migrateToMCD(scdMcdMigration, scdCup, payFeeWith);
|
newMcdCdp = migrateToMCD(scdCup, payFeeWith);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Transfer if any ETH leftover.
|
//Transfer if any ETH leftover.
|
||||||
|
@ -588,8 +610,8 @@ contract MigrateResolver is MigrateHelper {
|
||||||
|
|
||||||
//merge the already existing mcd cdp with the new migrated cdp.
|
//merge the already existing mcd cdp with the new migrated cdp.
|
||||||
if (mergeCDP != 0) {
|
if (mergeCDP != 0) {
|
||||||
shiftCDP(manager, newMcdCdp, mergeCDP);
|
shiftCDP(newMcdCdp, mergeCDP);
|
||||||
giveCDP(manager, newMcdCdp, getGiveAddress());
|
giveCDP(newMcdCdp, getGiveAddress());
|
||||||
}
|
}
|
||||||
|
|
||||||
emit LogMigrateWithDebt(
|
emit LogMigrateWithDebt(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user