Contract 0x0c84331e39d6658Cd6e6b9ba04736cC4c4734351 4

Aave 
 
Txn Hash Method
Index
From
To
Value
0x5175b9376a9330973ce2c0882a4f101d057502321593de7de832f129b7e9b3b5Approve Delegati...265788542022-09-30 21:47:3633 mins ago0xb62b35a44764a4e7d7caabc7c4d813717a2c724a IN  Aave: vWETH Token V30 Ether0.0000648654540.001
0x0d4bd5499f69391c6f0bcbc3dfc47ecdea4b1571d3541de3656106f7abcfa848Approve Delegati...265542662022-09-30 18:24:243 hrs 56 mins ago0xee7dacc6d818cc8fa7dd1da3cd9ac88be58a5dd7 IN  Aave: vWETH Token V30 Ether0.0000864504320.00105
0xbe9d0d27f4af7ce2755991d6bff0080c546dd10517a3da2fd4a9f16cd9fade9bApprove Delegati...265465532022-09-30 17:25:464 hrs 55 mins ago0x49072cd3bf4153da87d5eb30719bb32bda60884b IN  Aave: vWETH Token V30 Ether0.000081434870.001
0x0677774ab6e4667738db225f726579d3f328ba8f60350dedd9b73a1df6f7ae0bApprove Delegati...265414472022-09-30 16:46:155 hrs 34 mins ago0xc5ecad006f9f621a63b1fe8a44103b3a11e21fc6 IN  Aave: vWETH Token V30 Ether0.0001297275710.001
0x48ff8fadecbb0f7785c47140c1c53b2239241bec207c160bbcaf41220f4add17Approve Delegati...265412622022-09-30 16:44:415 hrs 36 mins ago0x2d23d30566a4fcbcc62da9ff063e53e7846a43d6 IN  Aave: vWETH Token V30 Ether0.0001288491720.001
0x2914a039e3ff19c3c4bacb316b1f845e705d779d24f52d7be2ee5579e8c1690fApprove Delegati...265403262022-09-30 16:37:545 hrs 42 mins ago0x10838a8b06cbfb856616b6e6ffaf291689f718b1 IN  Aave: vWETH Token V30 Ether0.0000936660790.001
0x93a9f4c1727f50e91a4b79b38120f17b876e41f5bbf50afc565411db90ca810eApprove Delegati...265248682022-09-30 15:16:027 hrs 4 mins ago0x3ea83c160880c8fe9b4f6dd788ea7aa84dd1698d IN  Aave: vWETH Token V30 Ether0.0000968531890.001
0xeea5c7f5709bbd5ad2ae61adf89ecfa9bc4a4ac383415bf4391cd23cc1660862Approve Delegati...265023562022-09-30 13:52:478 hrs 28 mins ago0xa819a27c5d2e7c07f7739fcf2b620ed6b597023f IN  Aave: vWETH Token V30 Ether0.0000599960650.001
0x3a8f9e412a1f8f60186a55e16f02b9c43e4ed05bcc612a3ed6c680597a17e208Approve Delegati...264772112022-09-30 12:22:279 hrs 58 mins ago0x7ca9212b3b9640dcbe866f86b8601e5beb666648 IN  Aave: vWETH Token V30 Ether0.0000554653580.00100155
0x235b8e55c8acac3c34bc4b10cb958a1ab4774d9afba423e85b3bb512ef03b975Approve Delegati...264741692022-09-30 12:06:0610 hrs 14 mins ago0x849a5d704a11ad207ffe2b480867d4728a807ca6 IN  Aave: vWETH Token V30 Ether0.0000766790130.00100155
0xeb30e735e58a5f0be4fdcd87ff570462ac8e583c4838bb0a144523b44a8c5627Approve Delegati...264640822022-09-30 11:10:0811 hrs 10 mins ago0xa90f10996354a48bf0e1512428b5f2d0932c479a IN  Aave: vWETH Token V30 Ether0.0000458551580.00100155
0x3a2c5b446ce63a44073132c8e8f24136730918bf077febc99c875a5b12a2aee9Approve Delegati...264636732022-09-30 11:07:5311 hrs 12 mins ago0xa85d48fb167743e1518ac8c6045678e1dcffe623 IN  Aave: vWETH Token V30 Ether0.00005108950.00100155
0x8dbff41d388783e98c9ff7de4847930db97293df2cd7cf3a10fe1e3547e6addbApprove Delegati...264508782022-09-30 10:04:3112 hrs 16 mins ago0x7eeb2f415c4cf5303bffc4e83dbbb23e5f45761b IN  Aave: vWETH Token V30 Ether0.0000405071850.00100155
0x7577a27259d1e6e2cc4452ed5d7e7a51beb7d2fd88430f8bfa23fe3e6f183e27Approve Delegati...264296822022-09-30 8:33:0713 hrs 47 mins ago0x0c4e3b38cb9db629eddbc13f8d7ffa2229c1d878 IN  Aave: vWETH Token V30 Ether0.000047973320.00100155
0xc0d51139d0674edc206bc51e8c63b66c4fe5762ba8e5af7ed6077568fc37dd66Approve Delegati...264185892022-09-30 7:43:3214 hrs 37 mins ago0x317c9e543649d51b84d3729a5f631917d9c1013e IN  Aave: vWETH Token V30 Ether0.0000398617930.00100155
0x72b3306afe10e05d12f9b963a1532b8dedf6306ee6c6cbf1c9c5068c35775a97Approve Delegati...263914142022-09-30 5:08:3217 hrs 12 mins ago0xc2bd60d1ff37c979a8fa9ebf8e5cacf0792045ac IN  Aave: vWETH Token V30 Ether0.0000428608740.00100155
0x684cbba7b87f6f221c6e5c38134c9e62219f28b96fd37d84754cdd74f6940984Approve Delegati...263893512022-09-30 4:53:5317 hrs 26 mins ago0x869ef15ade5a7024bda53a069bf49687ba272700 IN  Aave: vWETH Token V30 Ether0.0000454685770.00100155
0x39f1e302acbfb26de2f7e367296807db6f874e60401df57233f88c0202dde203Approve Delegati...263717182022-09-30 2:31:0119 hrs 49 mins ago0x556489651999f37447e6f00017f563c830ec8677 IN  Aave: vWETH Token V30 Ether0.0000454613460.00100155
0xdbed510e1985f04826b6783accb050f45c71c62a3e9bf2d67f4a386ac188fc31Approve Delegati...263522962022-09-30 0:07:3922 hrs 13 mins ago0x83d3f9a8175649ab3f0e3474b249b5b1a38ff2ac IN  Aave: vWETH Token V30 Ether0.0000529682620.00100155
0xd73c6cfa35247e5f7ec2571683d64e476e1372f92b2a95185c9a34691ec332a2Approve Delegati...263438072022-09-29 22:33:0923 hrs 47 mins ago0x48c72e231ab49349f1d4319b9bee373165bbff80 IN  Aave: vWETH Token V30 Ether0.0000364105070.00100155
0xfde33cf3dfec28a6d231c47759c2ed558d160aa55fea63230967e2daac4adfa7Approve Delegati...263417182022-09-29 22:11:081 day 9 mins ago0x543b556c1b16804d2a39f054f06df4cecf2f167e IN  Aave: vWETH Token V30 Ether0.0000553884890.00100155
0x460f6c3f3c28e651e1d29690b4cabc520563f48d705365d4d6488328b7195893Approve Delegati...263290862022-09-29 19:43:391 day 2 hrs ago0xf7089b28382f99bcb527093851cd75bb044a16be IN  Aave: vWETH Token V30 Ether0.0000685946710.00100155
0xedde50dcda165818fefbb0a540ed78bbd19949f28331948637acad946f84a7d6Approve Delegati...263064662022-09-29 16:44:451 day 5 hrs ago0xb5afbc981a5731f1f9020478398926128c6fb640 IN  Aave: vWETH Token V30 Ether0.000116221580.00100155
0x72f9e609935cc0f92fc762371ccda46000f7b3d3f497338bdfffb2078ef3c2fdApprove Delegati...262791902022-09-29 14:15:471 day 8 hrs ago0x772cd945de03253607c01d7743df3d20db3e2aa9 IN  Aave: vWETH Token V30 Ether0.0000837284080.00100155
0x3de7bb6452d24e2eef0190607662469fc2b3e8b4a0c2cbc184c6cb565fb7b8f1Approve Delegati...262672722022-09-29 13:41:431 day 8 hrs ago0x45d7795dd63c17a0fe72b567854eb8483ef33247 IN  Aave: vWETH Token V30 Ether0.0000692050620.00100155
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x12666aee6712d55ff11cb66f6110521f2bb14c2f525162499f97c48d236d3b69265831502022-09-30 22:20:2821 secs ago Aave: vWETH Token V3 0x81387c40eb75acb02757c1ae55d5936e78c9ded30 Ether
0x12666aee6712d55ff11cb66f6110521f2bb14c2f525162499f97c48d236d3b69265831502022-09-30 22:20:2821 secs ago Aave: Pool V3 Aave: vWETH Token V30 Ether
0x12666aee6712d55ff11cb66f6110521f2bb14c2f525162499f97c48d236d3b69265831502022-09-30 22:20:2821 secs ago Aave: vWETH Token V3 0x81387c40eb75acb02757c1ae55d5936e78c9ded30 Ether
0x12666aee6712d55ff11cb66f6110521f2bb14c2f525162499f97c48d236d3b69265831502022-09-30 22:20:2821 secs ago 0x75783716eab35f41b53112c77576bf4fc638a837 Aave: vWETH Token V30 Ether
0x12666aee6712d55ff11cb66f6110521f2bb14c2f525162499f97c48d236d3b69265831502022-09-30 22:20:2821 secs ago Aave: vWETH Token V3 0x81387c40eb75acb02757c1ae55d5936e78c9ded30 Ether
0x12666aee6712d55ff11cb66f6110521f2bb14c2f525162499f97c48d236d3b69265831502022-09-30 22:20:2821 secs ago 0x75783716eab35f41b53112c77576bf4fc638a837 Aave: vWETH Token V30 Ether
0x33b54fb9f78497769dd7c806f93e0ceadc6432eb9cd314cf4ac179a8404743eb265830262022-09-30 22:18:551 min ago Aave: vWETH Token V3 0x81387c40eb75acb02757c1ae55d5936e78c9ded30 Ether
0x33b54fb9f78497769dd7c806f93e0ceadc6432eb9cd314cf4ac179a8404743eb265830262022-09-30 22:18:551 min ago Aave: Pool V3 Aave: vWETH Token V30 Ether
0x7c8496f17d58a577eb23c00494733b1951394bf1af38af88db2b510d97e081a2265830182022-09-30 22:18:551 min ago Aave: vWETH Token V3 0x81387c40eb75acb02757c1ae55d5936e78c9ded30 Ether
0x7c8496f17d58a577eb23c00494733b1951394bf1af38af88db2b510d97e081a2265830182022-09-30 22:18:551 min ago Aave: Pool V3 Aave: vWETH Token V30 Ether
0xd9079ba9e7527e2d6ee58d41545233afd0721e760fb7a0fd93a700d4a2034cf8265829032022-09-30 22:17:253 mins ago Aave: vWETH Token V3 0x81387c40eb75acb02757c1ae55d5936e78c9ded30 Ether
0xd9079ba9e7527e2d6ee58d41545233afd0721e760fb7a0fd93a700d4a2034cf8265829032022-09-30 22:17:253 mins ago Aave: Pool V3 Aave: vWETH Token V30 Ether
0x5ecdaeb7066308ca7f590c3e60096ba0f8e6c38a0e37139551df6122f0e7fce8265827552022-09-30 22:15:534 mins ago Aave: vWETH Token V3 0x81387c40eb75acb02757c1ae55d5936e78c9ded30 Ether
0x5ecdaeb7066308ca7f590c3e60096ba0f8e6c38a0e37139551df6122f0e7fce8265827552022-09-30 22:15:534 mins ago Aave: Incentives V3 Aave: vWETH Token V30 Ether
0xcb5c072fa81e879a2711efe966fb732815fece96dbc9ff16739f468eea890294265822322022-09-30 22:11:518 mins ago Aave: vWETH Token V3 0x81387c40eb75acb02757c1ae55d5936e78c9ded30 Ether
0xcb5c072fa81e879a2711efe966fb732815fece96dbc9ff16739f468eea890294265822322022-09-30 22:11:518 mins ago Aave: Pool Data Provider V3 Aave: vWETH Token V30 Ether
0xcb5c072fa81e879a2711efe966fb732815fece96dbc9ff16739f468eea890294265822322022-09-30 22:11:518 mins ago Aave: vWETH Token V3 0x81387c40eb75acb02757c1ae55d5936e78c9ded30 Ether
0xcb5c072fa81e879a2711efe966fb732815fece96dbc9ff16739f468eea890294265822322022-09-30 22:11:518 mins ago Aave: Pool Data Provider V3 Aave: vWETH Token V30 Ether
0xcb5c072fa81e879a2711efe966fb732815fece96dbc9ff16739f468eea890294265822322022-09-30 22:11:518 mins ago Aave: vWETH Token V3 0x81387c40eb75acb02757c1ae55d5936e78c9ded30 Ether
0xcb5c072fa81e879a2711efe966fb732815fece96dbc9ff16739f468eea890294265822322022-09-30 22:11:518 mins ago Aave: Pool Data Provider V3 Aave: vWETH Token V30 Ether
0xcb5c072fa81e879a2711efe966fb732815fece96dbc9ff16739f468eea890294265822322022-09-30 22:11:518 mins ago Aave: vWETH Token V3 0x81387c40eb75acb02757c1ae55d5936e78c9ded30 Ether
0xcb5c072fa81e879a2711efe966fb732815fece96dbc9ff16739f468eea890294265822322022-09-30 22:11:518 mins ago Aave: Pool Data Provider V3 Aave: vWETH Token V30 Ether
0xcb5c072fa81e879a2711efe966fb732815fece96dbc9ff16739f468eea890294265822322022-09-30 22:11:518 mins ago Aave: vWETH Token V3 0x81387c40eb75acb02757c1ae55d5936e78c9ded30 Ether
0xcb5c072fa81e879a2711efe966fb732815fece96dbc9ff16739f468eea890294265822322022-09-30 22:11:518 mins ago Aave: Pool Data Provider V3 Aave: vWETH Token V30 Ether
0xcb5c072fa81e879a2711efe966fb732815fece96dbc9ff16739f468eea890294265822322022-09-30 22:11:518 mins ago Aave: vWETH Token V3 0x81387c40eb75acb02757c1ae55d5936e78c9ded30 Ether
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xf329e36C7bF6E5E86ce2150875a84Ce77f477375

Contract Name:
InitializableImmutableAdminUpgradeabilityProxy

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 100000 runs

Other Settings:
default evmVersion
File 1 of 6 : InitializableImmutableAdminUpgradeabilityProxy.sol
// SPDX-License-Identifier: AGPL-3.0
pragma solidity 0.8.10;

import {InitializableUpgradeabilityProxy} from '../../../dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol';
import {Proxy} from '../../../dependencies/openzeppelin/upgradeability/Proxy.sol';
import {BaseImmutableAdminUpgradeabilityProxy} from './BaseImmutableAdminUpgradeabilityProxy.sol';

/**
 * @title InitializableAdminUpgradeabilityProxy
 * @author Aave
 * @dev Extends BaseAdminUpgradeabilityProxy with an initializer function
 */
contract InitializableImmutableAdminUpgradeabilityProxy is
  BaseImmutableAdminUpgradeabilityProxy,
  InitializableUpgradeabilityProxy
{
  /**
   * @dev Constructor.
   * @param admin The address of the admin
   */
  constructor(address admin) BaseImmutableAdminUpgradeabilityProxy(admin) {
    // Intentionally left blank
  }

  /// @inheritdoc BaseImmutableAdminUpgradeabilityProxy
  function _willFallback() internal override(BaseImmutableAdminUpgradeabilityProxy, Proxy) {
    BaseImmutableAdminUpgradeabilityProxy._willFallback();
  }
}

File 2 of 6 : InitializableUpgradeabilityProxy.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.10;

import './BaseUpgradeabilityProxy.sol';

/**
 * @title InitializableUpgradeabilityProxy
 * @dev Extends BaseUpgradeabilityProxy with an initializer for initializing
 * implementation and init data.
 */
contract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy {
  /**
   * @dev Contract initializer.
   * @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.
   */
  function initialize(address _logic, bytes memory _data) public payable {
    require(_implementation() == address(0));
    assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1));
    _setImplementation(_logic);
    if (_data.length > 0) {
      (bool success, ) = _logic.delegatecall(_data);
      require(success);
    }
  }
}

File 3 of 6 : Proxy.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.10;

/**
 * @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.
   * Will run if no other function in the contract matches the call data.
   * Implemented entirely in `_fallback`.
   */
  fallback() external payable {
    _fallback();
  }

  /**
   * @return The Address of the implementation.
   */
  function _implementation() internal view virtual 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 {
    //solium-disable-next-line
    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 6 : BaseImmutableAdminUpgradeabilityProxy.sol
// SPDX-License-Identifier: AGPL-3.0
pragma solidity 0.8.10;

import {BaseUpgradeabilityProxy} from '../../../dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol';

/**
 * @title BaseImmutableAdminUpgradeabilityProxy
 * @author Aave, inspired by the OpenZeppelin upgradeability proxy pattern
 * @notice This contract combines an upgradeability proxy with an authorization
 * mechanism for administrative tasks.
 * @dev The admin role is stored in an immutable, which helps saving transactions costs
 * 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 BaseImmutableAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {
  address internal immutable _admin;

  /**
   * @dev Constructor.
   * @param admin The address of the admin
   */
  constructor(address admin) {
    _admin = admin;
  }

  modifier ifAdmin() {
    if (msg.sender == _admin) {
      _;
    } else {
      _fallback();
    }
  }

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

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

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

  /**
   * @notice Upgrade the backing implementation of the proxy and call a function
   * on the new implementation.
   * @dev This is useful to initialize the proxied contract.
   * @param newImplementation The 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)
    external
    payable
    ifAdmin
  {
    _upgradeTo(newImplementation);
    (bool success, ) = newImplementation.delegatecall(data);
    require(success);
  }

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

File 5 of 6 : BaseUpgradeabilityProxy.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.10;

import './Proxy.sol';
import '../contracts/Address.sol';

/**
 * @title BaseUpgradeabilityProxy
 * @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 BaseUpgradeabilityProxy is Proxy {
  /**
   * @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 view override returns (address impl) {
    bytes32 slot = IMPLEMENTATION_SLOT;
    //solium-disable-next-line
    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;

    //solium-disable-next-line
    assembly {
      sstore(slot, newImplementation)
    }
  }
}

File 6 of 6 : Address.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.10;

/**
 * @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) {
    // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
    // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
    // for accounts without code, i.e. `keccak256('')`
    bytes32 codehash;
    bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
    // solhint-disable-next-line no-inline-assembly
    assembly {
      codehash := extcodehash(account)
    }
    return (codehash != accountHash && codehash != 0x0);
  }

  /**
   * @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');
  }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 100000
  },
  "evmVersion": "berlin",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"initialize","outputs":[],"stateMutability":"payable","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"}]

60a060405234801561001057600080fd5b50604051610a0e380380610a0e83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516109606100ae6000396000818161014f015281816101a101528181610274015281816104110152818161043a01526105ab01526109606000f3fe60806040526004361061005a5760003560e01c80635c60da1b116100435780635c60da1b14610097578063d1f57894146100d5578063f851a440146100e85761005a565b80633659cfe6146100645780634f1ef28614610084575b6100626100fd565b005b34801561007057600080fd5b5061006261007f3660046106be565b610137565b6100626100923660046106e0565b610189565b3480156100a357600080fd5b506100ac61025a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100626100e3366004610792565b6102cb565b3480156100f457600080fd5b506100ac6103f7565b61010561045c565b6101356101307f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b610464565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101815761017e81610488565b50565b61017e6100fd565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561024d576101d083610488565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516101f9929190610872565b600060405180830381855af49150503d8060008114610234576040519150601f19603f3d011682016040523d82523d6000602084013e610239565b606091505b505090508061024757600080fd5b50505050565b6102556100fd565b505050565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156102c057507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6102c86100fd565b90565b60006102f57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b73ffffffffffffffffffffffffffffffffffffffff161461031557600080fd5b61034060017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd610882565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc1461036e5761036e6108c0565b610377826104d5565b8051156103f35760008273ffffffffffffffffffffffffffffffffffffffff16826040516103a591906108ef565b600060405180830381855af49150503d80600081146103e0576040519150601f19603f3d011682016040523d82523d6000602084013e6103e5565b606091505b505090508061025557600080fd5b5050565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156102c057507f000000000000000000000000000000000000000000000000000000000000000090565b610135610593565b3660008037600080366000845af43d6000803e808015610483573d6000f35b3d6000fd5b610491816104d5565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6104de81610659565b61056f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000060648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260448201527f6f6d207468652070726f78792061646d696e00000000000000000000000000006064820152608401610566565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061068d57508115155b949350505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146106b957600080fd5b919050565b6000602082840312156106d057600080fd5b6106d982610695565b9392505050565b6000806000604084860312156106f557600080fd5b6106fe84610695565b9250602084013567ffffffffffffffff8082111561071b57600080fd5b818601915086601f83011261072f57600080fd5b81358181111561073e57600080fd5b87602082850101111561075057600080fd5b6020830194508093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156107a557600080fd5b6107ae83610695565b9150602083013567ffffffffffffffff808211156107cb57600080fd5b818501915085601f8301126107df57600080fd5b8135818111156107f1576107f1610763565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561083757610837610763565b8160405282815288602084870101111561085057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b8183823760009101908152919050565b6000828210156108bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000825160005b8181101561091057602081860181015185830152016108f6565b8181111561091f576000828501525b50919091019291505056fea26469706673582212207698a80201d2f92a3290973c99527c6e810eaf731191e18abe2c96acab47dca764736f6c634300080a00330000000000000000000000008145edddf43f50276641b55bd3ad95944510021e

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.