Contract 0x25751853Eab4D0eB3652B5eB6ecB102A2789644B 1

 
 
Txn Hash
Method
Block
From
To
Value
0xa93a554d0a6d093c23c2f9c0baef216726804774a8fb80d868370a35a66a409cDeposit ETH(pending)2022-08-07 2:45:054 days 9 hrs ago0x01cbff92a39ce8d994771dfdb4f148782084170b IN Ribbon Finance: ETH Covered Call V20.‍238708 Ether(Pending)(Pending)
0x639605f36aefeae8140b6497ef8c4f328d97179a06605ba1e53c281bd437e359Initiate Withdra...153205772022-08-11 12:01:2337 mins ago0x8938578db6e00bfd3efd52ef43792317650082d3 IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00200738 25.‍74990344
0xbd1e44689643487ce30f365803d67152bc104ae42faf836a8170f0d6c61ac2adInitiate Withdra...153200402022-08-11 10:00:032 hrs 38 mins ago0xcfff83681b41f78bf128c541854ae5d13b714524 IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00136761 12.‍56845945
0x1122567b2cdf6144470335172f5c72761c8bc5838d8c092b99002ed2143f0d10Deposit ETH153197952022-08-11 8:59:093 hrs 39 mins ago0xc9bdaad4ea8d41c5a0bea3c2460fa15386da806f IN  Ribbon Finance: ETH Covered Call V20.‍06030292 Ether0.‍00213937 23.‍23915135
0xbc6e611445ab98a4fa911947ee665689271cc7ccd376ac76e801aeb2363b9635Initiate Withdra...153196202022-08-11 8:21:144 hrs 17 mins ago0x02758585b626c64c4c722a306355308db7d812fc IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00146214 13.‍43578277
0x4279f834f27a851ea35f7d07f1b769fcc4a7a4c64dd1609e4ce5e7e4e038589bInitiate Withdra...153196182022-08-11 8:20:504 hrs 17 mins ago0x5148a33058c39ed8b6b2e4732730ad1ca3e189eb IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00087723 14.‍4146373
0x2fc8e272c31da961a9a03008cd5c5795ae93a41d08c3dc91010e67effcf4ca48Pause Position153195142022-08-11 7:50:464 hrs 47 mins ago0x70b1bcb7244fedcaea2c36dc939da3a6f86af793 IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍002225 14.‍69345769
0xb76cec1164dcaafbdfbd70c3abd2495336397a2829ffe64042bc32ffa39916d2Pause Position153189352022-08-11 5:42:296 hrs 56 mins ago0x75c83ed3e2fe5e8993baf72ed51157f9a4f30b5e IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00260708 17.‍19918541
0x33b64f964c97d2590a5518f926a6c819e8f261efa969838c3753b79815890893Initiate Withdra...153186722022-08-11 4:44:347 hrs 53 mins ago0x8437a6d1bfecd8710405169fa03194b3d1248f43 IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00116059 14.‍88768672
0x3ae14283c02d052e0d773caaa1e23e83abd6cc8ea3cad53a92679927454625baInitiate Withdra...153184262022-08-11 3:48:088 hrs 50 mins agoENS Name vault.tomhadley.eth IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00285189 26.‍20628879
0x208666ddcfe616593cd79a13d304e8b7ba72d46806d0932ca349665de82212ddDeposit ETH153176482022-08-11 0:50:2811 hrs 48 mins ago0x09a02ad6f6fe7ce0827a59d040a15f4e526b6b52 IN  Ribbon Finance: ETH Covered Call V20.‍01409858 Ether0.‍00134173 17.‍70495512
0x0c19ce2c268a17d40a9c0436613b446068db18957759fcf1404d50e3c6844ed9Deposit ETH153174242022-08-10 23:59:2712 hrs 39 mins ago0x4327cef602ba333e90d4842f0cbd17b46897f074 IN  Ribbon Finance: ETH Covered Call V20.‍05 Ether0.‍00242641 26.‍35719813
0x5792ba6658f58de884f7cbf490b3cca2dccb97b5a88c3fbef61d080a80c40747Initiate Withdra...153172872022-08-10 23:25:4013 hrs 12 mins agoENS Name metalinkdao.eth IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00214693 27.‍5400388
0xa02e37f16f0e23ecf8dee1000238c8a7993257b6205bdee3594cbaf234118f15Initiate Withdra...153168432022-08-10 21:48:4214 hrs 49 mins agoENS Name rauchp.eth IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00174946 28.‍74706895
0x65faa6a04cffb78e10a67aad0c17c1078829bd2039afaa29dac15295a31f1107Stake153165502022-08-10 20:44:3715 hrs 53 mins ago0x997e9733bb6f11ded7bf5d471fa0033adae4d1d5 IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00669206 20.‍56262218
0x1b10b8e7551898c2294724e05ce03d2d7eca5ddad56559a605b9619aaad669eeInitiate Withdra...153143672022-08-10 12:37:261 day 1 min ago0xd3fd32e76a1ca37ec408aac47776b10fc099f841 IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍0034881 44.‍74389741
0x9f08a29473709c2f452a87bfd633e4445e8bdf2dc55252fbe23119d26d2dad0fInitiate Withdra...153138672022-08-10 10:43:311 day 1 hr agoENS Name saeednazem.eth IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00124537 11.‍4450837
0xe6dca64ea0b5b13db658673f309cc6917c22a8b05809a731c3d255263fb84085Deposit ETH153138422022-08-10 10:35:431 day 2 hrs ago0xaebd238edaf2469c5b5ff7a87aac452054f571a8 IN  Ribbon Finance: ETH Covered Call V20.‍06824313 Ether0.‍00078216 8.‍49635799
0xdc04661de9dd16dbac466ba30a5933885857ed9e21297bd1080fd35d35dedc7dInitiate Withdra...153102792022-08-09 21:03:241 day 15 hrs agoENS Name ethtrillionaire.eth IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00181718 19.‍81120376
0xe0392f301e9bec77098b8fc2e3aaaedf173a1d383f09f959758d3e436c3f2086Deposit ETH153096452022-08-09 18:50:331 day 17 hrs ago0x63526a013bf056af0d4084973b1bf8691639ed25 IN  Ribbon Finance: ETH Covered Call V20.‍7 Ether0.‍00173316 18.‍82670583
0x9a4f757c8ad0b6f18f379af3b4d3a8f6ecca0940adb77d6b5c03b016ec67ad41Deposit ETH153077272022-08-09 11:30:162 days 1 hr ago0x77da3b64683567937f4636cf98c50d7e99b44242 IN  Ribbon Finance: ETH Covered Call V20.‍00301607 Ether0.‍00085133 11.‍33041028
0x4929c74cf2aa8a735570a1b39e411472c80f263e686c561e7c3c8aff70c2d273Initiate Withdra...153064392022-08-09 6:34:062 days 6 hrs agoENS Name hamfish.eth IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00062227 7.‍98226148
0xf8077be866cebc0e55da4125ca6c5d61f3a113368159ddd236198279c6af625eInitiate Withdra...153054492022-08-09 2:52:332 days 9 hrs ago0xa0e04247d39ebc07f38acca38dc10e14fa8d6c98 IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00087927 9.‍58471644
0xa6306ff04a6f6fccdcae4e01dee237d9e772e2e5d1330fa5860879fa4ad6e496Deposit ETH153052912022-08-09 2:18:222 days 10 hrs agoENS Name plnr.eth IN  Ribbon Finance: ETH Covered Call V21 Ether0.‍00183151 24.‍16794838
0x29a8723e91f2c2ee98e3ed9f1e67ee903646a02558600e664528b9a04499369aInitiate Withdra...153036242022-08-08 20:09:432 days 16 hrs ago0x8cd8c654904c04b6f8da384ea2259b774164319a IN  Ribbon Finance: ETH Covered Call V20 Ether0.‍00232264 33.‍64355052
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x1122567b2cdf6144470335172f5c72761c8bc5838d8c092b99002ed2143f0d10153197952022-08-11 8:59:093 hrs 39 mins ago Ribbon Finance: ETH Covered Call V2 Wrapped Ether0.‍06030292 Ether
0x5649a4c50532c3ca44f418af63254449c576c2103bfa6227e06252fa96a4f4fd153185632022-08-11 4:20:008 hrs 18 mins ago Ribbon Finance: ETH Covered Call V2 0xe04e8ae290965ad4f7e40c68041c493d2e89cdc31.‍7739153 Ether
0x5649a4c50532c3ca44f418af63254449c576c2103bfa6227e06252fa96a4f4fd153185632022-08-11 4:20:008 hrs 18 mins ago Wrapped Ether Ribbon Finance: ETH Covered Call V21.‍7739153 Ether
0x208666ddcfe616593cd79a13d304e8b7ba72d46806d0932ca349665de82212dd153176482022-08-11 0:50:2811 hrs 48 mins ago Ribbon Finance: ETH Covered Call V2 Wrapped Ether0.‍01409858 Ether
0x0c19ce2c268a17d40a9c0436613b446068db18957759fcf1404d50e3c6844ed9153174242022-08-10 23:59:2712 hrs 39 mins ago Ribbon Finance: ETH Covered Call V2 Wrapped Ether0.‍05 Ether
0xe6dca64ea0b5b13db658673f309cc6917c22a8b05809a731c3d255263fb84085153138422022-08-10 10:35:431 day 2 hrs ago Ribbon Finance: ETH Covered Call V2 Wrapped Ether0.‍06824313 Ether
0xe0392f301e9bec77098b8fc2e3aaaedf173a1d383f09f959758d3e436c3f2086153096452022-08-09 18:50:331 day 17 hrs ago Ribbon Finance: ETH Covered Call V2 Wrapped Ether0.‍7 Ether
0x9a4f757c8ad0b6f18f379af3b4d3a8f6ecca0940adb77d6b5c03b016ec67ad41153077272022-08-09 11:30:162 days 1 hr ago Ribbon Finance: ETH Covered Call V2 Wrapped Ether0.‍00301607 Ether
0xa6306ff04a6f6fccdcae4e01dee237d9e772e2e5d1330fa5860879fa4ad6e496153052912022-08-09 2:18:222 days 10 hrs ago Ribbon Finance: ETH Covered Call V2 Wrapped Ether1 Ether
0x2823d8e51d8b15b51550062872f17f48469976fb62304fba13c892848b90915e153030942022-08-08 18:15:332 days 18 hrs ago Ribbon Finance: ETH Covered Call V20x96c4e983306744270ab100c51cb8fda1a3d1c5cb1.‍26539038 Ether
0x2823d8e51d8b15b51550062872f17f48469976fb62304fba13c892848b90915e153030942022-08-08 18:15:332 days 18 hrs ago Wrapped Ether Ribbon Finance: ETH Covered Call V21.‍26539038 Ether
0x0c6d959128ee3d52a8ea0829dbac4932a99a00c69829a96550c995022e720acf153025792022-08-08 16:19:502 days 20 hrs ago Ribbon Finance: ETH Covered Call V20x9b2fcefe368af06c1c94f4d0e23801aa337ef6815.‍51962698 Ether
0x0c6d959128ee3d52a8ea0829dbac4932a99a00c69829a96550c995022e720acf153025792022-08-08 16:19:502 days 20 hrs ago Wrapped Ether Ribbon Finance: ETH Covered Call V25.‍51962698 Ether
0x433d2f2a5cffa3c626b3157a9be0d444a40f18f48a8a367f8508d5141fb59ae7153019982022-08-08 14:04:082 days 22 hrs ago Ribbon Finance: ETH Covered Call V2 Wrapped Ether7.‍5 Ether
0xd43498104535471f34c6cb5fba49f86c2f9b4605ba8b6be6ca215878d3ce9647153018952022-08-08 13:42:172 days 22 hrs ago Ribbon Finance: ETH Covered Call V2ENS Name daguy.eth2.‍74640337 Ether
0xd43498104535471f34c6cb5fba49f86c2f9b4605ba8b6be6ca215878d3ce9647153018952022-08-08 13:42:172 days 22 hrs ago Wrapped Ether Ribbon Finance: ETH Covered Call V22.‍74640337 Ether
0x68a7169ae9b13c7a84b84e061e760ee50a417be2929f82a3722e321afd9b34d9152972082022-08-07 19:56:313 days 16 hrs ago Ribbon Finance: ETH Covered Call V2 Wrapped Ether1 Ether
0xfc4eea068d571a5130c5a389d7a17d00c7ef135eed0eabfd4137153bf2a7ef0d152965672022-08-07 17:31:013 days 19 hrs ago Ribbon Finance: ETH Covered Call V20x4ec6a271246e63a44fe7468b3c2821c1d7861e211.‍7739153 Ether
0xfc4eea068d571a5130c5a389d7a17d00c7ef135eed0eabfd4137153bf2a7ef0d152965672022-08-07 17:31:013 days 19 hrs ago Wrapped Ether Ribbon Finance: ETH Covered Call V21.‍7739153 Ether
0x5b58bf57646795894b0f750aba39ab8fcede838f24c1035a4cbfc838db4f1b75152964862022-08-07 17:11:313 days 19 hrs ago Ribbon Finance: ETH Covered Call V2ENS Name tavmag.eth17.‍81534184 Ether
0x5b58bf57646795894b0f750aba39ab8fcede838f24c1035a4cbfc838db4f1b75152964862022-08-07 17:11:313 days 19 hrs ago Wrapped Ether Ribbon Finance: ETH Covered Call V217.‍81534184 Ether
0x7dbf819228bfa79a383f03e0b7d604a6bec7a5c6af25ae6e58896c5f76dfc38b152952872022-08-07 12:57:083 days 23 hrs ago Ribbon Finance: ETH Covered Call V2 Wrapped Ether1 Ether
0x915c59976f97200e8a19c99c8a5e5555fb1463782bf063a131f8aacf2bae38d2152951042022-08-07 12:16:454 days 21 mins ago Ribbon Finance: ETH Covered Call V20xcd10d7321f9efb46b97f6d43a8416cee7125228b0.‍0092779 Ether
0x915c59976f97200e8a19c99c8a5e5555fb1463782bf063a131f8aacf2bae38d2152951042022-08-07 12:16:454 days 21 mins ago Wrapped Ether Ribbon Finance: ETH Covered Call V20.‍0092779 Ether
0x4ce22760764c626430cb8480913a9bfbcf379d340517081af986ba5a92e9909f152948042022-08-07 11:08:504 days 1 hr ago Ribbon Finance: ETH Covered Call V2 Wrapped Ether0.‍01 Ether
[ Download CSV Export 
Loading

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

Contract Name:
AdminUpgradeabilityProxy

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

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

pragma solidity ^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;
        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");

        (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");

        (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");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

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

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

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal 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

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

pragma solidity >=0.6.8;

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) 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 adminAddress The address of the proxy admin.
   */
  function admin() external ifAdmin returns (address adminAddress) {
    return _admin();
  }

  /**
   * @return implementationAddress The address of the implementation.
   */
  function implementation() external ifAdmin returns (address implementationAddress) {
    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 3 of 4 : Proxy.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.4;

/**
 * @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 : UpgradeabilityProxy.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.4;

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) 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)
    }
  }
}

Settings
{
  "evmVersion": "istanbul",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

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":"adminAddress","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":"implementationAddress","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"}]

608060405260405162000a8038038062000a80833981016040819052620000269162000243565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6200033d565b60008051602062000a60833981519152146200008157634e487b7160e01b600052600160045260246000fd5b6200008c8262000180565b80511562000103576000826001600160a01b031682604051620000b091906200031f565b600060405180830381855af49150503d8060008114620000ed576040519150601f19603f3d011682016040523d82523d6000602084013e620000f2565b606091505b50509050806200010157600080fd5b505b5062000133905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046200033d565b60008051602062000a40833981519152146200015f57634e487b7160e01b600052600160045260246000fd5b620001778260008051602062000a4083398151915255565b505050620003aa565b62000196816200022060201b620003d71760201c565b6200020d5760405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000606482015260840160405180910390fd5b60008051602062000a6083398151915255565b3b151590565b80516001600160a01b03811681146200023e57600080fd5b919050565b60008060006060848603121562000258578283fd5b620002638462000226565b9250620002736020850162000226565b60408501519092506001600160401b038082111562000290578283fd5b818601915086601f830112620002a4578283fd5b815181811115620002b957620002b962000394565b604051601f8201601f19908116603f01168101908382118183101715620002e457620002e462000394565b81604052828152896020848701011115620002fd578586fd5b6200031083602083016020880162000361565b80955050505050509250925092565b600082516200033381846020870162000361565b9190910192915050565b6000828210156200035c57634e487b7160e01b81526011600452602481fd5b500390565b60005b838110156200037e57818101518382015260200162000364565b838111156200038e576000848401525b50505050565b634e487b7160e01b600052604160045260246000fd5b61068680620003ba6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe61461005f5780634f1ef2861461007f5780635c60da1b146100925780638f283970146100c3578063f851a440146100e357610055565b3661005557005b61005d6100f8565b005b34801561006b57600080fd5b5061005d61007a366004610581565b610132565b61005d61008d3660046105a2565b61016f565b34801561009e57600080fd5b506100a761021e565b6040516001600160a01b03909116815260200160405180910390f35b3480156100cf57600080fd5b5061005d6100de366004610581565b610280565b3480156100ef57600080fd5b506100a7610392565b6101006103dd565b61013061012b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b610469565b565b600080516020610631833981519152546001600160a01b0316336001600160a01b03161415610167576101648161048d565b50565b6101646100f8565b600080516020610631833981519152546001600160a01b0316336001600160a01b03161415610211576101a18361048d565b6000836001600160a01b031683836040516101bd929190610620565b600060405180830381855af49150503d80600081146101f8576040519150601f19603f3d011682016040523d82523d6000602084013e6101fd565b606091505b505090508061020b57600080fd5b50505050565b6102196100f8565b505050565b60006102366000805160206106318339815191525490565b6001600160a01b0316336001600160a01b0316141561027557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b61027d6100f8565b90565b600080516020610631833981519152546001600160a01b0316336001600160a01b03161415610167576001600160a01b0381166103235760405162461bcd60e51b815260206004820152603660248201527f43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f604482015275787920746f20746865207a65726f206164647265737360501b60648201526084015b60405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61035a6000805160206106318339815191525490565b604080516001600160a01b03928316815291841660208301520160405180910390a16101648160008051602061063183398151915255565b60006103aa6000805160206106318339815191525490565b6001600160a01b0316336001600160a01b0316141561027557506000805160206106318339815191525490565b3b151590565b600080516020610631833981519152546001600160a01b0316336001600160a01b031614156101305760405162461bcd60e51b815260206004820152603260248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260448201527137b6903a343290383937bc3c9030b236b4b760711b606482015260840161031a565b3660008037600080366000845af43d6000803e808015610488573d6000f35b3d6000fd5b610496816104cd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b803b6105415760405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000606482015260840161031a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b80356001600160a01b038116811461057c57600080fd5b919050565b600060208284031215610592578081fd5b61059b82610565565b9392505050565b6000806000604084860312156105b6578182fd5b6105bf84610565565b9250602084013567ffffffffffffffff808211156105db578384fd5b818601915086601f8301126105ee578384fd5b8135818111156105fc578485fd5b87602082850101111561060d578485fd5b6020830194508093505050509250925092565b818382376000910190815291905056feb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103a2646970667358221220f334841425b1f38160bb0f366004dda133c7b745e4e5596ad7a442ccdf619c7064736f6c63430008040033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc000000000000000000000000c4d1009dff06a63a5548ecfeaf0942d45cf027c500000000000000000000000088a9142fa18678003342a8fd706bd301e0fecefd000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000002a4e16fdbd5000000000000000000000000ab6df2de75a4f07d95c040df90c7362bb5edcd90000000000000000000000000a4290c9eae274c7a8fbc57a1e68adc3e95e7c67e000000000000000000000000daeada3d210d2f45874724beea03c7d4bbd4167400000000000000000000000000000000000000000000000000000000001e8480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000260000000000000000000000000cf38c16253912a827f38b5b2c08e6059a0194e8c00000000000000000000000005dc9638693117c59e7e6cc7b77232d7e494c4cf00000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000002540be40000000000000000000000000000000000000000000000003635c9adc5dea000000000000000000000000000000000000000000000000000000000000000000016526962626f6e20455448205468657461205661756c7400000000000000000000000000000000000000000000000000000000000000000000000000000000000a724554482d54484554410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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.