Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xCEC8F07014d889442D7Cf3b477b8F72f8179eA09
Balance 14.4765 ETH
Nonce 1
Code Size 2546 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

2546 bytes
0x608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025313a2146100e757806336ba97941461013e57806354fd4d50146101c75780635c60da1b14610257578063d7e24337146102ae578063f1739cae14610370575b60006100826103b3565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156100c057600080fd5b60405136600082376000803683855af43d806000843e81600081146100e3578184f35b8184fd5b3480156100f357600080fd5b506100fc61041c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014a57600080fd5b506101c5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061045f565b005b3480156101d357600080fd5b506101dc6104ae565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561021c578082015181840152602081019050610201565b50505050905090810190601f1680156102495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026357600080fd5b5061026c6103b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61036e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610550565b005b34801561037c57600080fd5b506103b1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610633565b005b60008060405180807f636f696e746f6f6c2e6170702e70726f78792e696d706c656d656e746174696f81526020017f6e00000000000000000000000000000000000000000000000000000000000000815250602101905060405180910390209050805491505090565b60008060405180807f636f696e746f6f6c2e6170702e70726f78792e6f776e65720000000000000000815250601801905060405180910390209050805491505090565b61046761041c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104a057600080fd5b6104aa828261075a565b5050565b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105465780601f1061051b57610100808354040283529160200191610546565b820191906000526020600020905b81548152906001019060200180831161052957829003601f168201915b5050505050905090565b61055861041c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561059157600080fd5b61059b838361075a565b3073ffffffffffffffffffffffffffffffffffffffff16348260405180828051906020019080838360005b838110156105e15780820151818401526020810190506105c6565b50505050905090810190601f16801561060e5780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af192505050151561062e57600080fd5b505050565b61063b61041c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561067457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156106b057600080fd5b6106b981610879565b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96106e261041c565b82604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150565b60006107646103b3565b90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156107a157600080fd5b6107aa836108ba565b81600090805190602001906107c0929190610921565b508273ffffffffffffffffffffffffffffffffffffffff167ffeb57eb540ad2b58d897c813a06ff64690ef5de12413a361591aea28ee60748a836040518080602001828103825283818151815260200191508051906020019080838360005b8381101561083a57808201518184015260208101905061081f565b50505050905090810190601f1680156108675780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b600060405180807f636f696e746f6f6c2e6170702e70726f78792e6f776e657200000000000000008152506018019050604051809103902090508181555050565b600060405180807f636f696e746f6f6c2e6170702e70726f78792e696d706c656d656e746174696f81526020017f6e000000000000000000000000000000000000000000000000000000000000008152506021019050604051809103902090508181555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061096257805160ff1916838001178555610990565b82800160010185558215610990579182015b8281111561098f578251825591602001919060010190610974565b5b50905061099d91906109a1565b5090565b6109c391905b808211156109bf5760008160009055506001016109a7565b5090565b905600a165627a7a72305820f185eafb46dd0e07801ee08f83a221658f46c74ccebc0918264df32e5a829a9c0029

Verified Source Code Partial Match

Compiler: v0.4.24+commit.e67f0147 EVM: byzantium Optimization: No
CoinToolProxy.sol 198 lines
/**
 * @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)
    }
  }
}

Read Contract

implementation 0x5c60da1b → address
proxyOwner 0x025313a2 → address
version 0x54fd4d50 → string

Write Contract 3 functions

These functions modify contract state and require a wallet transaction to execute.

transferProxyOwnership 0xf1739cae
address _newOwner
upgradeTo 0x36ba9794
address _implementation
string _newVersion
upgradeToAndCall 0xd7e24337
address _implementation
string _newVersion
bytes _data

Token Balances (1)

View Transfers →
WETH 0

Recent Transactions

No transactions found for this address