added sai to dai proxy logic

This commit is contained in:
Thrilok Kumar 2019-11-26 05:12:10 +08:00
parent 759a19e665
commit 3c46226357

View 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);
}
}