Contract 0xA68D85dF56E733A06443306A095646317B5Fa633 2

 

Contract Overview

Polygon: Hermez
Balance:
29.762785613824327 Ether

EtherValue:
$34,872.16 (@ $1,171.67/ETH)

Token:
 
Txn Hash
Method
Block
From
To
Value
0xb9d654fe339e3fda6ab1b416ae70d59ac28d5a3842de14c147b027c4ee54359dAdd L1Transactio...(pending)2022-11-28 0:06:213 hrs 52 mins ago0xeaa3ee4f2deea99129dc6e60aae0d3f552f5f279 IN Polygon: Hermez0.003783 Ether(Pending)(Pending)
0x1a0eecfa48f2768fc91db0009977ae11caf2ed048177de213173efe526a4e3ebForge Batch160594802022-11-27 6:18:2321 hrs 40 mins ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0066281810.5
0x644043c0d2760302e1ae6a2e082444066554a4d62646218457a021b3bc2ffd44Forge Batch160523192022-11-26 6:18:111 day 21 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0066285610.5
0xf494fa0201df782d2eb8de57a0532a5e8b1fd055ffdb5a6d353a7f704926a2b8Forge Batch160451602022-11-25 6:17:592 days 21 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.00729111.55
0x62d135482232e64f141b0f5fd28b11a728b8e84a05d59e66e2b1b07effa5965dForge Batch160379982022-11-24 6:17:473 days 21 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0079542712.6
0x5a5a5108fa3059734a89e119ebeba74e75b5929eb1460044bb37e98a1cf0d214Forge Batch160308522022-11-23 6:17:474 days 21 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.008616813.65
0x3528b086ea70d0d15652f26e8f2ed64a00a3b3427ee6fb35c55264decea9ce2bForge Batch160237072022-11-22 6:17:475 days 21 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0072902611.55
0x5c03946e4611d0f1a791eac03417458f2601081971f6edd2790ccc7dc06074dcForge Batch160165452022-11-21 6:17:236 days 21 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0066285610.5
0x945b8be1b0b61557db0801c0ca644d65eb6cd8a3c345b345fec2c7e0321e9471Forge Batch160093822022-11-20 6:17:237 days 21 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0079718312.6
0xeab6c82a56a49a9620245fe3167038b717128da1ca8d7cf2c1ccab1acb6cc9e3Forge Batch160075882022-11-20 0:17:118 days 3 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0072494811.48334778
0xbc7b50d562a162478f80ffad33ea71c77c5e1576ab41b34cdc8c677c2f04bed5Add L1Transactio...160075782022-11-20 0:15:118 days 3 hrs agoENS Name akaodinogon.eth IN  Polygon: Hermez0.01 Ether0.00137628 12.70020475
0xa38bc4bb6ff7f05f6e8867cb731f769489de14026666dba733be02fefa13f1b1Withdraw Circuit160058702022-11-19 18:32:118 days 9 hrs agoENS Name ferdjin.eth IN  Polygon: Hermez0 Ether0.00326893 11
0x8ede98ed79eb3c1895a6293688f6330a046aaee78e6cbda2826d3dfce5df24c2Forge Batch160013452022-11-19 3:21:599 days 36 mins ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0082137312.6
0x56e04c256dbc1bbb0a01bf3653f4a36a44828a78006c0e2bee75c0ae403b877aForge Batch159995502022-11-18 21:21:479 days 6 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0086196413.65
0xc9f516b4226188c7606e853549a3046043af9c265397e0f0cc64703534c24eadForge Batch159955122022-11-18 7:50:119 days 20 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0079544312.6
0x14eb0f11e0ec2e1bb3055b61f9a780f7f12933366db46db7e965389c41347d90Forge Batch159883592022-11-17 7:50:1110 days 20 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0106038216.8
0x36f292cf131b17f552747e9c452f744a177adfcaffe9ab5159f052df99fd4c8bForge Batch159812012022-11-16 7:49:5911 days 20 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0092779914.7
0xf9eae14fc6e9db5bf92fd0b80f0d43562f846a1c6bb4cfca0789230a36e1d51dForge Batch159740532022-11-15 7:49:4712 days 20 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0086169713.65
0x6702ec1471748ecd0a80a361a3088239b3d3c18b7c6fe37f4871abb12bca9903Withdraw Circuit159734792022-11-15 5:54:4712 days 22 hrs ago0xee4434d02edfd727843a507c1d3714560a8660e4 IN  Polygon: Hermez0 Ether0.0035373 12
0xfeae227b62156801c721cc63230541d9aa605a085127ec53722de88691c54f2eForge Batch159668892022-11-14 7:49:3513 days 20 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0102652215.75
0x1d49ba87bb1a68a739ced31f9d41d6f6dcc0972f69e0d08550450f71ee6cf8beWithdraw Circuit159651212022-11-14 1:54:3514 days 2 hrs ago0xee4434d02edfd727843a507c1d3714560a8660e4 IN  Polygon: Hermez0 Ether0.00508219 15.95641149
0x8a9d677c04f0249b51a0d8330ad39e9f0bc07e0f6921b3d06eb0dfa648118013Forge Batch159650952022-11-14 1:49:2314 days 2 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.013004619.95
0x483b3bc531404e27997d07373f268b2cb2f826cf963b6bac41849c97ecfe1535Forge Batch159632992022-11-13 19:49:1114 days 8 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0152432824.15
0x9998f5640588e8963f488ffe11ff14115b4d7e2505ad09e9b574c978253c9beeForge Batch159561302022-11-12 19:48:5915 days 8 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0079544312.6
0xbfcf6a7f46324bfbc35c485a4b07d37fceb25ed7844a9464edaf1e8441b1024cForge Batch159489622022-11-11 19:48:5916 days 8 hrs ago0xc3867da55e14b722ab2a8e9fa4e39f51f5e03de5 IN  Polygon: Hermez0 Ether0.0139216422.05
[ Download CSV Export 

OVERVIEW

Hermez is an open-source ZK-Rollup optimized for secure, low-cost, and usable token transfers on the wings of Ethereum.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xa38bc4bb6ff7f05f6e8867cb731f769489de14026666dba733be02fefa13f1b1160058702022-11-19 18:32:118 days 9 hrs ago Polygon: HermezENS Name ferdjin.eth0.13461805 Ether
0x6702ec1471748ecd0a80a361a3088239b3d3c18b7c6fe37f4871abb12bca9903159734792022-11-15 5:54:4712 days 22 hrs ago Polygon: Hermez0xee4434d02edfd727843a507c1d3714560a8660e40.0097838 Ether
0xad631457b4f1a2427adf86e6a40499ef2c2a58836ccc6a2ab4189203dcbb26d6159099122022-11-06 8:54:3521 days 19 hrs ago Polygon: HermezENS Name croam.eth0.01964693 Ether
0x52f7f322a75c98fc665851180db3623f3174be63d65222769c500e2d47157eee155006662022-09-09 4:10:4279 days 23 hrs ago Polygon: HermezENS Name hdttyson.eth0.408 Ether
0x4356a818da269234cb7384b3aaab70768fd3131586bc7dc45ed0867be74de381155006142022-09-09 4:00:5179 days 23 hrs ago Polygon: HermezENS Name *mr-anderson.eth0.01884222 Ether
0x35a12f5e592c8216d86096186d273b292463eaf563ea8861170eca975dfef166152922432022-08-07 1:28:25113 days 2 hrs ago Polygon: Hermez0xa4063815725dfd84c9a03fa30ac0a599791daf340.0057 Ether
0xd6eb247c129415df4aa48ce40f198e18258a5b4b27d1b35a6c41ac82a526a7d8152489722022-07-31 7:52:48119 days 20 hrs ago Polygon: HermezENS Name rektfeed.eth0.03 Ether
0x1d1a52b9d53eb3111ed4132f3c2da6b97d87d722bcbebd288353432784fc7355152407462022-07-30 0:58:57121 days 2 hrs ago Polygon: Hermez0x928efde423a8511bc6905abbd2ead6f1f05de0030.05977261 Ether
0xc82509cb2293c67e0e47d28293b79d256d8ca6f94dbda8c18782b9499737cb8a152201552022-07-26 20:11:31124 days 7 hrs ago Polygon: HermezENS Name westonnelson.eth0.01 Ether
0x68ef0679988fb5bd618bd101db5045c3973044de0580687921ade135d2bd692a151653232022-07-18 7:36:40132 days 20 hrs ago Polygon: HermezENS Name 3bonobochimp3.eth0.02981082 Ether
0x582dc318c4eddabd2910d132956677dedefd2e7878ec0ae491b3e0f3f9224e4e151598202022-07-17 11:10:01133 days 16 hrs ago Polygon: HermezENS Name nikanikanomi.eth0.069 Ether
0x56449129e1fe760657f99d87a7d50547c41ec4ae9ec2a571203371d4cab9c0c2150572102022-07-01 14:47:49149 days 13 hrs ago Polygon: HermezENS Name daibing.eth0.09961089 Ether
0xcc3a8e34c0b3ce6318e834fcd14f807fd40b53e29eed2122f581c80c7b56e857148652102022-05-29 7:31:20182 days 20 hrs ago Polygon: HermezENS Name ceycey.eth0.00993694 Ether
0x19f46b7a02d83070cd794edfc2ae6a74e0da21819710f4cd5e0bd12d5ae65fe8148329712022-05-24 1:35:58188 days 2 hrs ago Polygon: Hermez0x025bf0b26099c10b3f90f3a040703064faf84ac20.1 Ether
0x0a6e0f3bb89d0457e9ad6e845954b6e7667b32e2e79b5676c9e77bfd5a5452f4147494042022-05-10 15:37:42201 days 12 hrs ago Polygon: Hermez0xc31d1442fd3a27cb0e27a057ab74bf2579b958920.02988326 Ether
0xab3bb7a3e38b4f52d13dbe8cae2132e6b6bf48f284391c6cd9b52d68b9813ae5147222302022-05-06 7:30:13205 days 20 hrs ago Polygon: HermezENS Name mbaque.eth0.09818561 Ether
0xb70db73b2106e1da41c2ba19f12a29686d3c73271a6812ac4f4b6529fe79b1b8146608492022-04-26 15:13:28215 days 12 hrs ago Polygon: HermezENS Name godi.eth0.29963076 Ether
0xa834249205f7df91cc77d1fc7e5f14ffd8656a6437b60e36ece06a0095f43687144232322022-03-20 12:20:23252 days 15 hrs ago Polygon: Hermez0xb8fda6746e8739513546cce7c266c467f9b901b90.39967172 Ether
0x71b448490c67418d90a93cf32b62a5d443541b4523dc768c9826c00c751f65c8144132212022-03-18 22:57:51254 days 5 hrs ago Polygon: Hermez0x20ad7889d954c15b52deb993f1324e130d359d0f0.09987351 Ether
0xc1dc8ab6e0e2aeb5753f7d1edf5d174c91e9fcaa6259365c1ef5023de87d7e63144085712022-03-18 5:37:29254 days 22 hrs ago Polygon: Hermez0x77c1d273862b6aa39265debcaae35cd7f9ea1c870.03963408 Ether
0x1dac3496799e153cb714e294372105e1b90de7a4356e687ea9e260a4462bb340143713412022-03-12 10:12:01260 days 17 hrs ago Polygon: Hermez Polygon Hermez: Withdrawal0.05 Ether
0x640849bddef72acb29b62d4bd960e2560e5d51c6f249024f8a0252da781b00af143340372022-03-06 15:03:29266 days 12 hrs ago Polygon: HermezENS Name xenonx.eth0.04980544 Ether
0xcc084b88137e34871bafe6e1ae30ec91923393cba75768a6f2b972914f7f2dce143334762022-03-06 13:02:06266 days 14 hrs ago Polygon: HermezENS Name creddie.eth0.136539 Ether
0x569cda52c6a45ded33a6cb0db21e39498a234e3c12a89999b0e8e86e41904e92142964292022-02-28 19:04:35272 days 8 hrs ago Polygon: HermezENS Name vegasus.eth0.24599582 Ether
0x2ee96d92cf833f774eb3e6f59b2d7c1b9ac97ec7e12fa7d4aa7081f51ee57e7d141979542022-02-13 13:06:23287 days 14 hrs ago Polygon: HermezENS Name mechile.eth0.09987351 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.