ETH Price: $2,446.60 (+0.67%)

Transaction Decoder

Block:
16902542 at Mar-25-2023 05:56:59 AM +UTC
Transaction Fee:
0.003188554 ETH $7.80
Gas Used:
187,562 Gas / 17 Gwei

Emitted Events:

10 CoinToolProxy.0x04afd2ce457d973046bd54f5d7d36368546da08b88be1bca8ae50e32b451da17( 0x04afd2ce457d973046bd54f5d7d36368546da08b88be1bca8ae50e32b451da17, 00000000000000000000000000000000000000000000000002b854f627fa0000, 000000000000000000000000000000000000000000000000000000000000beef )

Account State Difference:

  Address   Before After State Difference Code
0x0bBE8959...fa38482AD
0.307304477838703825 Eth
Nonce: 20
0.108115923838703825 Eth
Nonce: 21
0.199188554
0x448bEf74...b93d9b1CC 0.000108589098492 Eth0.023108589098492 Eth0.023
0x4544B85D...DC2ba4773
0 Eth
Nonce: 0
0.023 Eth
Nonce: 0
0.023From: 0 To: 0
0x5c73C770...878Fd52eE
0 Eth
Nonce: 0
0.023 Eth
Nonce: 0
0.023From: 0 To: 0
0x8Cb4f4BA...aF763a1a2 0.00015133746243 Eth0.02315133746243 Eth0.023
(beaverbuild)
204.419048366369658182 Eth204.419804463102374842 Eth0.00075609673271666
0xCEC8F070...f8179eA09
(CoinTool: MultiSender)
17.508 Eth17.52 Eth0.012
0xDE6eD0f1...321441DD7 0.000086961447447 Eth0.023086961447447 Eth0.023
0xe1fC52D5...791C35d96 0.000086670159219 Eth0.023086670159219 Eth0.023
0xec001A2F...5fB33987a
0 Eth
Nonce: 0
0.023 Eth
Nonce: 0
0.023From: 0 To: 0
0xFFCf072b...e43E76418 0.000193707636066 Eth0.023193707636066 Eth0.023

Execution Trace

ETH 0.196 CoinToolProxy.0b66f3f5( )
  • ETH 0.196 0xdf6fee057222d2f7933c215c11e5150bd2efc53e.0b66f3f5( )
    • ETH 0.023 0xde6ed0f1ef4790db0e1460a18e49de9321441dd7.CALL( )
    • ETH 0.023 0x5c73c7701186085c01fc14297015deb878fd52ee.CALL( )
    • ETH 0.023 0xec001a2ff40f11306176e1bce545eba5fb33987a.CALL( )
    • ETH 0.023 0x4544b85d5f573c44230d28d1c16492edc2ba4773.CALL( )
    • ETH 0.023 0x448bef74aee57df223fbf70c20fb53db93d9b1cc.CALL( )
    • ETH 0.023 0xe1fc52d50b504d9797ac689ee3392b0791c35d96.CALL( )
    • ETH 0.023 0xffcf072b97afbb52976c6421a573b30e43e76418.CALL( )
    • ETH 0.023 0x8cb4f4ba13130ac0cf9decb8dec5bb8af763a1a2.CALL( )
      /**
       * @title CoinTool, support ETH and ERC20 Tokens
       * @dev To Use this Dapp: https://cointool.app
      */
      
      pragma solidity 0.4.24;
      
      /**
       * @title Proxy
       * @dev Gives the possibility to delegate any call to a foreign implementation.
       */
      contract Proxy {
        /**
        * @dev Tells the address of the implementation where every call will be delegated.
        * @return address of the implementation to which it will be delegated
        */
        function implementation() public view returns (address);
        
        /**
        * @dev Tells the version of the current implementation
        * @return version of the current implementation
        */
        function version() public view returns (string);
      
        /**
        * @dev Fallback function allowing to perform a delegatecall to the given implementation.
        * This function will return whatever the implementation call returns
        */
        function () payable public {
          address _impl = implementation();
          require(_impl != address(0));
      
          assembly {
            let ptr := mload(0x40)
            calldatacopy(ptr, 0, calldatasize)
            let result := delegatecall(gas, _impl, ptr, calldatasize, 0, 0)
            let size := returndatasize
            returndatacopy(ptr, 0, size)
      
            switch result
            case 0 { revert(ptr, size) }
            default { return(ptr, size) }
          }
        }
      }
      
      pragma solidity 0.4.24;
      
      /**
       * @title UpgradeabilityProxy
       * @dev This contract represents a proxy where the implementation address to which it will delegate can be upgraded
       */
      contract UpgradeabilityProxy is Proxy {
        /**
         * @dev This event will be emitted every time the implementation gets upgraded
         * @param implementation representing the address of the upgraded implementation
         */
        event Upgraded(address indexed implementation, string version);
      
        // Storage position of the address of the current implementation
        bytes32 private constant implementationPosition = keccak256("cointool.app.proxy.implementation");
        
         //Version name of the current implementation
        string internal _version;
      
        /**
         * @dev Constructor function
         */
        constructor() public {}
        
        
        /**
          * @dev Tells the version name of the current implementation
          * @return string representing the name of the current version
          */
          function version() public view returns (string) {
              return _version;
          }
      
        /**
         * @dev Tells the address of the current implementation
         * @return address of the current implementation
         */
        function implementation() public view returns (address impl) {
          bytes32 position = implementationPosition;
          assembly {
            impl := sload(position)
          }
        }
      
        /**
         * @dev Sets the address of the current implementation
         * @param _newImplementation address representing the new implementation to be set
         */
        function _setImplementation(address _newImplementation) internal {
          bytes32 position = implementationPosition;
          assembly {
            sstore(position, _newImplementation)
          }
        }
      
        /**
         * @dev Upgrades the implementation address
         * @param _newImplementation representing the address of the new implementation to be set
         */
        function _upgradeTo(address _newImplementation, string _newVersion) internal {
          address currentImplementation = implementation();
          require(currentImplementation != _newImplementation);
          _setImplementation(_newImplementation);
          _version = _newVersion;
          emit Upgraded( _newImplementation, _newVersion);
        }
      }
      
      
      pragma solidity 0.4.24;
      /**
       * @title CoinToolProxy
       * @dev This contract combines an upgradeability proxy with basic authorization control functionalities
       */
      contract CoinToolProxy is UpgradeabilityProxy {
        /**
        * @dev Event to show ownership has been transferred
        * @param previousOwner representing the address of the previous owner
        * @param newOwner representing the address of the new owner
        */
        event ProxyOwnershipTransferred(address previousOwner, address newOwner);
      
        // Storage position of the owner of the contract
        bytes32 private constant proxyOwnerPosition = keccak256("cointool.app.proxy.owner");
      
        /**
        * @dev the constructor sets the original owner of the contract to the sender account.
        */
        constructor(address _implementation, string _version) public {
          _setUpgradeabilityOwner(msg.sender);
          _upgradeTo(_implementation, _version);
        }
      
        /**
        * @dev Throws if called by any account other than the owner.
        */
        modifier onlyProxyOwner() {
          require(msg.sender == proxyOwner());
          _;
        }
      
        /**
         * @dev Tells the address of the owner
         * @return the address of the owner
         */
        function proxyOwner() public view returns (address owner) {
          bytes32 position = proxyOwnerPosition;
          assembly {
            owner := sload(position)
          }
        }
      
        /**
         * @dev Allows the current owner to transfer control of the contract to a newOwner.
         * @param _newOwner The address to transfer ownership to.
         */
        function transferProxyOwnership(address _newOwner) public onlyProxyOwner {
          require(_newOwner != address(0));
          _setUpgradeabilityOwner(_newOwner);
          emit ProxyOwnershipTransferred(proxyOwner(), _newOwner);
        }
      
        /**
         * @dev Allows the proxy owner to upgrade the current version of the proxy.
         * @param _implementation representing the address of the new implementation to be set.
         */
        function upgradeTo(address _implementation, string _newVersion) public onlyProxyOwner {
          _upgradeTo(_implementation, _newVersion);
        }
      
        /**
         * @dev Allows the proxy owner to upgrade the current version of the proxy and call the new implementation
         * to initialize whatever is needed through a low level call.
         * @param _implementation representing the address of the new implementation to be set.
         * @param _data represents the msg.data to bet sent in the low level call. This parameter may include the function
         * signature of the implementation to be called with the needed payload
         */
        function upgradeToAndCall(address _implementation, string _newVersion, bytes _data) payable public onlyProxyOwner {
          _upgradeTo(_implementation, _newVersion);
          require(address(this).call.value(msg.value)(_data));
        }
      
        /*
         * @dev Sets the address of the owner
         */
        function _setUpgradeabilityOwner(address _newProxyOwner) internal {
          bytes32 position = proxyOwnerPosition;
          assembly {
            sstore(position, _newProxyOwner)
          }
        }
      }