diff options
author | Amir Bandeali <abandeali1@gmail.com> | 2018-07-07 06:08:14 +0800 |
---|---|---|
committer | Amir Bandeali <abandeali1@gmail.com> | 2018-07-08 13:11:36 +0800 |
commit | 462f1f00d8151ad17f8909f2c07dbc807a0df87d (patch) | |
tree | cd4a7dece270466472d744b758047f3b3bd36510 /packages/contracts/src/2.0.0/forwarder/MixinERC20.sol | |
parent | 1c80bba4ddcb01cb8e3694f86d3f81e7164b8991 (diff) | |
download | dexon-sol-tools-462f1f00d8151ad17f8909f2c07dbc807a0df87d.tar dexon-sol-tools-462f1f00d8151ad17f8909f2c07dbc807a0df87d.tar.gz dexon-sol-tools-462f1f00d8151ad17f8909f2c07dbc807a0df87d.tar.bz2 dexon-sol-tools-462f1f00d8151ad17f8909f2c07dbc807a0df87d.tar.lz dexon-sol-tools-462f1f00d8151ad17f8909f2c07dbc807a0df87d.tar.xz dexon-sol-tools-462f1f00d8151ad17f8909f2c07dbc807a0df87d.tar.zst dexon-sol-tools-462f1f00d8151ad17f8909f2c07dbc807a0df87d.zip |
Combine mixins
Diffstat (limited to 'packages/contracts/src/2.0.0/forwarder/MixinERC20.sol')
-rw-r--r-- | packages/contracts/src/2.0.0/forwarder/MixinERC20.sol | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/packages/contracts/src/2.0.0/forwarder/MixinERC20.sol b/packages/contracts/src/2.0.0/forwarder/MixinERC20.sol deleted file mode 100644 index 23c130d69..000000000 --- a/packages/contracts/src/2.0.0/forwarder/MixinERC20.sol +++ /dev/null @@ -1,67 +0,0 @@ -/* - - Copyright 2018 ZeroEx Intl. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -pragma solidity 0.4.24; - - -contract MixinERC20 { - - bytes4 constant internal ERC20_TRANSFER_SELECTOR = bytes4(keccak256("transfer(address,uint256)")); - - function transferToken( - address token, - address to, - uint256 amount - ) - internal - { - // Transfer tokens. - // We do a raw call so we can check the success separate - // from the return data. - bool success = token.call(abi.encodeWithSelector( - ERC20_TRANSFER_SELECTOR, - to, - amount - )); - require( - success, - "TRANSFER_FAILED" - ); - - // Check return data. - // If there is no return data, we assume the token incorrectly - // does not return a bool. In this case we expect it to revert - // on failure, which was handled above. - // If the token does return data, we require that it is a single - // value that evaluates to true. - assembly { - if returndatasize { - success := 0 - if eq(returndatasize, 32) { - // First 64 bytes of memory are reserved scratch space - returndatacopy(0, 0, 32) - success := mload(0) - } - } - } - require( - success, - "TRANSFER_FAILED" - ); - } -} |