diff options
Diffstat (limited to 'packages/contracts')
-rw-r--r-- | packages/contracts/src/2.0.0/test/DummyERC20Token/DummyERC20Token.sol | 24 | ||||
-rw-r--r-- | packages/contracts/src/2.0.0/test/Mintable/Mintable.sol | 43 | ||||
-rw-r--r-- | packages/contracts/src/2.0.0/tokens/ERC20Token/ERC20Token.sol | 18 | ||||
-rw-r--r-- | packages/contracts/src/2.0.0/tokens/ERC20Token/IERC20Token.sol | 4 | ||||
-rw-r--r-- | packages/contracts/src/2.0.0/tokens/ERC20Token/MintableERC20Token.sol | 61 | ||||
-rw-r--r-- | packages/contracts/src/2.0.0/tokens/ERC20Token/UnlimitedAllowanceERC20Token.sol (renamed from packages/contracts/src/2.0.0/tokens/UnlimitedAllowanceToken/UnlimitedAllowanceToken.sol) | 5 |
6 files changed, 103 insertions, 52 deletions
diff --git a/packages/contracts/src/2.0.0/test/DummyERC20Token/DummyERC20Token.sol b/packages/contracts/src/2.0.0/test/DummyERC20Token/DummyERC20Token.sol index 20f36db31..79a023f73 100644 --- a/packages/contracts/src/2.0.0/test/DummyERC20Token/DummyERC20Token.sol +++ b/packages/contracts/src/2.0.0/test/DummyERC20Token/DummyERC20Token.sol @@ -18,13 +18,13 @@ pragma solidity 0.4.24; -import "../Mintable/Mintable.sol"; import "../../utils/Ownable/Ownable.sol"; +import "../../tokens/ERC20Token/MintableERC20Token.sol"; contract DummyERC20Token is - Mintable, - Ownable + Ownable, + MintableERC20Token { string public name; string public symbol; @@ -45,8 +45,11 @@ contract DummyERC20Token is balances[msg.sender] = _totalSupply; } + /// @dev Sets the balance of target address + /// @param _target Address or which balance will be updated + /// @param _value New balance of target address function setBalance(address _target, uint256 _value) - public + external onlyOwner { uint256 currBalance = balances[_target]; @@ -57,4 +60,17 @@ contract DummyERC20Token is } balances[_target] = _value; } + + /// @dev Mints new tokens for sender + /// @param _value Amount of tokens to mint + function mint(uint256 _value) + external + { + require( + _value <= 100000000000000000000, + "VALUE_TOO_LARGE" + ); + + _mint(msg.sender, _value); + } } diff --git a/packages/contracts/src/2.0.0/test/Mintable/Mintable.sol b/packages/contracts/src/2.0.0/test/Mintable/Mintable.sol deleted file mode 100644 index 8e2ecbf40..000000000 --- a/packages/contracts/src/2.0.0/test/Mintable/Mintable.sol +++ /dev/null @@ -1,43 +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; - -import "../../tokens/UnlimitedAllowanceToken/UnlimitedAllowanceToken.sol"; -import "../../utils/SafeMath/SafeMath.sol"; - - -/* - * Mintable - * Base contract that creates a mintable UnlimitedAllowanceToken - */ -contract Mintable is - UnlimitedAllowanceToken, - SafeMath -{ - function mint(uint256 _value) - public - { - require( - _value <= 100000000000000000000, - "Minting more than 100000000000000000000 is not allowed." - ); - balances[msg.sender] = safeAdd(_value, balances[msg.sender]); - _totalSupply = safeAdd(_totalSupply, _value); - } -} diff --git a/packages/contracts/src/2.0.0/tokens/ERC20Token/ERC20Token.sol b/packages/contracts/src/2.0.0/tokens/ERC20Token/ERC20Token.sol index 563c84b5b..db2d09b9d 100644 --- a/packages/contracts/src/2.0.0/tokens/ERC20Token/ERC20Token.sol +++ b/packages/contracts/src/2.0.0/tokens/ERC20Token/ERC20Token.sol @@ -46,9 +46,16 @@ contract ERC20Token is balances[_to] + _value >= balances[_to], "UINT256_OVERFLOW" ); + balances[msg.sender] -= _value; balances[_to] += _value; - emit Transfer(msg.sender, _to, _value); + + emit Transfer( + msg.sender, + _to, + _value + ); + return true; } @@ -77,10 +84,17 @@ contract ERC20Token is balances[_to] + _value >= balances[_to], "UINT256_OVERFLOW" ); + balances[_to] += _value; balances[_from] -= _value; allowed[_from][msg.sender] -= _value; - emit Transfer(_from, _to, _value); + + emit Transfer( + _from, + _to, + _value + ); + return true; } diff --git a/packages/contracts/src/2.0.0/tokens/ERC20Token/IERC20Token.sol b/packages/contracts/src/2.0.0/tokens/ERC20Token/IERC20Token.sol index a752d3869..462be17fd 100644 --- a/packages/contracts/src/2.0.0/tokens/ERC20Token/IERC20Token.sol +++ b/packages/contracts/src/2.0.0/tokens/ERC20Token/IERC20Token.sol @@ -21,13 +21,13 @@ pragma solidity 0.4.24; contract IERC20Token { - // solhint-disable-next-line no-simple-event-func-name + // solhint-disable no-simple-event-func-name event Transfer( address indexed _from, address indexed _to, uint256 _value ); - + event Approval( address indexed _owner, address indexed _spender, diff --git a/packages/contracts/src/2.0.0/tokens/ERC20Token/MintableERC20Token.sol b/packages/contracts/src/2.0.0/tokens/ERC20Token/MintableERC20Token.sol new file mode 100644 index 000000000..cd1c7b4bb --- /dev/null +++ b/packages/contracts/src/2.0.0/tokens/ERC20Token/MintableERC20Token.sol @@ -0,0 +1,61 @@ +/* + + 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; + +import "../../utils/SafeMath/SafeMath.sol"; +import "./UnlimitedAllowanceERC20Token.sol"; + + +contract MintableERC20Token is + SafeMath, + UnlimitedAllowanceERC20Token +{ + + /// @dev Mints new tokens + /// @param _to Address of the beneficiary that will own the minted token + /// @param _value Amount of tokens to mint + function _mint(address _to, uint256 _value) + internal + { + balances[_to] = safeAdd(_value, balances[_to]); + _totalSupply = safeAdd(_totalSupply, _value); + + emit Transfer( + address(0), + _to, + _value + ); + } + + /// @dev Mints new tokens + /// @param _owner Owner of tokens that will be burned + /// @param _value Amount of tokens to burn + function _burn(address _owner, uint256 _value) + internal + { + balances[_owner] = safeSub(balances[_owner], _value); + _totalSupply = safeSub(_totalSupply, _value); + + emit Transfer( + _owner, + address(0), + _value + ); + } +} diff --git a/packages/contracts/src/2.0.0/tokens/UnlimitedAllowanceToken/UnlimitedAllowanceToken.sol b/packages/contracts/src/2.0.0/tokens/ERC20Token/UnlimitedAllowanceERC20Token.sol index 07b85ddf4..e6f7c063e 100644 --- a/packages/contracts/src/2.0.0/tokens/UnlimitedAllowanceToken/UnlimitedAllowanceToken.sol +++ b/packages/contracts/src/2.0.0/tokens/ERC20Token/UnlimitedAllowanceERC20Token.sol @@ -21,7 +21,7 @@ pragma solidity 0.4.24; import "../ERC20Token/ERC20Token.sol"; -contract UnlimitedAllowanceToken is +contract UnlimitedAllowanceERC20Token is ERC20Token { @@ -53,16 +53,19 @@ contract UnlimitedAllowanceToken is balances[_to] + _value >= balances[_to], "UINT256_OVERFLOW" ); + balances[_to] += _value; balances[_from] -= _value; if (allowance < MAX_UINT) { allowed[_from][msg.sender] -= _value; } + emit Transfer( _from, _to, _value ); + return true; } } |