AugurProject/augur-core

View on GitHub
source/contracts/libraries/token/BasicToken.sol

Summary

Maintainability
Test Coverage
pragma solidity 0.4.20;


import 'libraries/token/ERC20Basic.sol';
import 'libraries/math/SafeMathUint256.sol';


/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
    using SafeMathUint256 for uint256;

    uint256 internal supply;
    mapping(address => uint256) internal balances;

    /**
    * @dev transfer token for a specified address
    * @param _to The address to transfer to.
    * @param _value The amount to be transferred.
    */
    function transfer(address _to, uint256 _value) public returns(bool) {
        return internalTransfer(msg.sender, _to, _value);
    }

    /**
    * @dev allows internal token transfers
    * @param _from The source address
    * @param _to The destination address
    */
    function internalTransfer(address _from, address _to, uint256 _value) internal returns (bool) {
        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        Transfer(_from, _to, _value);
        onTokenTransfer(_from, _to, _value);
        return true;
    }

    /**
    * @dev Gets the balance of the specified address.
    * @param _owner The address to query the the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address _owner) public view returns (uint256) {
        return balances[_owner];
    }

    function totalSupply() public view returns (uint256) {
        return supply;
    }

    // Subclasses of this token generally want to send additional logs through the centralized Augur log emitter contract
    function onTokenTransfer(address _from, address _to, uint256 _value) internal returns (bool);
}