smart-contract/contracts/Bin/uni.sol
2019-07-01 05:48:22 +05:30

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 {}
}