ETH Price: $2,653.54 (-1.32%)

Transaction Decoder

Block:
8767755 at Oct-18-2019 11:23:19 PM +UTC
Transaction Fee:
0.000146504 ETH $0.39
Gas Used:
73,252 Gas / 2 Gwei

Emitted Events:

45 Saturn.Transfer( _from=[Receiver] 0x13f64609bf1ef46f6515f8cd3115433a93a00dc6, _to=[Sender] 0x42be07f603fc054bb074bae55edb7d3ed2368fd6, _value=593027617 )
46 Saturn.ERC223Transfer( _from=[Receiver] 0x13f64609bf1ef46f6515f8cd3115433a93a00dc6, _to=[Sender] 0x42be07f603fc054bb074bae55edb7d3ed2368fd6, _value=593027617, _data=0x )
47 0x13f64609bf1ef46f6515f8cd3115433a93a00dc6.0xe6f814da7244d1ae6c61b54b5684858ba39cad7b9a91884be10060664987d754( 0xe6f814da7244d1ae6c61b54b5684858ba39cad7b9a91884be10060664987d754, 00000000000000000000000042be07f603fc054bb074bae55edb7d3ed2368fd6, 000000000000000000000000720ca1df3aa5a4baaf720976584132798148e0b7, 0000000000000000000000000000000000000000000000000000000000000fb9, 000000000000000000000000000000000000000000000000000000002358e221, 000000000000000000000000000000000000000000000000020649726f81d980, 000000000000000000000000000000000000000000000000000000005daa4967 )
48 Saturn.Transfer( _from=[Receiver] 0x13f64609bf1ef46f6515f8cd3115433a93a00dc6, _to=[Sender] 0x42be07f603fc054bb074bae55edb7d3ed2368fd6, _value=36562 )
49 Saturn.ERC223Transfer( _from=[Receiver] 0x13f64609bf1ef46f6515f8cd3115433a93a00dc6, _to=[Sender] 0x42be07f603fc054bb074bae55edb7d3ed2368fd6, _value=36562, _data=0x )
50 0x13f64609bf1ef46f6515f8cd3115433a93a00dc6.0x5a9ec13c12ca9563a7b3108125f74c57ed388bb313394ea50f7e4a71b01497c2( 0x5a9ec13c12ca9563a7b3108125f74c57ed388bb313394ea50f7e4a71b01497c2, 00000000000000000000000042be07f603fc054bb074bae55edb7d3ed2368fd6, 0000000000000000000000000000000000000000000000000000000000008ed2, 000000000000000000000000000000000000000000000000000000005daa4967 )
51 0x13f64609bf1ef46f6515f8cd3115433a93a00dc6.0xeb3b41be12efa25c0c65725eeff2e2ad0250e2e5de2aa939e18f36aa656e9880( 0xeb3b41be12efa25c0c65725eeff2e2ad0250e2e5de2aa939e18f36aa656e9880, 0000000000000000000000000000000000000000000000000000000000000fb9, 000000000000000000000000000000000000000000000000000000005daa4967 )

Account State Difference:

  Address   Before After State Difference Code
0x13f64609...a93a00DC6
(Saturn Network: Old Contract)
0x42BE07F6...eD2368fD6
1.299571755277183888 Eth
Nonce: 252
1.153174831445604941 Eth
Nonce: 253
0.146396923831578947
(Spark Pool)
60.413001078303264583 Eth60.413147582303264583 Eth0.000146504
0x720CA1Df...98148E0B7 0.159353338477159614 Eth0.305238132259159614 Eth0.145884793782
0x92EEb915...B6Af6d5fD 2.332254922733766777 Eth2.332620548783345724 Eth0.000365626049578947
0xb9440022...794Bd76c8

Execution Trace

ETH 0.146250419831578947 Saturn Network: Old Contract.a4ff9c34( )
  • ETH 0.145884793782 0x720ca1df3aa5a4baaf720976584132798148e0b7.CALL( )
  • Saturn.transfer( _to=0x42BE07F603fc054Bb074Bae55eDb7D3eD2368fD6, _value=593027617 ) => ( success=True )
  • ETH 0.000365626049578947 0x92eeb915dafe3803f8a9d12000765c3b6af6d5fd.CALL( )
  • Saturn.transfer( _to=0x42BE07F603fc054Bb074Bae55eDb7D3eD2368fD6, _value=36562 ) => ( success=True )
    pragma solidity ^0.4.18;
    
    /**
     * @title SafeMath
     * @dev Math operations with safety checks that throw on error
     */
    library SafeMath {
    
      /**
      * @dev Multiplies two numbers, throws on overflow.
      */
      function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
          return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
      }
    
      /**
      * @dev Integer division of two numbers, truncating the quotient.
      */
      function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
      }
    
      /**
      * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
      */
      function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
      }
    
      /**
      * @dev Adds two numbers, throws on overflow.
      */
      function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
      }
    }
    
    contract ERC223 {
      uint public totalSupply;
      function balanceOf(address who) constant returns (uint);
    
      function name() constant returns (string _name);
      function symbol() constant returns (string _symbol);
      function decimals() constant returns (uint8 _decimals);
      function totalSupply() constant returns (uint256 _supply);
    
      function transfer(address to, uint value) returns (bool ok);
      function transfer(address to, uint value, bytes data) returns (bool ok);
      event Transfer(address indexed _from, address indexed _to, uint256 _value);
      event ERC223Transfer(address indexed _from, address indexed _to, uint256 _value, bytes _data);
    }
    
    contract ContractReceiver {
      function tokenFallback(address _from, uint _value, bytes _data);
    }
    
    contract ERC223Token is ERC223 {
      using SafeMath for uint;
    
      mapping(address => uint) balances;
    
      string public name;
      string public symbol;
      uint8 public decimals;
      uint256 public totalSupply;
    
    
      // Function to access name of token .
      function name() constant returns (string _name) {
          return name;
      }
      // Function to access symbol of token .
      function symbol() constant returns (string _symbol) {
          return symbol;
      }
      // Function to access decimals of token .
      function decimals() constant returns (uint8 _decimals) {
          return decimals;
      }
      // Function to access total supply of tokens .
      function totalSupply() constant returns (uint256 _totalSupply) {
          return totalSupply;
      }
    
      // Function that is called when a user or another contract wants to transfer funds .
      function transfer(address _to, uint _value, bytes _data) returns (bool success) {
        if(isContract(_to)) {
            return transferToContract(_to, _value, _data);
        }
        else {
            return transferToAddress(_to, _value, _data);
        }
    }
    
      // Standard function transfer similar to ERC20 transfer with no _data .
      // Added due to backwards compatibility reasons .
      function transfer(address _to, uint _value) returns (bool success) {
    
        //standard function transfer similar to ERC20 transfer with no _data
        //added due to backwards compatibility reasons
        bytes memory empty;
        if(isContract(_to)) {
            return transferToContract(_to, _value, empty);
        }
        else {
            return transferToAddress(_to, _value, empty);
        }
    }
    
    //assemble the given address bytecode. If bytecode exists then the _addr is a contract.
      function isContract(address _addr) private returns (bool is_contract) {
          uint length;
          assembly {
                //retrieve the size of the code on target address, this needs assembly
                length := extcodesize(_addr)
            }
            if(length>0) {
                return true;
            }
            else {
                return false;
            }
        }
    
      //function that is called when transaction target is an address
      function transferToAddress(address _to, uint _value, bytes _data) private returns (bool success) {
        if (balanceOf(msg.sender) < _value) revert();
        balances[msg.sender] = balanceOf(msg.sender).sub(_value);
        balances[_to] = balanceOf(_to).add(_value);
        Transfer(msg.sender, _to, _value);
        ERC223Transfer(msg.sender, _to, _value, _data);
        return true;
      }
    
      //function that is called when transaction target is a contract
      function transferToContract(address _to, uint _value, bytes _data) private returns (bool success) {
        if (balanceOf(msg.sender) < _value) revert();
        balances[msg.sender] = balanceOf(msg.sender).sub(_value);
        balances[_to] = balanceOf(_to).add(_value);
        ContractReceiver reciever = ContractReceiver(_to);
        reciever.tokenFallback(msg.sender, _value, _data);
        Transfer(msg.sender, _to, _value);
        ERC223Transfer(msg.sender, _to, _value, _data);
        return true;
      }
    
    
      function balanceOf(address _owner) constant returns (uint balance) {
        return balances[_owner];
      }
    }
    
    contract Saturn is ERC223Token {
      string public name = "Saturn DAO Token";
      string public symbol = "SATURN";
      uint public decimals = 4;
      uint public totalSupply = 1000000000 * 10**4;
    
      function Saturn() {
        balances[msg.sender] = totalSupply;
      }
    }