Contract 0x4ae57798AEF4aF99eD03818f83d2d8AcA89952c7 1

Token Contract 
 
 
Txn Hash
Method
Block
From
To
Value
0x8672a12a7f3ac1237a0d1f22c48d6e82246bd1b554eeb126a19dca0b30e75541Set Approval For...160579982022-11-27 1:21:235 days 22 hrs ago0x6f8be3f685389612f59508828ae54f03b5f64ce1 IN  Rare Pizza Box: ZABOX Token0 Ether0.00051959 9.72829346
0xcf2add6822d811e5bdce18e451a4bde09ec2324135c6b9bd7e7ce80836242fdeSet Approval For...159138222022-11-06 21:59:3526 days 2 hrs ago0xf2b8e98339afb41c47b19cb4c29f755f88b559ab IN  Rare Pizza Box: ZABOX Token0 Ether0.00061403 11.51456015
0x951dc6e855a038afc4e415ea1bd49d4c6524599deb4ea3214eef239179951afaSet Approval For...158847992022-11-02 20:43:5930 days 3 hrs agoENS Name araremood.eth IN  Rare Pizza Box: ZABOX Token0 Ether0.00058501 18.57246059
0x884e128532b26285a7fa851300197191805db567da84412c91ce881c0914c3efSet Approval For...158687312022-10-31 14:46:5932 days 9 hrs ago0x2b6247079ddd8e81b34093e911284253bd455ef6 IN  Rare Pizza Box: ZABOX Token0 Ether0.00206727 65.62984407
0x043b8f03a640efc691d4838903bae4ee6207f5c2b66639971ba037c87d102423Set Approval For...158539022022-10-29 13:06:2334 days 10 hrs agoENS Name timeflux.eth IN  Rare Pizza Box: ZABOX Token0 Ether0.00185416 34.76971743
0x4e2f42913c96a4ae21d5757b645c0b1752a78c46bbab150b3516f34aaa49e98cSet Approval For...158471192022-10-28 14:20:3535 days 9 hrs agoENS Name nycmike.eth IN  Rare Pizza Box: ZABOX Token0 Ether0.00107912 20.23595772
0x33c0b9d9802cb288259a8fc333b1c86e8fba758ff2a0f9cea4ca01e4b8dbee6dSet Approval For...158459432022-10-28 10:24:5935 days 13 hrs ago0x28fe7028375335a627b16af0222f80bb7fdb404e IN  Rare Pizza Box: ZABOX Token0 Ether0.00030769 9.76855463
0x32434c8a0d5761e1ecf8ef924ba5849cf2c13cbe49fc962267d037e5676e5d56Set Approval For...157710452022-10-17 23:15:3546 days 49 mins agoENS Name zech.eth IN  Rare Pizza Box: ZABOX Token0 Ether0.00107646 20.18610495
0x1d2b26efb777e66f3e6f7895eb2c484b951c3fc41d93c62d4137e844134436e6Transfer From157582322022-10-16 4:16:3547 days 19 hrs ago0x790f717af667f91b87fbe7063034565542fd3929 IN  Rare Pizza Box: ZABOX Token0 Ether0.002044321.80294922
0xd0a97018abe4cce1c07450fc4c6931396ffbf6ecbfe8aa71dfcf042b868e5c1cSafe Transfer Fr...157084202022-10-09 5:22:2354 days 18 hrs ago0x0b24a0a60085c9eb84317a14a4859288920a806b IN  Rare Pizza Box: ZABOX Token0 Ether0.00247447 23.49076487
0x797639ea18edb2260a27db93b51a1bfc1959678acd9918cfe1a1a5364fb1f6e4Set Approval For...156972252022-10-07 15:51:2356 days 8 hrs agoENS Name diggs.eth IN  Rare Pizza Box: ZABOX Token0 Ether0.00074579 13.98530345
0x3fa581ec7abb73117bd125a264442571ff5c839be2d1dfd687b7447e11ba47b6Safe Transfer Fr...156629142022-10-02 20:40:3561 days 3 hrs ago0x975fcac1b4030ef5b5c319f972634ea6fe757998 IN  Rare Pizza Box: ZABOX Token0 Ether0.00055741 5.94404841
0x86ea0c96176997e8501abb265f9ad7800fe39d3ff16d3ef1fbe2212a98d01f7eSet Approval For...156483582022-09-30 19:51:4763 days 4 hrs ago0x9f563370c1b42dec9fb9e76ec00328ba6dd698c0 IN  Rare Pizza Box: ZABOX Token0 Ether0.00077469 14.5272629
0x1bf2f88c1ebed6e6297f5cd2acf0acea2492e3b54733818d6fe4b0c6f56e11f7Set Approval For...156483282022-09-30 19:45:4763 days 4 hrs agoENS Name gatewaytoparadise.eth IN  Rare Pizza Box: ZABOX Token0 Ether0.00081812 15.34164445
0xbb2d5bcc8ce564d0bf68b838d9b81b3b7da88bb6f83b812f9d62fa92e7490b95Safe Transfer Fr...156342712022-09-28 20:37:3565 days 3 hrs agoENS Name chefdormito.eth IN  Rare Pizza Box: ZABOX Token0 Ether0.00116164 12.02668398
0xdeba9635ec9026799d8c8a6b69e9cc85781398715063f903c9eb2c843ba91255Transfer156340982022-09-28 20:02:4765 days 4 hrs agoENS Name chefdormito.eth IN  Rare Pizza Box: ZABOX Token0 Ether0.00039036 13.43166164
0x5f92f26e73414654368f118b1b8ecfd07ca722f89041b75317e02fd14d729f12Transfer156340982022-09-28 20:02:4765 days 4 hrs agoENS Name chefdormito.eth IN  Rare Pizza Box: ZABOX Token0 Ether0.00039468 13.58046741
0x4911130a71edb7ad50783a65a589463066c1af8f2e93171605a9c47f35023594Set Approval For...156095872022-09-25 9:47:3568 days 14 hrs ago0x0c7a6d72f279255e1049a3b7ec752a99c14085d0 IN  Rare Pizza Box: ZABOX Token0 Ether0.00077475 14.52841551
0xd63a684493f6f706fdfb2cc1a9257c3a378ad2750b56187c3bc91c80b94ee1ebSet Approval For...156042542022-09-24 15:55:5969 days 8 hrs ago0x01a518f6fdbc595a04353e96c448d4ddc61673b9 IN  Rare Pizza Box: ZABOX Token0 Ether0.00030595 5.73731857
0xdbed83149820f233f0c61809b57ea524095511ae0d66af2a37651c0147823617Multi Purchase156041852022-09-24 15:42:1169 days 8 hrs agoENS Name cryptotaxpro.eth IN  Rare Pizza Box: ZABOX Token0.08 Ether0.00164889 9.4519928
0xd6af9950a0b5021e0aa6dd44e06a5847d15cb6c0964da5dd7e3da4c8d8cc232eSafe Transfer Fr...155565562022-09-17 23:25:5976 days 38 mins ago0x33484678a59581100d6266d04910a7472eef55b5 IN  Rare Pizza Box: ZABOX Token0 Ether0.00040378 4.30530022
0xf663d4d505b4987f771e6efd4be18a529286239a19a0fd69096a93cf9e5cd434Safe Transfer Fr...155351242022-09-14 21:22:3679 days 2 hrs agoENS Name serviverman.eth IN  Rare Pizza Box: ZABOX Token0 Ether0.00113242 11.72559296
0x0d6ee4124420cf63b1e856c0e081a4b65b5d686413110830825622cddad35693Set Approval For...155172892022-09-11 22:13:2582 days 1 hr ago0x4f9997213124846ed58215c13835d4a22e10e14a IN  Rare Pizza Box: ZABOX Token0 Ether0.00089397 16.76398403
0x35ff6c4c6030af6a77dd7691d2ec44427077d5f7f15d5087ccc25d29e567867fSet Approval For...155126992022-09-11 3:57:5982 days 20 hrs agoENS Name toyboogers.eth IN  Rare Pizza Box: ZABOX Token0 Ether0.00038539 7.22700882
0x80e0ad02768253a5219c5122100846fe34ebf97129db7f30404c2a45d3b1c2beSet Approval For...155052142022-09-09 22:13:1484 days 1 hr ago0xc766478cb4c31184b55ed86ffec2141358492568 IN  Rare Pizza Box: ZABOX Token0 Ether0.00100791 18.90064006
[ Download CSV Export 

OVERVIEW

Rare Pizzas is a collection of 10,000 unique generative art pizzas sold on a curve that ends at 10,000 Bitcoin, an homage to Laszlo's purchase of two pizzas for 10,000 Bitcoin on May 22nd in 2010, the first recorded cryptocurrency transaction for real-world goods.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xf3fea83d65866cd3d41edc2ef436bf29e44bd0b7aa945ab512b2bf175b3084c6148878392022-06-02 0:12:30183 days 23 hrs ago Rare Pizza Box: ZABOX Token 0xba5e28a2d1c8cf67ac9e0dfc850dc8b7b21a4de213.6 Ether
0x88ca0dff33c08a631963af3ba8aa7f6b4bd747fdddb5b72241c578f9bc0892ea148024702022-05-19 2:40:14197 days 21 hrs ago Rare Pizza Box: ZABOX Token 0xba5e28a2d1c8cf67ac9e0dfc850dc8b7b21a4de212.92192524 Ether
0xea6f50ce4f7f8e63fd57800ba37dca738e987078232db6bd7fa432ff7b2c4714145415342022-04-07 22:49:56239 days 1 hr ago Rare Pizza Box: ZABOX Token0x16cb4898d68df1427c90b58ecdd90002dce3a9f20.01603881 Ether
0x52e1e481316a5b9429c38491eb97b5a4f88e11684b036aba61f7a39c2ed650c5145133292022-04-03 13:12:27243 days 10 hrs ago Rare Pizza Box: ZABOX Token0x40e37a375e66e19d358b181de175bd2b78a91acb0.01602454 Ether
0x1ec7aacc314fad24c282f405fd14f26c4ab8bea02c8e5871c1558f9d3e34de11144498422022-03-24 15:37:05253 days 8 hrs ago Rare Pizza Box: ZABOX Token0xd7571d439b906833aa0ab7ed781574c517f02bc50.01601027 Ether
0x9b2650e319845ea6f95dbba6f774f11f8de8aae72d858f7cb756b12cc34bb577144371912022-03-22 16:31:43255 days 7 hrs ago Rare Pizza Box: ZABOX Token0x379a982dbc95dc3b5a343d1cb7a00d9cb13836630.015996 Ether
0x0d8752b44e87a15aa7502c8d7d60e7bbb68bdee9d8762f1e83f5fdc81a47bee9144185242022-03-19 18:31:18258 days 5 hrs ago Rare Pizza Box: ZABOX Token0x25d3563f8675028e36889453519d98e685ee16300.01598173 Ether
0x7d879afb5ec9f1a33c580139212f0c87f3ebb8cf7cfaa8124b51d8d7af5e5827143960502022-03-16 6:41:57261 days 17 hrs ago Rare Pizza Box: ZABOX Token0xca1146c1d1b26ca782f7388096462189fb09113f0.01596746 Ether
0xba6dce5f80830ade1cac4be2dbf09bc87e3ab9f95cec814dda1d0a00d2134932143929382022-03-15 19:04:27262 days 5 hrs ago Rare Pizza Box: ZABOX TokenENS Name superphiz.eth0.01595319 Ether
0x083aac4f373ed4c152be1e1c4fa3f20a8c4920c9f79bbdd630f579c31ea484eb143604972022-03-10 17:42:41267 days 6 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.01533961 Ether
0xeeb35d642114b3055d65f1d44bbb1d0402af5dc46cdddfe6fc8ab54401ded8c4143604962022-03-10 17:42:19267 days 6 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.01562499 Ether
0xcd4a7f2a01b34e01f40770c7222f2b37127d285ff10ae63c2b6969ebe69519e2143604962022-03-10 17:42:19267 days 6 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.01591038 Ether
0x0dfa23b6ea32e7b2063a63a00d12a1b70e442b53d98e7f145ea18dac040550db143536802022-03-09 16:32:39268 days 7 hrs ago Rare Pizza Box: ZABOX TokenENS Name griff.eth0.01589611 Ether
0x5fa7e22e59436a09670ad0f71cf93db8a68ef0fcee1262700fc6f1d58a6b52c1143472042022-03-08 16:19:39269 days 7 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.01588184 Ether
0x0c232630e74cf2a0335eaf9ffebfeb6c277158e3e864c22f4ea177f3856a85f7143472002022-03-08 16:18:41269 days 7 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.01586757 Ether
0x4dc98754502974156f8e9de02f6ab4d17ebd7753e1368d70b40c91251830db89143421822022-03-07 21:38:34270 days 2 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.01585331 Ether
0xa776a0f4404a23d9bdebe75154047f268962013bdd964c27790807a1b9ce6a4c143421752022-03-07 21:37:39270 days 2 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.01553938 Ether
0xe995b5d4e9c10e9e0b99093549493d503b39c97083573018d07a48ad8854d0f7143421752022-03-07 21:37:39270 days 2 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.01522545 Ether
0xae93586576446576fcdcb867b5ea081ea2a2751fe7a0138ee815751db42b52e8143421732022-03-07 21:37:16270 days 2 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.01551084 Ether
0x0fdf68f296aae6b6e8573ec4914ab6add47437fa35b028a7cfaadb5828196eb7143421732022-03-07 21:37:16270 days 2 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.01579623 Ether
0x119b07bed0bd511e86fd81d5d8b8238bf786536c8982f6343ab184c012814a2c143421702022-03-07 21:36:13270 days 2 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.0154823 Ether
0x5ecbdcbf1e63a7e7779a87972b8096d7fda2d4b61ff56bdc3469f90eba0cc8e2143421672022-03-07 21:35:59270 days 2 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.01576769 Ether
0x1f89dd42d3cc2374fd379f5b38a9528a37b192a8d50232f960f2fe36f1dfa54c143421642022-03-07 21:35:10270 days 2 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.01545376 Ether
0x4a32c5d632e42583b2b875d2888b235b1bdfc405a3234ce7070212a2ef312ef9143421642022-03-07 21:35:10270 days 2 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.01543949 Ether
0x1a0ff405f741ce7e5f9964f5391d0e4f6d4b6bd6bc12c6ae0ab38048691b4ef3143421632022-03-07 21:34:33270 days 2 hrs ago Rare Pizza Box: ZABOX Token0xf41a98d4f2e52aa1ccb48f0b6539e955707b8f7a0.01572488 Ether
[ Download CSV Export 
Loading

Similar Match Source Code
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.

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.