Transaction Hash:
Block:
10987832 at Oct-04-2020 06:42:51 AM +UTC
Transaction Fee:
0.0019165 ETH
$4.94
Gas Used:
38,330 Gas / 50 Gwei
Emitted Events:
150 |
SaTT.Transfer( from=[Sender] 0x52d9ac072c5456d9547d73e5138b8395dbcb4614, to=0xf6c8cd087b553a6A70BB8F5a3356960f9E570041, value=1500000000000000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x52D9AC07...5DBCB4614 |
0.045623912882665919 Eth
Nonce: 75
|
0.043707412882665919 Eth
Nonce: 76
| 0.0019165 | ||
0xDf49C9f5...468987389 | |||||
0xEA674fdD...16B898ec8
Miner
| (Ethermine) | 241.600805471922407507 Eth | 241.602721971922407507 Eth | 0.0019165 |
Execution Trace
SaTT.transfer( to=0xf6c8cd087b553a6A70BB8F5a3356960f9E570041, value=1500000000000000000000 ) => ( success=True )
transfer[SaTT (ln:72)]
_transfer[SaTT (ln:73)]
isContract[SaTT (ln:105)]
tokenFallback[SaTT (ln:108)]
Transfer[SaTT (ln:111)]
pragma solidity ^0.5.6; contract owned { address payable public owner; constructor () public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address payable newOwner) onlyOwner public { owner = newOwner; } function() external payable { } function withdraw() onlyOwner public { owner.transfer(address(this).balance); } } interface ERC20 { function transfer(address receiver, uint256 value) external returns (bool ok); } interface ERC223Receiver { function tokenFallback(address _from, uint _value, bytes32 _data) external ; } contract SaTT is owned,ERC20 { uint8 public constant decimals = 18; uint256 public constant totalSupply = 20000000000000000000000000000; // 20 billions and 18 decimals string public constant symbol = "SATT"; string public constant name = "Smart Advertising Transaction Token"; mapping (address => uint256) public balanceOf; mapping (address => mapping (address => uint256)) public allowance; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed tokenOwner, address indexed spender, uint256 tokens); constructor () public { balanceOf[msg.sender] = totalSupply; } function isContract(address _addr) internal view returns (bool is_contract) { bytes32 hash; assembly { //retrieve the size of the code on target address, this needs assembly hash := extcodehash(_addr) } return (hash != 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 && hash != bytes32(0)); } function transfer(address to, uint256 value) public returns (bool success) { _transfer(msg.sender, to, value); return true; } function transfer(address to, uint256 value,bytes memory data) public returns (bool success) { if((data[0])!= 0) { _transfer(msg.sender, to, value); } return true; } function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { require(_value <= allowance[_from][msg.sender]); // Check allowance allowance[_from][msg.sender] -= _value; _transfer(_from, _to, _value); return true; } function _transfer(address _from, address _to, uint256 _value) internal { // Prevent transfer to 0x0 address. Use burn() instead require(_to != address(0x0)); // Check if the sender has enough require(balanceOf[_from] >= _value); // Check for overflows require(balanceOf[_to] + _value > balanceOf[_to]); // Subtract from the sender balanceOf[_from] -= _value; // Add the same to the recipient balanceOf[_to] += _value; if(isContract(_to)) { ERC223Receiver receiver = ERC223Receiver(_to); receiver.tokenFallback(msg.sender, _value, bytes32(0)); } emit Transfer(_from, _to, _value); } function approve(address _spender, uint256 _value) public returns (bool success) { allowance[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } function transferToken (address token,address to,uint256 val) public onlyOwner { ERC20 erc20 = ERC20(token); erc20.transfer(to,val); } function tokenFallback(address _from, uint _value, bytes memory _data) pure public { } }