mirror of
https://github.com/Instadapp/smart-contract.git
synced 2024-07-29 22:08:07 +00:00
added sai to dai proxy logic
This commit is contained in:
parent
759a19e665
commit
3c46226357
74
contracts/ProxyLogics/MCD/InstaMcdSwap.sol
Normal file
74
contracts/ProxyLogics/MCD/InstaMcdSwap.sol
Normal file
|
@ -0,0 +1,74 @@
|
|||
pragma solidity ^0.5.8;
|
||||
|
||||
interface TokenInterface {
|
||||
function allowance(address, address) external view returns (uint);
|
||||
function balanceOf(address) external view returns (uint);
|
||||
function approve(address, uint) external;
|
||||
function transfer(address, uint) external returns (bool);
|
||||
function transferFrom(address, address, uint) external returns (bool);
|
||||
}
|
||||
|
||||
/** Swap Functionality */
|
||||
interface ScdMcdMigration {
|
||||
function swapDaiToSai(uint daiAmt) external;
|
||||
function swapSaiToDai(uint saiAmt) external;
|
||||
}
|
||||
|
||||
interface InstaMcdAddress {
|
||||
function migration() external returns (address payable);
|
||||
}
|
||||
|
||||
|
||||
contract Helpers {
|
||||
/**
|
||||
* @dev get MakerDAO MCD Address contract
|
||||
*/
|
||||
function getMcdAddresses() public pure returns (address mcd) {
|
||||
mcd = 0xF23196DF1C440345DE07feFbe556a5eF0dcD29F0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev get Sai (Dai v1) address
|
||||
*/
|
||||
function getSaiAddress() public pure returns (address sai) {
|
||||
sai = 0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev get Dai (Dai v2) address
|
||||
*/
|
||||
function getDaiAddress() public pure returns (address dai) {
|
||||
dai = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
contract InstaMcdSwap is Helpers {
|
||||
function swapDaiToSai(
|
||||
uint wad // Amount to swap
|
||||
) external
|
||||
{
|
||||
address scdMcdMigration = InstaMcdAddress(getMcdAddresses()).migration(); // Migration contract address
|
||||
TokenInterface dai = TokenInterface(getDaiAddress());
|
||||
dai.transferFrom(msg.sender, address(this), wad);
|
||||
if (dai.allowance(address(this), scdMcdMigration) < wad) {
|
||||
dai.approve(scdMcdMigration, wad);
|
||||
}
|
||||
ScdMcdMigration(scdMcdMigration).swapDaiToSai(wad);
|
||||
TokenInterface(getSaiAddress()).transfer(msg.sender, wad);
|
||||
}
|
||||
|
||||
function swapSaiToDai(
|
||||
uint wad // Amount to swap
|
||||
) external
|
||||
{
|
||||
address scdMcdMigration = InstaMcdAddress(getMcdAddresses()).migration(); // Migration contract address
|
||||
TokenInterface sai = TokenInterface(getSaiAddress());
|
||||
sai.transferFrom(msg.sender, address(this), wad);
|
||||
if (sai.allowance(address(this), scdMcdMigration) < wad) {
|
||||
sai.approve(scdMcdMigration, wad);
|
||||
}
|
||||
ScdMcdMigration(scdMcdMigration).swapSaiToDai(wad);
|
||||
TokenInterface(getDaiAddress()).transfer(msg.sender, wad);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user