Code refactoring.

This commit is contained in:
Sowmayjain 2019-04-12 18:51:18 +05:30
parent 4f168a035a
commit 2c4d1d25d7
3 changed files with 25 additions and 18 deletions

View File

@ -1,6 +1,12 @@
pragma solidity ^0.5.0; pragma solidity ^0.5.0;
import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; interface IERC20 {
function transfer(address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
function balanceOf(address who) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
}
contract KyberInterface { contract KyberInterface {
@ -91,27 +97,21 @@ contract Helper {
require(msg.value == srcAmt, "not-enough-src"); require(msg.value == srcAmt, "not-enough-src");
ethQty = srcAmt; ethQty = srcAmt;
} else { } else {
manageApproval(src, srcAmt); IERC20 tknContract = IERC20(src);
IERC20(src).transferFrom(trader, address(this), srcAmt); setApproval(tknContract, srcAmt);
tknContract.transferFrom(trader, address(this), srcAmt);
} }
} }
/** /**
* @dev setting allowance to kyber for the "user proxy" if required * @dev setting allowance to kyber for the "user proxy" if required
* @param token is the token address
*/
function setApproval(address token) internal returns (uint) {
IERC20(token).approve(getAddressKyber(), 2**255);
}
/**
* @dev configuring token approval with user proxy
* @param token is the token * @param token is the token
* @param srcAmt is the amount of token to sell
*/ */
function manageApproval(address token, uint srcAmt) internal returns (uint) { function setApproval(IERC20 tknContract, uint srcAmt) internal returns (uint) {
uint tokenAllowance = IERC20(token).allowance(address(this), getAddressKyber()); uint tokenAllowance = tknContract.allowance(address(this), getAddressKyber());
if (srcAmt > tokenAllowance) { if (srcAmt > tokenAllowance) {
setApproval(token); tknContract.approve(getAddressKyber(), 2**255);
} }
} }

View File

@ -222,9 +222,9 @@ contract CDPResolver is Helpers {
} }
} }
function setAllowance(TokenInterface token_, address spender_) private { function setAllowance(TokenInterface _token, address _spender) private {
if (token_.allowance(address(this), spender_) != uint(-1)) { if (_token.allowance(address(this), _spender) != uint(-1)) {
token_.approve(spender_, uint(-1)); _token.approve(_spender, uint(-1));
} }
} }

View File

@ -1,6 +1,13 @@
pragma solidity ^0.5.0; pragma solidity ^0.5.0;
import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; interface IERC20 {
function transfer(address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
function totalSupply() external view returns (uint256);
function balanceOf(address who) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
}
interface UniswapFactory { interface UniswapFactory {
// Get Exchange and Token Info // Get Exchange and Token Info