Contract 0xFCCf3cAbbe80101232d343252614b6A3eE81C989 15

Aave 
 
Txn Hash Method
Block
From
To
Value
0x4928abc1288d1b507a326f0e672657d2148e5e67b86cb1eb339f30e7b3d6fd6dApprove Delegati...1095580832023-09-14 18:09:0313 days 20 hrs ago0x3b71f9ee530a17cfb5624a423e5cabbb23bf65d5 IN  Aave: vUSDC Token V30 ETH0.0000499941420.007801232
0x06bf80be74d7dc16df420ec4b5997ea81f153cc646a267654b910a7cb650714dApprove Delegati...1094588452023-09-12 11:01:0716 days 4 hrs ago0xd3b60a9c344955059bcd02a76e3f590646f137f8 IN  Aave: vUSDC Token V30 ETH0.000021091140.003315768
0x7a6c698acf859f5009da9327e7071afc4b137c8e0b0ae666f954e120df58cacbApprove Delegati...1094264542023-09-11 17:01:2516 days 22 hrs ago0xdac7a91516112703448b5d1fbc8b679fce838e8a IN  Aave: vUSDC Token V30 ETH0.0000486134820.083316763
0xe0a2a3870a4c38c792b2935683142f908f7ebf79d16bb9d18355ebd1ad747ffaApprove Delegati...1093709392023-09-10 10:10:5518 days 4 hrs ago0x5efe0c04af29122da0e7579d6493a61ae6b35c48 IN  Aave: vUSDC Token V30 ETH0.0000135783350.00000006
0x93369124ae9aff52b0f5f42d4cd3b7a6ae937fcceb515823c5676c2c4e7a07e0Approve Delegati...1093686612023-09-10 8:54:5918 days 6 hrs ago0x5efe0c04af29122da0e7579d6493a61ae6b35c48 IN  Aave: vUSDC Token V30 ETH0.0000164979380.000000092
0x436f9c3ba588c54b5e89b2929b83bad488f9dd92e98677311bc493ed059bddebApprove Delegati...1091963582023-09-06 9:11:3322 days 5 hrs ago0x191dc09def85abf9ab4f9f76d802708229bb2ccc IN  Aave: vUSDC Token V30 ETH0.0000193012210.002724346
0xa43ce9c9916f97ee039d521a3d22ecdd69f6c3d03b0f8e2cf28b0d67276003d7Approve Delegati...1090976062023-09-04 2:19:4924 days 12 hrs ago0xd5b0c0043a88bdb79491aa6ffef8cec5ccb209c2 IN  Aave: vUSDC Token V30 ETH0.0000235837570.100000057
0x98eee2991420cf67131ae60e662406497d79a11df945e3e4b023414e794ea6fbApprove Delegati...1090782232023-09-03 15:33:4324 days 23 hrs ago0xd5b0c0043a88bdb79491aa6ffef8cec5ccb209c2 IN  Aave: vUSDC Token V30 ETH0.0000474530970.100000054
0x92d0e3530c18057cc7fca3226e50715e08543c89ae6d93f4139bf86b323ee1b5Approve Delegati...1089929042023-09-01 16:09:4526 days 22 hrs ago0x1779cb1d32daaeddd22fd369f03b4ee27ce64138 IN  Aave: vUSDC Token V30 ETH0.0000661038390.000833051
0xde6826d6fc8db09a59f462fca35820e9577c12275afc419bffa41ae2fa15da92Approve Delegati...1083771442023-08-18 10:04:2541 days 5 hrs ago0xd3b60a9c344955059bcd02a76e3f590646f137f8 IN  Aave: vUSDC Token V30 ETH0.0000332529490.00035561
0xed2f9d4c5256a6a16d124d6543ae15c54ef8dfe8b0fcf56574c43d46bd70c99eApprove Delegati...1080685872023-08-11 6:39:1148 days 8 hrs ago0x6887b5852847dd89d4c86dfaefab5b0b236dcd8a IN  Aave: vUSDC Token V30 ETH0.0000247041930.0000001
0x35318b711ccb65e189fddbb47df54251d2cad7369000cde61116050c0f0f3c2aApprove Delegati...1079195672023-08-07 19:51:5151 days 19 hrs ago0xd5b0c0043a88bdb79491aa6ffef8cec5ccb209c2 IN  Aave: vUSDC Token V30 ETH0.0000482790980.261979457
0x1c8a30639b1b37c8e84a08f519d40f763653a7c6f6f004fa626abb1a94c3d70cApprove Delegati...1079195632023-08-07 19:51:4351 days 19 hrs ago0xd5b0c0043a88bdb79491aa6ffef8cec5ccb209c2 IN  Aave: vUSDC Token V30 ETH0.0000531408710.251927234
0x6523bfc4fdf137bd2719a64f76ef82cb0efe7635f046d2c32fa4defcd05d0958Approve Delegati...1079191292023-08-07 19:37:1551 days 19 hrs ago0xd5b0c0043a88bdb79491aa6ffef8cec5ccb209c2 IN  Aave: vUSDC Token V30 ETH0.0000563210130.260290462
0xfa0b53856cf7c41157f0ba5bb909ce8753c87f59b15d62da71510366266ba886Approve Delegati...1079012252023-08-07 9:40:2752 days 5 hrs ago0x191dc09def85abf9ab4f9f76d802708229bb2ccc IN  Aave: vUSDC Token V30 ETH0.0000311648570.110567769
0xae1f6ec8e51183897bf779cae691a88865fbd4b3e284279057019f610d0be1e1Approve Delegati...1079011612023-08-07 9:38:1952 days 5 hrs ago0x191dc09def85abf9ab4f9f76d802708229bb2ccc IN  Aave: vUSDC Token V30 ETH0.0000317366560.106657851
0xf23ac7767e1d13f390b9d5df01dc60ece20a1803b90289960c76a3bd5f6c5f6cApprove Delegati...1078690832023-08-06 15:49:0352 days 23 hrs ago0x1f8a579a3e16cfe04197b6fdbd3be2af82631645 IN  Aave: vUSDC Token V30 ETH0.0000284213230.00213471
0xe234d443ebc19ec231336e42cc5bb0d22e72d902e5a3ce772b43335bfe191ae4Approve Delegati...1074487142023-07-27 22:16:4562 days 16 hrs ago0xf1cdc627d9daee9b65df14d787d83a7f61e93674 IN  Aave: vUSDC Token V30 ETH0.0000594743950.025378195
0x03087345c712a81eae01cfe79ec722010d25dbb8551cd10de2f075539b431a12Approve Delegati...1074484672023-07-27 22:08:3162 days 16 hrs ago0xf1cdc627d9daee9b65df14d787d83a7f61e93674 IN  Aave: vUSDC Token V30 ETH0.0000441514270.020876015
0x2f2714a8ffeccb3e87306ffb699bc0d8b34d0349ce2e809d2eb69d99b353e04dApprove Delegati...1074047802023-07-26 21:52:1763 days 17 hrs ago 0x9e5a57470a2a136a3d4de39e1996e05944c4b1fb IN  Aave: vUSDC Token V30 ETH0.0000539862370.033481297
0x9e0c3a2e3f9b8ce6b37aef7fc4d450a9e8917307a7643c931c140600651255d2Approve Delegati...1072933292023-07-24 7:57:1566 days 7 hrs ago0x3d7e6c43ddb54aba13487f2f1c02ff2d3733104b IN  Aave: vUSDC Token V30 ETH0.0000378871040.000007613
0x65e57f4fe7de77a8995b0b36c872506ba7ca14b3226861bf89de0a7c93e58c62Approve Delegati...1069982322023-07-17 12:00:4173 days 3 hrs ago0xc2153f616534660001701cf08e4fd92dc119b7ae IN  Aave: vUSDC Token V30 ETH0.0000428190920.188366049
0xfd549946f4f8fe28f093ed88840751438b9c5ce732f768ea38ff9f0d40123bb9Approve Delegati...1068428152023-07-13 21:40:0776 days 17 hrs ago0x0f037d2660d62c17777ef37e9a9d68ceb0fd1efc IN  Aave: vUSDC Token V30 ETH0.0000688276260.000002169
0x6511f86c9835e2b14d0ff0b505df8a3ce107ae0c4208d1066ffd1224a9c24e03Approve Delegati...1062303142023-06-29 17:23:2590 days 21 hrs ago0xdaab06a2611095939d61300030701908af24590b IN  Aave: vUSDC Token V30 ETH0.0000996696160.000000142
0xf78d424d2db31c2486a0f352a0072aa8ea68eac873bdbea27e84dc33edc7ec99Approve Delegati...1059873222023-06-24 2:23:4196 days 12 hrs ago0x0f037d2660d62c17777ef37e9a9d68ceb0fd1efc IN  Aave: vUSDC Token V30 ETH0.0000226449780.000000071
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xa4614e26b4c399b2f39e7f8f75fa363600e259d81521188047821dc701bd3e081075583842023-07-30 11:12:2560 days 3 hrs ago Aave: vUSDC Token V3 Aave: Pool V30 ETH
0xa4614e26b4c399b2f39e7f8f75fa363600e259d81521188047821dc701bd3e081075583842023-07-30 11:12:2560 days 3 hrs ago Aave: vUSDC Token V3 0x04a8d477ee202adce1682f5902e1160455205b120 ETH
0xa4614e26b4c399b2f39e7f8f75fa363600e259d81521188047821dc701bd3e081075583842023-07-30 11:12:2560 days 3 hrs ago Aave: Pool V3 Aave: vUSDC Token V30 ETH
0xa4614e26b4c399b2f39e7f8f75fa363600e259d81521188047821dc701bd3e081075583842023-07-30 11:12:2560 days 3 hrs ago Aave: vUSDC Token V3 0x04a8d477ee202adce1682f5902e1160455205b120 ETH
0xa4614e26b4c399b2f39e7f8f75fa363600e259d81521188047821dc701bd3e081075583842023-07-30 11:12:2560 days 3 hrs ago Aave: Pool V3 Aave: vUSDC Token V30 ETH
0xa4614e26b4c399b2f39e7f8f75fa363600e259d81521188047821dc701bd3e081075583842023-07-30 11:12:2560 days 3 hrs ago Aave: vUSDC Token V3 0x04a8d477ee202adce1682f5902e1160455205b120 ETH
0xa4614e26b4c399b2f39e7f8f75fa363600e259d81521188047821dc701bd3e081075583842023-07-30 11:12:2560 days 3 hrs ago Aave: Pool V3 Aave: vUSDC Token V30 ETH
0xa4614e26b4c399b2f39e7f8f75fa363600e259d81521188047821dc701bd3e081075583842023-07-30 11:12:2560 days 3 hrs ago Aave: vUSDC Token V3 Aave: Pool V30 ETH
0xa4614e26b4c399b2f39e7f8f75fa363600e259d81521188047821dc701bd3e081075583842023-07-30 11:12:2560 days 3 hrs ago Aave: vUSDC Token V3 0x04a8d477ee202adce1682f5902e1160455205b120 ETH
0xa4614e26b4c399b2f39e7f8f75fa363600e259d81521188047821dc701bd3e081075583842023-07-30 11:12:2560 days 3 hrs ago 0x9999b50bb6fc4ac42ddc5f10518e406549ebc3a0 Aave: vUSDC Token V30 ETH
0x4bc0ef728040415b9127eb5a49e3aef5a533e00d5cf908871ca521720635b8e61075583372023-07-30 11:10:5160 days 3 hrs ago Aave: vUSDC Token V3 0x04a8d477ee202adce1682f5902e1160455205b120 ETH
0x4bc0ef728040415b9127eb5a49e3aef5a533e00d5cf908871ca521720635b8e61075583372023-07-30 11:10:5160 days 3 hrs ago Aave: Pool V3 Aave: vUSDC Token V30 ETH
0xee6cccc546e254743f67bcfbd467a25b84a65c6310c5601a9f3277a00e5b39881075583022023-07-30 11:09:4160 days 3 hrs ago Aave: vUSDC Token V3 0x04a8d477ee202adce1682f5902e1160455205b120 ETH
0xee6cccc546e254743f67bcfbd467a25b84a65c6310c5601a9f3277a00e5b39881075583022023-07-30 11:09:4160 days 3 hrs ago Aave: Pool V3 Aave: vUSDC Token V30 ETH
0x2c731bae13f48b01f6e647ccceb061a42705d8a3de5cb0d2c2a8b3929e4245c51075583012023-07-30 11:09:3960 days 3 hrs ago Aave: vUSDC Token V3 0x04a8d477ee202adce1682f5902e1160455205b120 ETH
0x2c731bae13f48b01f6e647ccceb061a42705d8a3de5cb0d2c2a8b3929e4245c51075583012023-07-30 11:09:3960 days 3 hrs ago Aave: Pool V3 Aave: vUSDC Token V30 ETH
0x678705b1cce861265fb7581b8008b0a7f825ed98817d4efc9da6fc498fbd6ca91075583002023-07-30 11:09:3760 days 3 hrs ago Aave: vUSDC Token V3 0x04a8d477ee202adce1682f5902e1160455205b120 ETH
0x678705b1cce861265fb7581b8008b0a7f825ed98817d4efc9da6fc498fbd6ca91075583002023-07-30 11:09:3760 days 3 hrs ago Aave: Pool V3 Aave: vUSDC Token V30 ETH
0x9c34b4525d372ad3177d50ed53e82ec8ad89c9b973ff24af128c7d06ed8a00971075582622023-07-30 11:08:2160 days 3 hrs ago Aave: vUSDC Token V3 0x04a8d477ee202adce1682f5902e1160455205b120 ETH
0x9c34b4525d372ad3177d50ed53e82ec8ad89c9b973ff24af128c7d06ed8a00971075582622023-07-30 11:08:2160 days 3 hrs ago Aave: Pool V3 Aave: vUSDC Token V30 ETH
0x46ba0dc7f8afc3c2a37da0ef3f0392a6d4e040125f5b2cfa88bb76a81aabe9d31075582372023-07-30 11:07:3160 days 4 hrs ago Aave: vUSDC Token V3 0x04a8d477ee202adce1682f5902e1160455205b120 ETH
0x46ba0dc7f8afc3c2a37da0ef3f0392a6d4e040125f5b2cfa88bb76a81aabe9d31075582372023-07-30 11:07:3160 days 4 hrs ago Aave: Pool V3 Aave: vUSDC Token V30 ETH
0x35ffe6e05017f7b2748ef4e2abd62ab84d8ff6d2161f577163ebf10f4396fc781075582332023-07-30 11:07:2360 days 4 hrs ago Aave: vUSDC Token V3 0x04a8d477ee202adce1682f5902e1160455205b120 ETH
0x35ffe6e05017f7b2748ef4e2abd62ab84d8ff6d2161f577163ebf10f4396fc781075582332023-07-30 11:07:2360 days 4 hrs ago Aave: Pool V3 Aave: vUSDC Token V30 ETH
0xb063d1d24860dcb460499ddc9a5592d962b8c0a7282564c3ac01ec49919c9fd91075582292023-07-30 11:07:1560 days 4 hrs ago Aave: vUSDC Token V3 0x04a8d477ee202adce1682f5902e1160455205b120 ETH
[ Download CSV Export 
Loading

Similar Match Source Code
This contract matches the deployed ByteCode of the Source Code for Contract 0xf329e36C7bF6E5E86ce2150875a84Ce77f477375
The constructor portion of the code might be different and could alter the actual behaviour of the contract

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.