12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /*
- Implements EIP20 token standard: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
- .*/
- pragma solidity ^0.4.21;
- import "./EIP20Interface.sol";
- contract EIP20 is EIP20Interface {
- uint256 constant private MAX_UINT256 = 2**256 - 1;
- mapping (address => uint256) public balances;
- mapping (address => mapping (address => uint256)) public allowed;
- /*
- NOTE:
- The following variables are OPTIONAL vanities. One does not have to include them.
- They allow one to customise the token contract & in no way influences the core functionality.
- Some wallets/interfaces might not even bother to look at this information.
- */
- string public name; //fancy name: eg Simon Bucks
- uint8 public decimals; //How many decimals to show.
- string public symbol; //An identifier: eg SBX
- function EIP20(
- uint256 _initialAmount,
- string _tokenName,
- uint8 _decimalUnits,
- string _tokenSymbol
- ) public {
- balances[msg.sender] = _initialAmount; // Give the creator all initial tokens
- totalSupply = _initialAmount; // Update total supply
- name = _tokenName; // Set the name for display purposes
- decimals = _decimalUnits; // Amount of decimals for display purposes
- symbol = _tokenSymbol; // Set the symbol for display purposes
- }
- function transfer(address _to, uint256 _value) public returns (bool success) {
- require(balances[msg.sender] >= _value);
- balances[msg.sender] -= _value;
- balances[_to] += _value;
- emit Transfer(msg.sender, _to, _value); //solhint-disable-line indent, no-unused-vars
- return true;
- }
- function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
- uint256 allowance = allowed[_from][msg.sender];
- require(balances[_from] >= _value && allowance >= _value);
- balances[_to] += _value;
- balances[_from] -= _value;
- if (allowance < MAX_UINT256) {
- allowed[_from][msg.sender] -= _value;
- }
- emit Transfer(_from, _to, _value); //solhint-disable-line indent, no-unused-vars
- return true;
- }
- function balanceOf(address _owner) public view returns (uint256 balance) {
- return balances[_owner];
- }
- function approve(address _spender, uint256 _value) public returns (bool success) {
- allowed[msg.sender][_spender] = _value;
- emit Approval(msg.sender, _spender, _value); //solhint-disable-line indent, no-unused-vars
- return true;
- }
- function allowance(address _owner, address _spender) public view returns (uint256 remaining) {
- return allowed[_owner][_spender];
- }
- }
|