Transaction Hash:
Block:
5673581 at May-25-2018 09:14:17 AM +UTC
Transaction Fee:
0.000611984 ETH
$1.53
Gas Used:
38,249 Gas / 16 Gwei
Emitted Events:
148 |
AAAToken.Transfer( from=[Sender] 0xde5d24be090ae33ff63a3458ce5d1ad8c64e9420, to=0x6c0c2a8156a44dd21D2C7F99b4438690799d7cc5, value=10000000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x6AbA1623...e2514A2Ba | |||||
0x829BD824...93333A830
Miner
| (F2Pool Old) | 3,597.425022567673619416 Eth | 3,597.425634551673619416 Eth | 0.000611984 | |
0xDe5D24BE...8c64E9420 |
0.223522885971052032 Eth
Nonce: 2590
|
0.222910901971052032 Eth
Nonce: 2591
| 0.000611984 |
Execution Trace
AAAToken.transfer( _to=0x6c0c2a8156a44dd21D2C7F99b4438690799d7cc5, _value=10000000000000 )
transfer[AAAToken (ln:103)]
_transfer[AAAToken (ln:105)]
Transfer[AAAToken (ln:89)]
pragma solidity ^0.4.16; //Base class of token-owner contract Ownable { address public owner; //owner's address function Ownable() public { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner); _; } /* * Funtion: Transfer owner's authority * Type:Public and onlyOwner * Parameters: @newOwner: address of newOwner */ function transferOwnership(address newOwner) onlyOwner public{ if (newOwner != address(0)) { owner = newOwner; } } function kill() onlyOwner public{ selfdestruct(owner); } } //Announcement of an interface for recipient approving interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData)public; } contract AAAToken is Ownable{ //===================public variables definition start================== string public name; //Name of your Token string public symbol; //Symbol of your Token uint8 public decimals; //Decimals of your Token uint256 public totalSupply; //Maximum amount of Token supplies //define dictionaries of balance mapping (address => uint256) public balanceOf; //Announce the dictionary of account's balance mapping (address => mapping (address => uint256)) public allowance; //Announce the dictionary of account's available balance //===================public variables definition end================== //===================events definition start================== event Transfer(address indexed from, address indexed to, uint256 value); //Event on blockchain which notify client //===================events definition end================== //===================Contract Initialization Sequence Definition start=================== function AAAToken () public { decimals=10; //Assignment of Token's decimals totalSupply = 21000000000 * 10 ** uint256(decimals); //Assignment of Token's total supply with decimals balanceOf[owner] = totalSupply; //Assignment of Token's creator initial tokens name = "App Alliance Association"; //Set the name of Token symbol = "AAA"; //Set the symbol of Token } //===================Contract Initialization Sequence definition end=================== //===================Contract behavior & funtions definition start=================== /* * Funtion: Transfer funtions * Type:Internal * Parameters: @_from: address of sender's account @_to: address of recipient's account @_value:transaction amount */ function _transfer(address _from, address _to, uint _value) internal { //Fault-tolerant processing require(_to != 0x0); // require(balanceOf[_from] >= _value); require(balanceOf[_to] + _value > balanceOf[_to]); //Execute transaction uint previousBalances = balanceOf[_from] + balanceOf[_to]; balanceOf[_from] -= _value; balanceOf[_to] += _value; Transfer(_from, _to, _value); //Verify transaction assert(balanceOf[_from] + balanceOf[_to] == previousBalances); } /* * Funtion: Transfer tokens * Type:Public * Parameters: @_to: address of recipient's account @_value:transaction amount */ function transfer(address _to, uint256 _value) public { _transfer(msg.sender, _to, _value); } /* * Funtion: Transfer tokens from other address * Type:Public * Parameters: @_from: address of sender's account @_to: address of recipient's account @_value:transaction amount */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { require(_value <= allowance[_from][msg.sender]); //Allowance verification allowance[_from][msg.sender] -= _value; _transfer(_from, _to, _value); return true; } /* * Funtion: Approve usable amount for an account * Type:Public * Parameters: @_spender: address of spender's account @_value: approve amount */ function approve(address _spender, uint256 _value) public returns (bool success) { allowance[msg.sender][_spender] = _value; return true; } /* * Funtion: Approve usable amount for other address and then notify the contract * Type:Public * Parameters: @_spender: address of other account @_value: approve amount @_extraData:additional information to send to the approved contract */ function approveAndCall(address _spender, uint256 _value, bytes _extraData) public returns (bool success) { tokenRecipient spender = tokenRecipient(_spender); if (approve(_spender, _value)) { spender.receiveApproval(msg.sender, _value, this, _extraData); return true; } } /* * Funtion: Transfer owner's authority and account balance * Type:Public and onlyOwner * Parameters: @newOwner: address of newOwner */ function transferOwnershipWithBalance(address newOwner) onlyOwner public{ if (newOwner != address(0)) { _transfer(owner,newOwner,balanceOf[owner]); owner = newOwner; } } //===================Contract behavior & funtions definition end=================== }