ETH Price: $2,448.61 (+1.35%)

Transaction Decoder

Block:
3898028 at Jun-19-2017 12:13:18 PM +UTC
Transaction Fee:
0.00275316 ETH $6.74
Gas Used:
137,658 Gas / 20 Gwei

Emitted Events:

11 0xe91e2531fb3dc166a57b3b39831eebb610f4f5ec.0xde681bdcf04e896432539bcc8c567caa6f8a71fbacf0186a7d862a416ce33550( 0xde681bdcf04e896432539bcc8c567caa6f8a71fbacf0186a7d862a416ce33550, 0000000000000000000000000000000000000000000000000000000000000080, 00000000000000000000000000000000000000000000000000000000000000c0, 0000000000000000000000000000000000000000000000056bc75e2d63100000, 0000000000000000000000000000000000000000000000000000000000000062, 000000000000000000000000000000000000000000000000000000000000000f, 6e6577796f726b6d6167617a696e650000000000000000000000000000000000, 0000000000000000000000000000000000000000000000000000000000000014, 6e6973746f72626f6740686f746d61696c2e6974000000000000000000000000 )
12 0xf93d537415cbb7795900c8a2aeb0d40a71d789f2.0x7e16eaff9c8bace8a26742806b979074b55919db8bcdb3fa8f2569b463a8fdf3( 0x7e16eaff9c8bace8a26742806b979074b55919db8bcdb3fa8f2569b463a8fdf3, 0000000000000000000000000000000000000000000000000011c37937e08000 )

Account State Difference:

  Address   Before After State Difference Code
(MiningPoolHub: Old Address)
12,589.108362405500784909 Eth12,589.111115565500784909 Eth0.00275316
0xd01ffEC0...e0c58433D
0.02851195317046173 Eth
Nonce: 28
0.02075879317046173 Eth
Nonce: 29
0.00775316
0xF93D5374...A71d789F2 0.201 Eth0.206 Eth0.005

Execution Trace

ETH 0.005 0xe91e2531fb3dc166a57b3b39831eebb610f4f5ec.298c154e( )
  • ENS.owner( node=21129B5694E1AD1F7269588193EC2B98A2BAAE631FD6AA5C829F1DED5DCF2182 ) => ( 0xd01ffEC05835D2f6B7C34DF470D045ce0c58433D )
  • 0xf93d537415cbb7795900c8a2aeb0d40a71d789f2.feff0506( )
  • ETH 0.005 0xf93d537415cbb7795900c8a2aeb0d40a71d789f2.CALL( )
    ;;; --------------------------------------------------------------------------- 
    ;;; @title The Ethereum Name Service registry. 
    ;;; @author Daniel Ellison <[email protected]> 
     
    (seq 
     
      ;; -------------------------------------------------------------------------- 
      ;; Constant definitions. 
     
      ;; Memory layout. 
      (def 'node-bytes  0x00) 
      (def 'label-bytes 0x20) 
      (def 'call-result 0x40) 
     
      ;; Struct: Record 
      (def 'resolver 0x00) ; address 
      (def 'owner    0x20) ; address 
      (def 'ttl      0x40) ; uint64 
     
      ;; Precomputed function IDs. 
      (def 'get-node-owner    0x02571be3) ; owner(bytes32) 
      (def 'get-node-resolver 0x0178b8bf) ; resolver(bytes32) 
      (def 'get-node-ttl      0x16a25cbd) ; ttl(bytes32) 
      (def 'set-node-owner    0x5b0fc9c3) ; setOwner(bytes32,address) 
      (def 'set-subnode-owner 0x06ab5923) ; setSubnodeOwner(bytes32,bytes32,address) 
      (def 'set-node-resolver 0x1896f70a) ; setResolver(bytes32,address) 
      (def 'set-node-ttl      0x14ab9038) ; setTTL(bytes32,uint64) 
     
      ;; Jumping here causes an EVM error. 
      (def 'invalid-location 0x02) 
     
      ;; -------------------------------------------------------------------------- 
      ;; @notice Shifts the leftmost 4 bytes of a 32-byte number right by 28 bytes. 
      ;; @param input A 32-byte number. 
     
      (def 'shift-right (input) 
        (div input (exp 2 224))) 
     
      ;; -------------------------------------------------------------------------- 
      ;; @notice Determines whether the supplied function ID matches a known 
      ;;         function hash and executes <code-body> if so. 
      ;; @dev The function ID is in the leftmost four bytes of the call data. 
      ;; @param function-hash The four-byte hash of a known function signature. 
      ;; @param code-body The code to run in the case of a match. 
     
      (def 'function (function-hash code-body) 
        (when (= (shift-right (calldataload 0x00)) function-hash) 
          code-body)) 
     
      ;; -------------------------------------------------------------------------- 
      ;; @notice Calculates record location for the node and label passed in. 
      ;; @param node The parent node. 
      ;; @param label The hash of the subnode label. 
     
      (def 'get-record (node label) 
        (seq 
          (mstore node-bytes node) 
          (mstore label-bytes label) 
          (sha3 node-bytes 64))) 
     
      ;; -------------------------------------------------------------------------- 
      ;; @notice Retrieves owner from node record. 
      ;; @param node Get owner of this node. 
     
      (def 'get-owner (node) 
        (sload (+ node owner))) 
     
      ;; -------------------------------------------------------------------------- 
      ;; @notice Stores new owner in node record. 
      ;; @param node Set owner of this node. 
      ;; @param new-owner New owner of this node. 
     
      (def 'set-owner (node new-owner) 
        (sstore (+ node owner) new-owner)) 
     
      ;; -------------------------------------------------------------------------- 
      ;; @notice Stores new subnode owner in node record. 
      ;; @param node Set owner of this node. 
      ;; @param label The hash of the label specifying the subnode. 
      ;; @param new-owner New owner of the subnode. 
     
      (def 'set-subowner (node label new-owner) 
        (sstore (+ (get-record node label) owner) new-owner)) 
     
      ;; -------------------------------------------------------------------------- 
      ;; @notice Retrieves resolver from node record. 
      ;; @param node Get resolver of this node. 
     
      (def 'get-resolver (node) 
        (sload node)) 
     
      ;; -------------------------------------------------------------------------- 
      ;; @notice Stores new resolver in node record. 
      ;; @param node Set resolver of this node. 
      ;; @param new-resolver New resolver for this node. 
     
      (def 'set-resolver (node new-resolver) 
        (sstore node new-resolver)) 
     
      ;; -------------------------------------------------------------------------- 
      ;; @notice Retrieves TTL From node record. 
      ;; @param node Get TTL of this node. 
     
      (def 'get-ttl (node) 
        (sload (+ node ttl))) 
     
      ;; -------------------------------------------------------------------------- 
      ;; @notice Stores new TTL in node record. 
      ;; @param node Set TTL of this node. 
      ;; @param new-resolver New TTL for this node. 
     
      (def 'set-ttl (node new-ttl) 
        (sstore (+ node ttl) new-ttl)) 
     
      ;; -------------------------------------------------------------------------- 
      ;; @notice Checks that the caller is the node owner. 
      ;; @param node Check owner of this node. 
     
      (def 'only-node-owner (node) 
        (when (!= (caller) (get-owner node)) 
          (jump invalid-location))) 
     
      ;; -------------------------------------------------------------------------- 
      ;; INIT 
     
      ;; Set the owner of the root node (0x00) to the deploying account. 
      (set-owner 0x00 (caller)) 
     
      ;; -------------------------------------------------------------------------- 
      ;; CODE 
     
      (returnlll 
        (seq 
     
          ;; ---------------------------------------------------------------------- 
          ;; @notice Returns the address of the resolver for the specified node. 
          ;; @dev Signature: resolver(bytes32) 
          ;; @param node Return this node's resolver. 
          ;; @return The associated resolver. 
     
          (def 'node (calldataload 0x04)) 
     
          (function get-node-resolver 
            (seq 
     
              ;; Get the node's resolver and save it. 
              (mstore call-result (get-resolver node)) 
     
              ;; Return result. 
              (return call-result 32))) 
     
          ;; ---------------------------------------------------------------------- 
          ;; @notice Returns the address that owns the specified node. 
          ;; @dev Signature: owner(bytes32) 
          ;; @param node Return this node's owner. 
          ;; @return The associated address. 
     
          (def 'node (calldataload 0x04)) 
     
          (function get-node-owner 
            (seq 
     
              ;; Get the node's owner and save it. 
              (mstore call-result (get-owner node)) 
     
              ;; Return result. 
              (return call-result 32))) 
     
          ;; ---------------------------------------------------------------------- 
          ;; @notice Returns the TTL of a node and any records associated with it. 
          ;; @dev Signature: ttl(bytes32) 
          ;; @param node Return this node's TTL. 
          ;; @return The node's TTL. 
     
          (def 'node (calldataload 0x04)) 
     
          (function get-node-ttl 
            (seq 
     
              ;; Get the node's TTL and save it. 
              (mstore call-result (get-ttl node)) 
     
              ;; Return result. 
              (return call-result 32))) 
     
          ;; ---------------------------------------------------------------------- 
          ;; @notice Transfers ownership of a node to a new address. May only be 
          ;;         called by the current owner of the node. 
          ;; @dev Signature: setOwner(bytes32,address) 
          ;; @param node The node to transfer ownership of. 
          ;; @param new-owner The address of the new owner. 
     
          (def 'node (calldataload 0x04)) 
          (def 'new-owner (calldataload 0x24)) 
     
          (function set-node-owner 
            (seq (only-node-owner node) 
     
              ;; Transfer ownership by storing passed-in address. 
              (set-owner node new-owner) 
     
              ;; Emit an event about the transfer. 
              ;; Transfer(bytes32 indexed node, address owner); 
              (mstore call-result new-owner) 
              (log2 call-result 32 
                  (sha3 0x00 (lit 0x00 "Transfer(bytes32,address)")) node) 
     
              ;; Nothing to return. 
              (stop))) 
     
          ;; ---------------------------------------------------------------------- 
          ;; @notice Transfers ownership of a subnode to a new address. May only be 
          ;;         called by the owner of the parent node. 
          ;; @dev Signature: setSubnodeOwner(bytes32,bytes32,address) 
          ;; @param node The parent node. 
          ;; @param label The hash of the label specifying the subnode. 
          ;; @param new-owner The address of the new owner. 
     
          (def 'node (calldataload 0x04)) 
          (def 'label (calldataload 0x24)) 
          (def 'new-owner (calldataload 0x44)) 
     
          (function set-subnode-owner 
            (seq (only-node-owner node) 
     
              ;; Transfer ownership by storing passed-in address. 
              (set-subowner node label new-owner) 
     
              ;; Emit an event about the transfer. 
              ;; NewOwner(bytes32 indexed node, bytes32 indexed label, address owner); 
              (mstore call-result new-owner) 
              (log3 call-result 32 
                  (sha3 0x00 (lit 0x00 "NewOwner(bytes32,bytes32,address)")) 
                  node label) 
     
              ;; Nothing to return. 
              (stop))) 
     
          ;; ---------------------------------------------------------------------- 
          ;; @notice Sets the resolver address for the specified node. 
          ;; @dev Signature: setResolver(bytes32,address) 
          ;; @param node The node to update. 
          ;; @param new-resolver The address of the resolver. 
     
          (def 'node (calldataload 0x04)) 
          (def 'new-resolver (calldataload 0x24)) 
     
          (function set-node-resolver 
            (seq (only-node-owner node) 
     
              ;; Transfer ownership by storing passed-in address. 
              (set-resolver node new-resolver) 
     
              ;; Emit an event about the change of resolver. 
              ;; NewResolver(bytes32 indexed node, address resolver); 
              (mstore call-result new-resolver) 
              (log2 call-result 32 
                  (sha3 0x00 (lit 0x00 "NewResolver(bytes32,address)")) node) 
     
              ;; Nothing to return. 
              (stop))) 
     
          ;; ---------------------------------------------------------------------- 
          ;; @notice Sets the TTL for the specified node. 
          ;; @dev Signature: setTTL(bytes32,uint64) 
          ;; @param node The node to update. 
          ;; @param ttl The TTL in seconds. 
     
          (def 'node (calldataload 0x04)) 
          (def 'new-ttl (calldataload 0x24)) 
     
          (function set-node-ttl 
            (seq (only-node-owner node) 
     
              ;; Set new TTL by storing passed-in time. 
              (set-ttl node new-ttl) 
     
              ;; Emit an event about the change of TTL. 
              ;; NewTTL(bytes32 indexed node, uint64 ttl); 
              (mstore call-result new-ttl) 
              (log2 call-result 32 
                  (sha3 0x00 (lit 0x00 "NewTTL(bytes32,uint64)")) node) 
     
              ;; Nothing to return. 
              (stop))) 
     
          ;; ---------------------------------------------------------------------- 
          ;; @notice Fallback: No functions matched the function ID provided. 
     
          (jump invalid-location))) 
     
    )