mirror of
https://github.com/Instadapp/smart-contract.git
synced 2024-07-29 22:08:07 +00:00
added mcd compound migration mcd address interface
This commit is contained in:
parent
573936a915
commit
411879bd2f
|
@ -124,7 +124,7 @@ interface GemLike {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface JugLike {
|
interface JugLike {
|
||||||
function drip(bytes32) external;
|
function drip(bytes32) external returns (uint);
|
||||||
}
|
}
|
||||||
|
|
||||||
interface VatLike {
|
interface VatLike {
|
||||||
|
@ -169,6 +169,43 @@ interface ScdMcdMigration {
|
||||||
function swapSaiToDai(uint saiAmt) external;
|
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 {
|
contract DSMath {
|
||||||
|
|
||||||
|
@ -224,6 +261,13 @@ contract Helpers is DSMath {
|
||||||
csaiAddr = 0xF5DCe57282A584D2746FaF1593d3121Fcac444dC;
|
csaiAddr = 0xF5DCe57282A584D2746FaF1593d3121Fcac444dC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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
|
* @dev get Compound Comptroller Address
|
||||||
*/
|
*/
|
||||||
|
@ -235,7 +279,7 @@ contract Helpers is DSMath {
|
||||||
* @dev get Compound Comptroller Address
|
* @dev get Compound Comptroller Address
|
||||||
*/
|
*/
|
||||||
function getCDaiAddress() public pure returns (address cdaiAddr) {
|
function getCDaiAddress() public pure returns (address cdaiAddr) {
|
||||||
cdaiAddr = 0xF5DCe57282A584D2746FaF1593d3121Fcac444dC; // Check
|
cdaiAddr = 0xF5DCe57282A584D2746FaF1593d3121Fcac444dC; // Check Thrilok - add at the time of compound cDai
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -256,7 +300,7 @@ contract Helpers is DSMath {
|
||||||
* @dev get Dai (Dai v2) address
|
* @dev get Dai (Dai v2) address
|
||||||
*/
|
*/
|
||||||
function getDaiAddress() public pure returns (address dai) {
|
function getDaiAddress() public pure returns (address dai) {
|
||||||
dai = 0x1D7e3a1A65a367db1D1D3F51A54aC01a2c4C92ff;
|
dai = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -301,38 +345,6 @@ contract Helpers is DSMath {
|
||||||
addr = 0xc679857761beE860f5Ec4B3368dFE9752580B096;
|
addr = 0xc679857761beE860f5Ec4B3368dFE9752580B096;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getManagerAddress() public pure returns (address managerAddr) {
|
|
||||||
managerAddr = 0xb1fd1f2c83A6cb5155866169D81a9b7cF9e2019D;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getMigrateAddress() public pure returns (address migrateAddr) {
|
|
||||||
migrateAddr = 0xb1fd1f2c83A6cb5155866169D81a9b7cF9e2019D;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getdaiJoinAddress() public pure returns (address daiJoinAddr) {
|
|
||||||
daiJoinAddr = 0x9E0d5a6a836a6C323Cf45Eb07Cb40CFc81664eec; //Check
|
|
||||||
}
|
|
||||||
|
|
||||||
function getsaiJoinAddress() public pure returns (address saiJoinAddr) {
|
|
||||||
saiJoinAddr = 0xfe85Da396c78f698ec894bc90deC7d6F44cAA76C; //Check
|
|
||||||
}
|
|
||||||
|
|
||||||
function getEthJoinAddress() public pure returns (address ethJoinAddr) {
|
|
||||||
ethJoinAddr = 0x55cD2f4cF74eDc7c869BcF5e16086781eE97EE40; //Check
|
|
||||||
}
|
|
||||||
|
|
||||||
function getVatAddress() public pure returns (address vat) {
|
|
||||||
vat = 0xb597803e4B5b2A43A92F3e1DCaFEA5425c873116;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getSpotAddress() public pure returns (address spot) {
|
|
||||||
spot = 0x932E82e999Fad1f7Ea9566f42cd3E94a4F46897E;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getJugAddress() public pure returns (address jug) {
|
|
||||||
jug = 0x9404A7Fd173f1AA716416f391ACCD28Bd0d84406;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev setting allowance if required
|
* @dev setting allowance if required
|
||||||
*/
|
*/
|
||||||
|
@ -412,8 +424,9 @@ contract CompoundResolver is LiquidityResolver {
|
||||||
|
|
||||||
contract McdResolver is CompoundResolver {
|
contract McdResolver is CompoundResolver {
|
||||||
function open() internal returns (uint cdp) {
|
function open() internal returns (uint cdp) {
|
||||||
|
address manager = InstaMcdAddress(getMcdAddresses()).manager();
|
||||||
bytes32 ilk = 0x4554482d41000000000000000000000000000000000000000000000000000000;
|
bytes32 ilk = 0x4554482d41000000000000000000000000000000000000000000000000000000;
|
||||||
cdp = ManagerLike(getManagerAddress()).open(ilk, address(this));
|
cdp = ManagerLike(manager).open(ilk, address(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
function lockETH(
|
function lockETH(
|
||||||
|
@ -421,14 +434,16 @@ contract McdResolver is CompoundResolver {
|
||||||
uint amt
|
uint amt
|
||||||
) internal
|
) internal
|
||||||
{
|
{
|
||||||
GemJoinLike(getEthJoinAddress()).gem().deposit.value(amt)();
|
address manager = InstaMcdAddress(getMcdAddresses()).manager();
|
||||||
GemJoinLike(getEthJoinAddress()).gem().approve(address(getEthJoinAddress()), amt);
|
address ethJoin = InstaMcdAddress(getMcdAddresses()).ethAJoin();
|
||||||
GemJoinLike(getEthJoinAddress()).join(address(this), amt);
|
GemJoinLike(ethJoin).gem().deposit.value(amt)();
|
||||||
|
GemJoinLike(ethJoin).gem().approve(address(ethJoin), amt);
|
||||||
|
GemJoinLike(ethJoin).join(address(this), amt);
|
||||||
|
|
||||||
// Locks WETH amount into the CDP
|
// Locks WETH amount into the CDP
|
||||||
VatLike(ManagerLike(getManagerAddress()).vat()).frob(
|
VatLike(ManagerLike(manager).vat()).frob(
|
||||||
ManagerLike(getManagerAddress()).ilks(cdp),
|
ManagerLike(manager).ilks(cdp),
|
||||||
ManagerLike(getManagerAddress()).urns(cdp),
|
ManagerLike(manager).urns(cdp),
|
||||||
address(this),
|
address(this),
|
||||||
address(this),
|
address(this),
|
||||||
int(amt),
|
int(amt),
|
||||||
|
@ -441,11 +456,15 @@ contract McdResolver is CompoundResolver {
|
||||||
uint wad
|
uint wad
|
||||||
) internal
|
) internal
|
||||||
{
|
{
|
||||||
address urn = ManagerLike(getManagerAddress()).urns(cdp);
|
address manager = InstaMcdAddress(getMcdAddresses()).manager();
|
||||||
address vat = ManagerLike(getManagerAddress()).vat();
|
address jug = InstaMcdAddress(getMcdAddresses()).jug();
|
||||||
bytes32 ilk = ManagerLike(getManagerAddress()).ilks(cdp);
|
address daiJoin = InstaMcdAddress(getMcdAddresses()).daiJoin();
|
||||||
|
|
||||||
|
address urn = ManagerLike(manager).urns(cdp);
|
||||||
|
address vat = ManagerLike(manager).vat();
|
||||||
|
bytes32 ilk = ManagerLike(manager).ilks(cdp);
|
||||||
// Updates stability fee rate before generating new debt
|
// Updates stability fee rate before generating new debt
|
||||||
JugLike(getJugAddress()).drip(ilk);
|
JugLike(jug).drip(ilk);
|
||||||
|
|
||||||
int dart;
|
int dart;
|
||||||
// Gets actual rate from the vat
|
// Gets actual rate from the vat
|
||||||
|
@ -461,14 +480,14 @@ contract McdResolver is CompoundResolver {
|
||||||
dart = mul(uint(dart), rate) < mul(wad, RAY) ? dart + 1 : dart;
|
dart = mul(uint(dart), rate) < mul(wad, RAY) ? dart + 1 : dart;
|
||||||
}
|
}
|
||||||
|
|
||||||
ManagerLike(getManagerAddress()).frob(cdp, 0, dart);
|
ManagerLike(manager).frob(cdp, 0, dart);
|
||||||
// Moves the DAI amount (balance in the vat in rad) to proxy's address
|
// Moves the DAI amount (balance in the vat in rad) to proxy's address
|
||||||
ManagerLike(getManagerAddress()).move(cdp, address(this), toRad(wad));
|
ManagerLike(manager).move(cdp, address(this), toRad(wad));
|
||||||
// Allows adapter to access to proxy's DAI balance in the vat
|
// Allows adapter to access to proxy's DAI balance in the vat
|
||||||
if (VatLike(vat).can(address(this), address(getdaiJoinAddress())) == 0) {
|
if (VatLike(vat).can(address(this), address(daiJoin)) == 0) {
|
||||||
VatLike(vat).hope(getdaiJoinAddress());
|
VatLike(vat).hope(daiJoin);
|
||||||
}
|
}
|
||||||
DaiJoinLike(getdaiJoinAddress()).exit(address(this), wad);
|
DaiJoinLike(daiJoin).exit(address(this), wad);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -478,12 +497,13 @@ contract CompMcdResolver is McdResolver {
|
||||||
uint wad // Amount to swap
|
uint wad // Amount to swap
|
||||||
) internal
|
) internal
|
||||||
{
|
{
|
||||||
|
address payable scdMcdMigration = InstaMcdAddress(getMcdAddresses()).migration();
|
||||||
TokenInterface sai = TokenInterface(getSaiAddress());
|
TokenInterface sai = TokenInterface(getSaiAddress());
|
||||||
TokenInterface dai = TokenInterface(getDaiAddress());
|
TokenInterface dai = TokenInterface(getDaiAddress());
|
||||||
if (dai.allowance(address(this), getMigrateAddress()) < wad) {
|
if (dai.allowance(address(this), scdMcdMigration) < wad) {
|
||||||
dai.approve(getMigrateAddress(), wad);
|
dai.approve(scdMcdMigration, wad);
|
||||||
}
|
}
|
||||||
ScdMcdMigration(getMigrateAddress()).swapDaiToSai(wad);
|
ScdMcdMigration(scdMcdMigration).swapDaiToSai(wad);
|
||||||
sai.transfer(getPoolAddress(), wad);
|
sai.transfer(getPoolAddress(), wad);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user