mirror of
https://github.com/Instadapp/smart-contract.git
synced 2024-07-29 22:08:07 +00:00
34 lines
1.3 KiB
Solidity
34 lines
1.3 KiB
Solidity
|
pragma solidity ^0.5.7;
|
||
|
|
||
|
interface UniswapExchange {
|
||
|
function ethToTokenSwapInput(uint minTokens, uint deadline) external payable returns (uint tokenBought);
|
||
|
function tokenToEthSwapInput(uint tokenSold, uint minEth, uint deadline) external returns (uint ethBought);
|
||
|
}
|
||
|
|
||
|
interface TokenInterface {
|
||
|
function transfer(address, uint) external returns (bool);
|
||
|
function approve(address, uint) external;
|
||
|
function transferFrom(address, address, uint) external returns (bool);
|
||
|
}
|
||
|
|
||
|
|
||
|
contract Swap {
|
||
|
|
||
|
address public daiAddr = 0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359;
|
||
|
address public daiExchange = 0x09cabEC1eAd1c0Ba254B09efb3EE13841712bE14;
|
||
|
|
||
|
function ethToDai() public payable {
|
||
|
uint destAmt = UniswapExchange(daiExchange).ethToTokenSwapInput.value(msg.value)(1, block.timestamp + 1);
|
||
|
require(TokenInterface(daiAddr).transfer(msg.sender, destAmt));
|
||
|
}
|
||
|
|
||
|
function daiToEth(uint daiAmt) public {
|
||
|
require(TokenInterface(daiAddr).transferFrom(msg.sender, address(this), daiAmt));
|
||
|
TokenInterface(daiAddr).approve(daiExchange, daiAmt);
|
||
|
uint destAmt = UniswapExchange(daiExchange).tokenToEthSwapInput(daiAmt, 1, block.timestamp + 1);
|
||
|
msg.sender.transfer(destAmt);
|
||
|
}
|
||
|
|
||
|
function() external payable {}
|
||
|
|
||
|
}
|