Contract 0x4ae57798aef4af99ed03818f83d2d8aca89952c7

 
Ad
Ad
Txn Hash Method
Block
From
To
Value
0xfee6172847e6083d47c838fb72b285cde0848438c654191e1fd079c18be37060Purchase(pending)2021-06-13 11:51:321 day 12 hrs ago0x139384d029fcd6ebbbdf03b04769e4b965e8bcd0 IN 0x4ae57798aef4af99ed03818f83d2d8aca89952c70.005952 Ether(Pending)(Pending)
0x4d7fa4a6f7c296d903164574062e1a0280473d366cb81fa09d9816005da358aeSet Approval For...126354802021-06-14 23:09:5945 mins agoENS Name radcliffe.eth IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.0007513114
0x8a5ce04421408742305dc1821e45fc467c1e3f790850f4f17298bdc9e32ca5b5Set Approval For...126307282021-06-14 5:33:0418 hrs 21 mins ago0xc78a95019c52ad9856aa764d6908e88d5b7930ee IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.00069764513
0xf947376be7cb0d8e3f9913032eb6e91b3ea0521bbaf53e4add6f473a0fcc158eSet Approval For...126152272021-06-11 19:55:133 days 3 hrs ago0xe18979f2576856d4199c6abaf4ffdf5672d930bd IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.0013952926
0x8f3fec5266097cfd3fb1281bed96b9f04b109fab68ac17d31a8bf09602bd3ba8Set Approval For...126118632021-06-11 7:16:413 days 16 hrs ago0x6ed2b7e7dcd5c941c7792b9889d5b0b79f4f4410 IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.00080497515
0x0c0c2ec6fe31914fd0776e052efe2f915839b3e476c75c40c140be6442c943e8Approve125818412021-06-06 15:44:548 days 8 hrs ago0xc1ecb897553d21a2af0b7b90f0b648cc444803c8 IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.0008979216
0xce262fc1173c908ab721870d4af1ecbc540db764a6db4d8d649d7e8071dd8032Set Approval For...125703062021-06-04 20:51:2910 days 3 hrs ago0x931d24f3dede331bfd02a1aa855e9cbf7f0ea2e7 IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.001073320
0x9760dc70c1dab30a6064c75639768d3927c27e3f2924b53c6852ed332306f3adSet Approval For...125643642021-06-03 23:00:2911 days 54 mins ago0x87d61ba0f22202249e816a9e474d4933ba32e0e3 IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.00134162525
0x3cb26b41933a5de7780a3c273f4d4268296094c7d146d5f42ae5383408ab00eaSet Approval For...125603202021-06-03 7:55:4411 days 15 hrs ago0x334ce923420ff1aa4f272e92bf68013d092ae7b4 IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.0013952926.000000001
0x97f3247b7aa899127b5c71ed39fb723d477a69b6f8b30a0cfb0cad2ba5385fc0Set Approval For...125573982021-06-02 20:55:1112 days 2 hrs ago0x2881780b4184b0f81001fb263dafb7a4271edf06 IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.0011806322
0x27302566ffa896e499bbc9a1ab9a540e866dd76cd296d98b50c1dac78a9c754fSet Approval For...125545722021-06-02 10:38:0712 days 13 hrs ago0x8aebebf863078e21965c3b97ee19283d57cb4da3 IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.00091210117
0x383e695afee0af1843cfecd1841e531ddb7f74d469fa879010bedfbd8c9bf168Purchase125524572021-06-02 2:55:5212 days 20 hrs agoENS Name snackman.eth IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70.37096796012376 Ether0.026129145
0xd9ef547f7985119eabf12b83a7c8a1883050847b8c037a131011480ee4bf3be0Transfer From125490612021-06-01 14:20:1713 days 9 hrs ago0x0872e7233699965101097cceb124c4c7eea63eec IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.00183739426
0x93ebd170357a0c5d1a73432a4c3adead9279734b1b1ef49bf11d7764704bbb93Set Approval For...125230792021-05-28 13:26:5617 days 10 hrs ago0x148e2ed011a9eaaa200795f62889d68153eeacde IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.001990971537.1
0xc38537c402eb9475e169e25d10a052a9c223a5ba763fd56a84433f3f28e01045Transfer From125212632021-05-28 6:36:5117 days 17 hrs ago0x1917697bc74455d9bc8e112d9abd0dbeca764160 IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.002189018629.8
0xc1586091cca9add9a0d012e886d2c11af286018593852989060df84fa6a5eb41Transfer From125212632021-05-28 6:36:5117 days 17 hrs ago0x1917697bc74455d9bc8e112d9abd0dbeca764160 IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.0021407130
0x1d529676c92d4e2ca645d2bc4f80c7ae226a5ca9374134d68e0012e8c694937dTransfer From125212302021-05-28 6:29:1217 days 17 hrs ago0x1917697bc74455d9bc8e112d9abd0dbeca764160 IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.0025125330
0xeab39c9cb31779b494a8dbff40e1258e7d28e7f7408e06375fab0db41afe933cTransfer From125211842021-05-28 6:20:0417 days 17 hrs ago0xdb70c4428f13cd78710f2d0a6020b507cc1c602e IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.00257099535
0x1897370f2ddc631344bc46dfe44a92c7fc64d4c1ee4703a4056b1dc0e6455470Transfer From125185572021-05-27 20:45:2618 days 3 hrs ago0xdb70c4428f13cd78710f2d0a6020b507cc1c602e IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.00207259224
0x5997e48eed5ff81cf107eda823eb799b608e76fa54e37724a8abc6fc5fac9a20Transfer From125185572021-05-27 20:45:2618 days 3 hrs ago0xdb70c4428f13cd78710f2d0a6020b507cc1c602e IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.00171256824
0x8b3a0c14ea97a68ac03f4143c4d806490f3d221c3cfcb6154df2f542e9c1dbb7Transfer From125185572021-05-27 20:45:2618 days 3 hrs ago0xdb70c4428f13cd78710f2d0a6020b507cc1c602e IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.00201002424
0x8134adb8464e0476b971c5f1412c8cdac5eec5ef84cd09e8a303915e7e9795acTransfer From125181872021-05-27 19:22:3818 days 4 hrs ago0xd5ad01d3cbb60c6aa29ed314596f82fc7957fe02 IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.0022037130
0x776568cf96ec85173643adafba82a8ab0ea40878744f78c4cb9faae4f01d9a76Transfer From125181702021-05-27 19:17:5218 days 4 hrs ago0xd5ad01d3cbb60c6aa29ed314596f82fc7957fe02 IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.00242877929
0x26333ba189aefc4ec20c5739916bfc5f1d328b3eb8fcbbb418178f1ae9195a25Set Approval For...125171732021-05-27 15:32:3818 days 8 hrs ago0x89450074a0a7db28143067626d1c1ef45cfb9696 IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.00228612942.6
0x582dcbd105f9669ce9c0ba8051f86e1c92562de695e6fec193366aa3d45c29f6Transfer From125165472021-05-27 13:08:4118 days 10 hrs ago0xd5ad01d3cbb60c6aa29ed314596f82fc7957fe02 IN  0x4ae57798aef4af99ed03818f83d2d8aca89952c70 Ether0.00228342432
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x383e695afee0af1843cfecd1841e531ddb7f74d469fa879010bedfbd8c9bf168125524572021-06-02 2:55:5212 days 20 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c7ENS Name snackman.eth0.06182799335396 Ether
0x63d55c09522267009737bb9085838f43c4431813752bd45feebd3bd87d16c63d124882052021-05-23 3:40:1222 days 20 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c7ENS Name snackman.eth0.06177015612912 Ether
0x3d21ef0bdcc60157d4403a804e0fd308dbb8519496166104a932ef6cd89787dc124870722021-05-22 23:24:2023 days 30 mins ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c70x2ecbb905fe50b0a372d9060187a3c4b98f2d52540.06171231890428 Ether
0x90048be73b970d15a02aa1e56ff51caf312cd7f1325b57057b8efc494996ddf6124866172021-05-22 21:45:0223 days 2 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c70x6d765f26e56384ad21c5103995ad1c21fd2395890.06165448167944 Ether
0x908c377dfa8d84edd7537390a99e72311c82911d04416945e0e83ddadbeb68d6124865152021-05-22 21:22:0323 days 2 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c70x8778b3120ba60fc831844c3dd2c5948c3fc6bc860.0615966444546 Ether
0x72c287fb9e8b1c4c7706e817935c62b448373be9e3b9b75aa709fdcc9bd80690124850392021-05-22 15:56:3323 days 7 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c70x21e2fb232e9fc401201e34176cb5eea01f28c8540.06153880722976 Ether
0x9deb2d5e681fcd796b9b218ed96438a7bffb63e90c32661f426412c6485b10f9124849822021-05-22 15:44:4223 days 8 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c7ENS Name rememberthename.eth0.06148097000492 Ether
0x40584c84371ebff61c24c68a43a4b11c14e204b2fc6452c4faa4d80c5552a314124835532021-05-22 10:27:3623 days 13 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c70xe341737d8905a3e3c0017df63b6d64db88168abd0.06142313278008 Ether
0xd88b225634d6eb2ecf72d88959d2a8682fd26802569c361cc1e1876ca1ca05ed124809402021-05-22 0:33:2623 days 23 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c70xa900a2364eec10ecbe862c1f11d89aa9583e8f860.06136529555524 Ether
0x6d4d6dfe193fa4b86cc245d9439675c99267eddfbfc530c83348a870adab2df1124809012021-05-22 0:25:1323 days 23 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c7ENS Name snackman.eth0.0613074583304 Ether
0x9a500c7273d03748f9c98f56724405adb0a3164a43199a7431576043adbb4050124760672021-05-21 6:23:2524 days 17 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c7ENS Name snackman.eth0.06124962110556 Ether
0xf25ed39e46646297b42af5feae217eb95b8e64ca0d462e9fa79f201499656b6d124756532021-05-21 4:46:4024 days 19 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c7ENS Name j1mmy.eth0.06119178388072 Ether
0x215dc275c96f2eb14cd48d90f343ddeb156e48fcec93324cb3f4e7e5f245f14a124751792021-05-21 2:56:4024 days 20 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c70xce470c2a40e41233d250ab6be0a8f4dbf966308a0.06113394665588 Ether
0xf1ee38d806cffface0f624e3ecedb35340857866dc15a634aa622dad937ae73e124750782021-05-21 2:34:3224 days 21 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c7ENS Name snackman.eth0.06107610943104 Ether
0x5a46885729acf6866d7a3fe4e558e6b77482b4918ffc4c4133cd327a77e6341e124748922021-05-21 1:55:1124 days 21 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c7ENS Name snackman.eth0.0610182722062 Ether
0x21cb299ad518c83835bbd68700cde7913be386cefd26f3be0f23ec0c8efa4649124748862021-05-21 1:52:5524 days 22 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c7ENS Name snackman.eth0.06096043498136 Ether
0x7f7c8c0bd962b7303b8b4fb35633809c939cefbefb17bf14c6e68ee5a102494c124748732021-05-21 1:49:0424 days 22 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c7ENS Name snackman.eth0.06090259775652 Ether
0x8736514c1df226770e368d3aa302f74aa58d2eabce66d1abd5727c3a9a06ccc8124731122021-05-20 19:16:2325 days 4 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c70x7a782c3a8f513621d9563e2c08c915d4fd2390750.06084476053168 Ether
0xb0cdff2fa9055d50bd683c49abe4ee7712da11f2c21f7c11244f1ffc539461e4124730572021-05-20 19:04:0925 days 4 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c7ENS Name snackman.eth0.06078692330684 Ether
0x6214aa2bdec27715c8080faf15ff86e13e3705cc08c7b8fa83ab19c1b9b6f15a124667272021-05-19 19:32:1926 days 4 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c70x18d2b9b37b576b8f1a04d7d909c2efc991bcf52e0.08262975 Ether
0x43429eb6b80f83a72f85c53701aa2871c3d4a16c46fac4abf946acbed07fda76124409962021-05-15 19:47:4930 days 4 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c70xf94abf1327da4c4d2c69afddd634697ea496035e0.082551055 Ether
0x48f7bef441759924d4bd790fbc2ad121b58af434655d744a7a9a9422987d3669124409172021-05-15 19:32:1330 days 4 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c70x8a7f7c5b556b1298a74c0e89df46eba117a2f6c10.08247236 Ether
0xdc6df58e1937d9ba92e7697d6509e6dc748cddc414d767aa84a50ec312ea9e5c124408432021-05-15 19:13:5330 days 4 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c70x334ce923420ff1aa4f272e92bf68013d092ae7b40.082393665 Ether
0x788ea367c192a000b773e3cb04b5f41063b659438aa599b4da26d4d1ee54c94f124333222021-05-14 15:30:5731 days 8 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c70x167e001d8017c5412d37c087a1d95cf9521c1a460.0818428 Ether
0x47883d3e9a98beda815f02ca88b79387415f4f95d9ce912c8e9d4fda7bfac8a4124333222021-05-14 15:30:5731 days 8 hrs ago 0x4ae57798aef4af99ed03818f83d2d8aca89952c70x167e001d8017c5412d37c087a1d95cf9521c1a460.082236275 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xaC494b69256A724C368bEd8b1e44aE456048DD42

Contract Name:
AdminUpgradeabilityProxy

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 4 : AdminUpgradeabilityProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

import './UpgradeabilityProxy.sol';

/**
 * @title AdminUpgradeabilityProxy
 * @dev This contract combines an upgradeability proxy with an authorization
 * mechanism for administrative tasks.
 * All external functions in this contract must be guarded by the
 * `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity
 * feature proposal that would enable this to be done automatically.
 */
contract AdminUpgradeabilityProxy is UpgradeabilityProxy {
  /**
   * Contract constructor.
   * @param _logic address of the initial implementation.
   * @param _admin Address of the proxy administrator.
   * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.
   * It should include the signature and the parameters of the function to be called, as described in
   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
   * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.
   */
  constructor(address _logic, address _admin, bytes memory _data) UpgradeabilityProxy(_logic, _data) public payable {
    assert(ADMIN_SLOT == bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1));
    _setAdmin(_admin);
  }

  /**
   * @dev Emitted when the administration has been transferred.
   * @param previousAdmin Address of the previous admin.
   * @param newAdmin Address of the new admin.
   */
  event AdminChanged(address previousAdmin, address newAdmin);

  /**
   * @dev Storage slot with the admin of the contract.
   * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is
   * validated in the constructor.
   */

  bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

  /**
   * @dev Modifier to check whether the `msg.sender` is the admin.
   * If it is, it will run the function. Otherwise, it will delegate the call
   * to the implementation.
   */
  modifier ifAdmin() {
    if (msg.sender == _admin()) {
      _;
    } else {
      _fallback();
    }
  }

  /**
   * @return The address of the proxy admin.
   */
  function admin() external ifAdmin returns (address) {
    return _admin();
  }

  /**
   * @return The address of the implementation.
   */
  function implementation() external ifAdmin returns (address) {
    return _implementation();
  }

  /**
   * @dev Changes the admin of the proxy.
   * Only the current admin can call this function.
   * @param newAdmin Address to transfer proxy administration to.
   */
  function changeAdmin(address newAdmin) external ifAdmin {
    require(newAdmin != address(0), "Cannot change the admin of a proxy to the zero address");
    emit AdminChanged(_admin(), newAdmin);
    _setAdmin(newAdmin);
  }

  /**
   * @dev Upgrade the backing implementation of the proxy.
   * Only the admin can call this function.
   * @param newImplementation Address of the new implementation.
   */
  function upgradeTo(address newImplementation) external ifAdmin {
    _upgradeTo(newImplementation);
  }

  /**
   * @dev Upgrade the backing implementation of the proxy and call a function
   * on the new implementation.
   * This is useful to initialize the proxied contract.
   * @param newImplementation Address of the new implementation.
   * @param data Data to send as msg.data in the low level call.
   * It should include the signature and the parameters of the function to be called, as described in
   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
   */
  function upgradeToAndCall(address newImplementation, bytes calldata data) payable external ifAdmin {
    _upgradeTo(newImplementation);
    (bool success,) = newImplementation.delegatecall(data);
    require(success);
  }

  /**
   * @return adm The admin slot.
   */
  function _admin() internal view returns (address adm) {
    bytes32 slot = ADMIN_SLOT;
    assembly {
      adm := sload(slot)
    }
  }

  /**
   * @dev Sets the address of the proxy admin.
   * @param newAdmin Address of the new proxy admin.
   */
  function _setAdmin(address newAdmin) internal {
    bytes32 slot = ADMIN_SLOT;

    assembly {
      sstore(slot, newAdmin)
    }
  }

  /**
   * @dev Only fall back when the sender is not the admin.
   */
  function _willFallback() internal override virtual {
    require(msg.sender != _admin(), "Cannot call fallback function from the proxy admin");
    super._willFallback();
  }
}

File 2 of 4 : UpgradeabilityProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

import './Proxy.sol';
import '@openzeppelin/contracts/utils/Address.sol';

/**
 * @title UpgradeabilityProxy
 * @dev This contract implements a proxy that allows to change the
 * implementation address to which it will delegate.
 * Such a change is called an implementation upgrade.
 */
contract UpgradeabilityProxy is Proxy {
  /**
   * @dev Contract constructor.
   * @param _logic Address of the initial implementation.
   * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.
   * It should include the signature and the parameters of the function to be called, as described in
   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
   * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.
   */
  constructor(address _logic, bytes memory _data) public payable {
    assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1));
    _setImplementation(_logic);
    if(_data.length > 0) {
      (bool success,) = _logic.delegatecall(_data);
      require(success);
    }
  }  

  /**
   * @dev Emitted when the implementation is upgraded.
   * @param implementation Address of the new implementation.
   */
  event Upgraded(address indexed implementation);

  /**
   * @dev Storage slot with the address of the current implementation.
   * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
   * validated in the constructor.
   */
  bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

  /**
   * @dev Returns the current implementation.
   * @return impl Address of the current implementation
   */
  function _implementation() internal override view returns (address impl) {
    bytes32 slot = IMPLEMENTATION_SLOT;
    assembly {
      impl := sload(slot)
    }
  }

  /**
   * @dev Upgrades the proxy to a new implementation.
   * @param newImplementation Address of the new implementation.
   */
  function _upgradeTo(address newImplementation) internal {
    _setImplementation(newImplementation);
    emit Upgraded(newImplementation);
  }

  /**
   * @dev Sets the implementation address of the proxy.
   * @param newImplementation Address of the new implementation.
   */
  function _setImplementation(address newImplementation) internal {
    require(Address.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address");

    bytes32 slot = IMPLEMENTATION_SLOT;

    assembly {
      sstore(slot, newImplementation)
    }
  }
}

File 3 of 4 : Proxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

/**
 * @title Proxy
 * @dev Implements delegation of calls to other contracts, with proper
 * forwarding of return values and bubbling of failures.
 * It defines a fallback function that delegates all calls to the address
 * returned by the abstract _implementation() internal function.
 */
abstract contract Proxy {
  /**
   * @dev Fallback function.
   * Implemented entirely in `_fallback`.
   */
  fallback () payable external {
    _fallback();
  }

  /**
   * @dev Receive function.
   * Implemented entirely in `_fallback`.
   */
  receive () payable external {
    _fallback();
  }

  /**
   * @return The Address of the implementation.
   */
  function _implementation() internal virtual view returns (address);

  /**
   * @dev Delegates execution to an implementation contract.
   * This is a low level function that doesn't return to its internal call site.
   * It will return to the external caller whatever the implementation returns.
   * @param implementation Address to delegate.
   */
  function _delegate(address implementation) internal {
    assembly {
      // Copy msg.data. We take full control of memory in this inline assembly
      // block because it will not return to Solidity code. We overwrite the
      // Solidity scratch pad at memory position 0.
      calldatacopy(0, 0, calldatasize())

      // Call the implementation.
      // out and outsize are 0 because we don't know the size yet.
      let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)

      // Copy the returned data.
      returndatacopy(0, 0, returndatasize())

      switch result
      // delegatecall returns 0 on error.
      case 0 { revert(0, returndatasize()) }
      default { return(0, returndatasize()) }
    }
  }

  /**
   * @dev Function that is run as the first thing in the fallback function.
   * Can be redefined in derived contracts to add functionality.
   * Redefinitions must call super._willFallback().
   */
  function _willFallback() internal virtual {
  }

  /**
   * @dev fallback implementation.
   * Extracted to enable manual triggering.
   */
  function _fallback() internal {
    _willFallback();
    _delegate(_implementation());
  }
}

File 4 of 4 : Address.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.2 <0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"_admin","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040516109943803806109948339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b5060408181527f656970313936372e70726f78792e696d706c656d656e746174696f6e0000000082525190819003601c01902086935084925060008051602061093983398151915260001990910114905061013157fe5b610143826001600160e01b0361026516565b8051156101fb576000826001600160a01b0316826040518082805190602001908083835b602083106101865780518252601f199092019160209182019101610167565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101e6576040519150601f19603f3d011682016040523d82523d6000602084013e6101eb565b606091505b50509050806101f957600080fd5b505b5050604080517f656970313936372e70726f78792e61646d696e00000000000000000000000000815290519081900360130190206000805160206109198339815191526000199091011461024b57fe5b61025d826001600160e01b036102c516565b5050506102dd565b610278816102d760201b6103b41760201c565b6102b35760405162461bcd60e51b815260040180806020018281038252603b815260200180610959603b913960400191505060405180910390fd5b60008051602061093983398151915255565b60008051602061091983398151915255565b3b151590565b61062d806102ec6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100985780635c60da1b146101185780638f28397014610149578063f851a4401461017c5761005d565b3661005d5761005b610191565b005b61005b610191565b34801561007157600080fd5b5061005b6004803603602081101561008857600080fd5b50356001600160a01b03166101ab565b61005b600480360360408110156100ae57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184600183028401116401000000008311171561010d57600080fd5b5090925090506101e5565b34801561012457600080fd5b5061012d610292565b604080516001600160a01b039092168252519081900360200190f35b34801561015557600080fd5b5061005b6004803603602081101561016c57600080fd5b50356001600160a01b03166102cf565b34801561018857600080fd5b5061012d610389565b6101996103ba565b6101a96101a461041a565b61043f565b565b6101b3610463565b6001600160a01b0316336001600160a01b031614156101da576101d581610488565b6101e2565b6101e2610191565b50565b6101ed610463565b6001600160a01b0316336001600160a01b031614156102855761020f83610488565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461026c576040519150601f19603f3d011682016040523d82523d6000602084013e610271565b606091505b505090508061027f57600080fd5b5061028d565b61028d610191565b505050565b600061029c610463565b6001600160a01b0316336001600160a01b031614156102c4576102bd61041a565b90506102cc565b6102cc610191565b90565b6102d7610463565b6001600160a01b0316336001600160a01b031614156101da576001600160a01b0381166103355760405162461bcd60e51b81526004018080602001828103825260368152602001806105876036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61035e610463565b604080516001600160a01b03928316815291841660208301528051918290030190a16101d5816104c8565b6000610393610463565b6001600160a01b0316336001600160a01b031614156102c4576102bd610463565b3b151590565b6103c2610463565b6001600160a01b0316336001600160a01b031614156104125760405162461bcd60e51b81526004018080602001828103825260328152602001806105556032913960400191505060405180910390fd5b6101a96101a9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b610491816104ec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104f5816103b4565b6105305760405162461bcd60e51b815260040180806020018281038252603b8152602001806105bd603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212206e221e2a3547bd97244b05ed46430b1b078ba097cb2a4e25ec3d79cf9ac9f02c64736f6c63430006080033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000000000000000000205615010d66198e6ef6da039497d104b717ca9300000000000000000000000053d2020a0b7da5ea873d4dea303535f46740ba2900000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.