TransferHelper.sol 1.2 KB

1234567891011121314151617181920212223242526
  1. // SPDX-License-Identifier: GPL-2.0-or-later
  2. pragma solidity ^0.7.6;
  3. pragma abicoder v2;
  4. // base library
  5. library TransferHelper {
  6. function safeApprove(address token, address to, uint256 value) internal {
  7. (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
  8. require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED.');
  9. }
  10. function safeTransfer(address token, address to, uint value) internal {
  11. (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
  12. require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED.');
  13. }
  14. function safeTransferFrom(address token, address from, address to, uint value) internal {
  15. (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
  16. require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED.');
  17. }
  18. function safeTransferETH(address to, uint value) internal {
  19. (bool success,) = to.call{value: value}(new bytes(0));
  20. require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
  21. }
  22. }