Add updated ERC20 implementation, update WETH
This commit is contained in:
50
packages/contracts/contracts/base/ERC20Token.sol
Normal file
50
packages/contracts/contracts/base/ERC20Token.sol
Normal file
@@ -0,0 +1,50 @@
|
||||
pragma solidity 0.4.11;
|
||||
|
||||
import "./Token.sol";
|
||||
|
||||
contract ERC20Token is Token {
|
||||
|
||||
uint constant MAX_UINT = 2**256 - 1;
|
||||
|
||||
function transfer(address _to, uint _value) returns (bool) {
|
||||
require(balances[msg.sender] >= _value && balances[_to] + _value >= balances[_to]);
|
||||
balances[msg.sender] -= _value;
|
||||
balances[_to] += _value;
|
||||
Transfer(msg.sender, _to, _value);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// @dev ERC20 transferFrom, modified such that an allowance of MAX_UINT represents an unlimited allowance. See https://github.com/ethereum/EIPs/issues/717
|
||||
/// @param _from Address to transfer from.
|
||||
/// @param _to Address to transfer to.
|
||||
/// @param _value Amount to transfer.
|
||||
/// @return Success of transfer.
|
||||
function transferFrom(address _from, address _to, uint _value) returns (bool) {
|
||||
require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value >= balances[_to]);
|
||||
balances[_to] += _value;
|
||||
balances[_from] -= _value;
|
||||
if (allowance < MAX_UINT) {
|
||||
allowed[_from][msg.sender] -= _value;
|
||||
}
|
||||
Transfer(_from, _to, _value);
|
||||
return true;
|
||||
}
|
||||
|
||||
function balanceOf(address _owner) constant returns (uint) {
|
||||
return balances[_owner];
|
||||
}
|
||||
|
||||
function approve(address _spender, uint _value) returns (bool) {
|
||||
allowed[msg.sender][_spender] = _value;
|
||||
Approval(msg.sender, _spender, _value);
|
||||
return true;
|
||||
}
|
||||
|
||||
function allowance(address _owner, address _spender) constant returns (uint) {
|
||||
return allowed[_owner][_spender];
|
||||
}
|
||||
|
||||
mapping (address => uint) balances;
|
||||
mapping (address => mapping (address => uint)) allowed;
|
||||
uint public totalSupply;
|
||||
}
|
56
packages/contracts/contracts/deprecated/EtherToken.sol
Normal file
56
packages/contracts/contracts/deprecated/EtherToken.sol
Normal file
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
|
||||
Copyright 2017 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.11;
|
||||
|
||||
import "./UnlimitedAllowanceToken.sol";
|
||||
import "./../base/SafeMath.sol";
|
||||
|
||||
contract EtherToken is UnlimitedAllowanceToken, SafeMath {
|
||||
|
||||
string constant public name = "Ether Token";
|
||||
string constant public symbol = "WETH";
|
||||
uint8 constant public decimals = 18;
|
||||
|
||||
/// @dev Fallback to calling deposit when ether is sent directly to contract.
|
||||
function()
|
||||
public
|
||||
payable
|
||||
{
|
||||
deposit();
|
||||
}
|
||||
|
||||
/// @dev Buys tokens with Ether, exchanging them 1:1.
|
||||
function deposit()
|
||||
public
|
||||
payable
|
||||
{
|
||||
balances[msg.sender] = safeAdd(balances[msg.sender], msg.value);
|
||||
totalSupply = safeAdd(totalSupply, msg.value);
|
||||
}
|
||||
|
||||
/// @dev Sells tokens in exchange for Ether, exchanging them 1:1.
|
||||
/// @param amount Number of tokens to sell.
|
||||
function withdraw(uint amount)
|
||||
public
|
||||
{
|
||||
balances[msg.sender] = safeSub(balances[msg.sender], amount);
|
||||
totalSupply = safeSub(totalSupply, amount);
|
||||
require(msg.sender.send(amount));
|
||||
}
|
||||
}
|
@@ -18,10 +18,10 @@
|
||||
|
||||
pragma solidity 0.4.11;
|
||||
|
||||
import "./UnlimitedAllowanceToken.sol";
|
||||
import "./ERC20Token.sol";
|
||||
import "./../base/SafeMath.sol";
|
||||
|
||||
contract EtherToken is UnlimitedAllowanceToken, SafeMath {
|
||||
contract EtherToken is ERC20Token, SafeMath {
|
||||
|
||||
string constant public name = "Ether Token";
|
||||
string constant public symbol = "WETH";
|
||||
@@ -42,6 +42,7 @@ contract EtherToken is UnlimitedAllowanceToken, SafeMath {
|
||||
{
|
||||
balances[msg.sender] = safeAdd(balances[msg.sender], msg.value);
|
||||
totalSupply = safeAdd(totalSupply, msg.value);
|
||||
Transfer(address(0), msg.sender, msg.value);
|
||||
}
|
||||
|
||||
/// @dev Sells tokens in exchange for Ether, exchanging them 1:1.
|
||||
@@ -52,5 +53,6 @@ contract EtherToken is UnlimitedAllowanceToken, SafeMath {
|
||||
balances[msg.sender] = safeSub(balances[msg.sender], amount);
|
||||
totalSupply = safeSub(totalSupply, amount);
|
||||
require(msg.sender.send(amount));
|
||||
Tranfer(msg.sender, address(0), msg.value);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user