Transaction Hash:
Block:
5177263 at Mar-01-2018 12:49:36 PM +UTC
Transaction Fee:
0.00112173 ETH
$2.82
Gas Used:
37,391 Gas / 30 Gwei
Emitted Events:
77 |
ThetaToken.Transfer( _from=[Sender] 0x05ee546c1a62f90d7acbffd6d846c9c54c7cf94c, _to=0x21a57b8f9deFcd404CbB4268Db79cF123749A502, _value=4990000000000000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x05EE546c...54C7cF94c | (Gate.io 6) |
57,418.958538773115276458 Eth
Nonce: 541763
|
57,418.957417043115276458 Eth
Nonce: 541764
| 0.00112173 | |
0x3883f5e1...d963fb645 | |||||
0xEA674fdD...16B898ec8
Miner
| (Ethermine) | 609.308674709235326134 Eth | 609.309796439235326134 Eth | 0.00112173 |
Execution Trace
ThetaToken.transfer( _to=0x21a57b8f9deFcd404CbB4268Db79cF123749A502, _amount=4990000000000000000000 ) => ( success=True )
transfer[ThetaToken (ln:156)]
transfer[ThetaToken (ln:157)]
pragma solidity ^0.4.18; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint a, uint b) internal pure returns (uint) { if (a == 0) { return 0; } uint c = a * b; assert(c / a == b); return c; } function div(uint a, uint b) internal pure returns (uint) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint a, uint b) internal pure returns (uint) { assert(b <= a); return a - b; } function add(uint a, uint b) internal pure returns (uint) { uint c = a + b; assert(c >= a); return c; } } contract ERC20 { function totalSupply() public constant returns (uint supply); function balanceOf(address _owner) public constant returns (uint balance); function transfer(address _to, uint _value) public returns (bool success); function transferFrom(address _from, address _to, uint _value) public returns (bool success); function approve(address _spender, uint _value) public returns (bool success); function allowance(address _owner, address _spender) public constant returns (uint remaining); event Transfer(address indexed _from, address indexed _to, uint _value); event Approval(address indexed _owner, address indexed _spender, uint _value); } contract StandardToken is ERC20 { using SafeMath for uint; uint public totalSupply; mapping (address => uint) balances; mapping (address => mapping (address => uint)) allowed; function totalSupply() public constant returns (uint) { return totalSupply; } function balanceOf(address _owner) public constant returns (uint balance) { return balances[_owner]; } function transfer(address _to, uint _value) public returns (bool success) { require(balances[msg.sender] >= _value && _value > 0); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); Transfer(msg.sender, _to, _value); return true; } function transferFrom(address _from, address _to, uint _value) public returns (bool success) { require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); Transfer(_from, _to, _value); return true; } function approve(address _spender, uint _value) public returns (bool success) { // https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) { revert(); } allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } function allowance(address _owner, address _spender) public constant returns (uint remaining) { return allowed[_owner][_spender]; } } contract Controlled { address public controller; function Controlled() public { controller = msg.sender; } function changeController(address _newController) public only_controller { controller = _newController; } function getController() constant public returns (address) { return controller; } modifier only_controller { require(msg.sender == controller); _; } } contract ThetaToken is StandardToken, Controlled { using SafeMath for uint; string public constant name = "Theta Token"; string public constant symbol = "THETA"; uint8 public constant decimals = 18; // tokens can be transferred amoung holders only after unlockTime uint unlockTime; // for token circulation on platforms that integrate Theta before unlockTime mapping (address => bool) internal precirculated; function ThetaToken(uint _unlockTime) public { unlockTime = _unlockTime; } function transfer(address _to, uint _amount) can_transfer(msg.sender, _to) public returns (bool success) { return super.transfer(_to, _amount); } function transferFrom(address _from, address _to, uint _amount) can_transfer(_from, _to) public returns (bool success) { return super.transferFrom(_from, _to, _amount); } function mint(address _owner, uint _amount) external only_controller returns (bool) { totalSupply = totalSupply.add(_amount); balances[_owner] = balances[_owner].add(_amount); Transfer(0, _owner, _amount); return true; } function allowPrecirculation(address _addr) only_controller public { precirculated[_addr] = true; } function disallowPrecirculation(address _addr) only_controller public { precirculated[_addr] = false; } function isPrecirculationAllowed(address _addr) constant public returns(bool) { return precirculated[_addr]; } function changeUnlockTime(uint _unlockTime) only_controller public { unlockTime = _unlockTime; } function getUnlockTime() constant public returns (uint) { return unlockTime; } modifier can_transfer(address _from, address _to) { require((block.number >= unlockTime) || (isPrecirculationAllowed(_from) && isPrecirculationAllowed(_to))); _; } }