ETH Price: $1,951.45 (-0.04%)

Transaction Decoder

Block:
4946769 at Jan-21-2018 02:05:11 PM +UTC
Transaction Fee:
0.000896137 ETH $1.75
Gas Used:
21,857 Gas / 41 Gwei

Emitted Events:

Account State Difference:

  Address   Before After State Difference Code
(Nanopool)
11,507.334013668393195225 Eth11,507.334909805393195225 Eth0.000896137
0x54318a37...aaC5a46e8
0xb74eE2d4...8Ae9A4A29
0.009106487 Eth
Nonce: 1
0.00821035 Eth
Nonce: 2
0.000896137

Execution Trace

KKToken.transfer( _to=0x94c1e5844cd98ffC95a47FA8315d5B187Ea257FC, _amount=9900000000000 ) => ( True )
pragma solidity ^0.4.18;

// author: KK Coin team

contract ERC20Standard {
    // Get the total token supply
    function totalSupply() public constant returns (uint256 _totalSupply);
 
    // Get the account balance of another account with address _owner
    function balanceOf(address _owner) public constant returns (uint256 balance);
 
    // Send _value amount of tokens to address _to
    function transfer(address _to, uint256 _value) public returns (bool success);
    
    // transfer _value amount of token approved by address _from
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);

    // approve an address with _value amount of tokens
    function approve(address _spender, uint256 _value) public returns (bool success);

    // get remaining token approved by _owner to _spender
    function allowance(address _owner, address _spender) public constant returns (uint256 remaining);
  
    // Triggered when tokens are transferred.
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
 
    // Triggered whenever approve(address _spender, uint256 _value) is called.
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

contract KKToken is ERC20Standard {
    string public constant symbol = "KK";
    string public constant name = "KKCOIN";
    uint256 public constant decimals = 8;

    uint256 public _totalSupply = 10 ** 18; // equal to 10^10 KK

    // Owner of this contract
    address public owner;

    // Balances KK for each account
    mapping(address => uint256) private balances;

    // Owner of account approves the transfer of an amount to another account
    mapping(address => mapping (address => uint256)) private allowed;

    /// @dev Constructor
    function KKToken() public {
        owner = msg.sender;
        balances[owner] = _totalSupply;
        Transfer(0x0, owner, _totalSupply);
    }

    /// @return Total supply
    function totalSupply() public constant returns (uint256) {
        return _totalSupply;
    }

    /// @return Account balance
    function balanceOf(address _addr) public constant returns (uint256) {
        return balances[_addr];
    }

    /// @return Transfer status
    function transfer(address _to, uint256 _amount) public returns (bool) {
        if ( (balances[msg.sender] >= _amount) &&
             (_amount >= 0) && 
             (balances[_to] + _amount > balances[_to]) ) {  

            balances[msg.sender] -= _amount;
            balances[_to] += _amount;
            Transfer(msg.sender, _to, _amount);
            return true;
        } else {
            return false;
        }
    }

    // Send _value amount of tokens from address _from to address _to
    // these standardized APIs for approval:
    function transferFrom(address _from, address _to, uint256 _amount) public returns (bool success) {
        if (balances[_from] >= _amount
            && allowed[_from][msg.sender] >= _amount
            && _amount > 0
            && balances[_to] + _amount > balances[_to]) {
            balances[_from] -= _amount;
            allowed[_from][msg.sender] -= _amount;
            balances[_to] += _amount;
            Transfer(_from, _to, _amount);
            return true;
        } else {
            return false;
        }
    }

    // Allow _spender to withdraw from your account, multiple times, up to the _value amount.
    // If this function is called again it overwrites the current allowance with _value.
    function approve(address _spender, uint256 _amount) public returns (bool success) {
        allowed[msg.sender][_spender] = _amount;
        Approval(msg.sender, _spender, _amount);
        return true;
    }

    // get allowance
    function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }
}