Files
openzeppelin-contracts/contracts/token/ERC20/SafeERC20.sol
Aniket-Engg 9bb567055f fixes #1404
2018-12-21 14:01:21 +05:30

50 lines
1.1 KiB
Solidity

pragma solidity ^0.4.24;
import "./IERC20.sol";
import "../../math/SafeMath.sol";
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure.
* To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using SafeMath for uint256;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
require(token.transfer(to, value));
}
function safeApprove(
IERC20 token,
address spender,
uint256 value
)
internal
{
require((value == 0) || (token.allowance(msg.sender, spender) == 0));
require(token.approve(spender, value));
}
function safeIncreaseAllowance(
IERC20 token,
address spender,
uint256 addedValue
)
internal
{
require(token.increaseAllowance(spender, addedValue));
}
function safeDecreaseAllowance(
IERC20 token,
address spender,
uint256 subtractedValue
)
internal
{
require(token.decreaseAllowance(spender, subtractedValue));
}
}