Contract 0x954F20DF58347b71bbC10c94827bE9EbC8706887 13

 

Contract Overview

Balance:
0 ETH

ETH Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x86dfe3205efaa6544062cd097efe9ed60bd38b52d72c1b47c6a3df582d8a9601Repay Borrow1934365082024-03-23 17:17:595 days 52 mins ago0xb8150a1b6945e75d05769d685b127b41e6335bbc IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.0000326 0.01
0x28aa5634224c94bc2445731e979a5a4df06cd3757d724bb3e737f29a48590dc7Batch Update Ove...1881652112024-03-08 0:43:1620 days 17 hrs ago0x49616a63dc72549d76f4615d26c2f31a7b08e155 IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.000550440.1
0x7a4d812949ce36e859d7aa40681fd1ea021f1a98941c82169773a5f44dc93afdRepay Borrow1879937542024-03-07 12:10:1121 days 6 hrs ago0xb8150a1b6945e75d05769d685b127b41e6335bbc IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00042371 0.1
0x5d631064b902d8eb177596511e50fad939343e00f8aedd66806d4f76384a87ccBorrow1824338412024-02-19 19:45:4037 days 22 hrs ago0xb8150a1b6945e75d05769d685b127b41e6335bbc IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00039823 0.1
0x7b1f2bc261d18fd09c6028a8eff076525ab8f90c34dbea11a2cdea5d0a81c1e7Repay Borrow1763633642024-02-01 10:50:0956 days 7 hrs ago0x1007a39088c22a4dfe54032f08fc47a7303603df IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.000545 0.1
0xcf552095bf674d2214a56fb8647096e9fccbe51f127df059d02cc3e8ef507d73Repay Borrow1763632592024-02-01 10:49:4256 days 7 hrs ago0x1007a39088c22a4dfe54032f08fc47a7303603df IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00057561 0.1
0x40b968fe096c7f534af36b211410668f1c888eb69b4257b4d2890488e45fe703Repay Borrow1761643652024-01-31 20:28:1456 days 21 hrs ago0xb8150a1b6945e75d05769d685b127b41e6335bbc IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00036764 0.1
0x809c2682afb1e1612c12f603e539cf1686fe63d11744eb6efbaac85818ef30e7Borrow1736721612024-01-24 10:51:4664 days 7 hrs ago0x45995e58d6b6848545bef07d256ab6428588f0f9 IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.000063860.1
0xfa794860c1fcb2ffccac71a863ae971bb7c5f592f0aa075396e69c58da0d3da6Repay Borrow1676530422024-01-06 10:44:3082 days 7 hrs ago0xb8150a1b6945e75d05769d685b127b41e6335bbc IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.0003727 0.1
0xee890c6348d9af43c2eee8a76fd6a0cd8f173d217388630ed93fd1fa38360646Repay Borrow1674350622024-01-05 18:54:0982 days 23 hrs ago0xfcedc13c1dd6ed4cc2c063042bfa98ff0640c88e IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00011764 0.1
0xc3147af93865f032a40e8ffdb9d6644e69746eaad70ff24d016f1c2a509a28c8Repay Borrow Wit...1605037972023-12-16 3:58:38103 days 14 hrs ago0xf42b1ac078b2144bfce9fdc7e197685ceda42011 IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00012858 0.1
0x6e2ea63e957ae9ba1f8417366c2b35fb91f8f2f0a1394908836b242c3677b55aRepay Borrow Wit...1605033182023-12-16 3:56:59103 days 14 hrs ago0xf42b1ac078b2144bfce9fdc7e197685ceda42011 IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00014082 0.1
0x506bd87cf752ca13c4b4358620164ec5ab501de4e01f48ac13123e161dcd2363Borrow1605031302023-12-16 3:56:11103 days 14 hrs ago0xf42b1ac078b2144bfce9fdc7e197685ceda42011 IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00012406 0.1
0x5e2b7df405107afe4d087e18594b09e81522bc9acca1052c2f07fa3573547c1aRepay Borrow1602428802023-12-15 5:24:27104 days 12 hrs ago0x224e69025a2f705c8f31efb6694398f8fd09ac5c IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.0001071 0.1
0xc6d9909586cfdcb591b344ceb95e8526f45f93f8a9eaf7196561e85e73abddebBorrow1593923942023-12-12 13:16:26107 days 4 hrs ago0x1007a39088c22a4dfe54032f08fc47a7303603df IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.000635240.1
0xc9cf605222bd25658a2ca6ab926a7e45845757f90854e9f3a87d5280c2722da2Repay Borrow1585365992023-12-09 22:25:47109 days 19 hrs ago0x224e69025a2f705c8f31efb6694398f8fd09ac5c IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00010629 0.1
0x43603b9db028d03d28c72086f708c717d5b4f78ed1413fd5e5f8c07e696090bcBorrow1578799542023-12-07 21:59:46111 days 20 hrs ago0x10797ca7684310b988f114f157eed6933fe70c07 IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00019475 0.1
0x82b8a65a3fe47ac96f2592e39d7f187c66ef0014e81bd1ef46caba6bc1afb825Repay Borrow1578750462023-12-07 21:38:10111 days 20 hrs ago0x10797ca7684310b988f114f157eed6933fe70c07 IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.0001671 0.1
0x67299696864b38f9f3d8ec2788d2a40412138f73cdda4c8b76858ff9abd934b5Repay Borrow1574345542023-12-06 12:41:31113 days 5 hrs ago0xcce9a28b570946123f392cf1dbfa6d2d5e636a1f IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00021889 0.1
0x724891f989089642ecb989ba8877ad00f1dea7ef73f2448845645040a6012952Borrow1571037842023-12-05 12:01:39114 days 6 hrs ago0x1007a39088c22a4dfe54032f08fc47a7303603df IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.000627690.1
0xeced6a444ccb71942512fb353c39521265c43c11aabb5d72417e4cc2e8f9b845Repay Borrow1511106672023-11-16 21:37:24132 days 20 hrs ago0x224e69025a2f705c8f31efb6694398f8fd09ac5c IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00010597 0.1
0x7252ad1ceea6d065646fceb1f84040f91bc15521b434b33b413fb7e5c24a6bcaRedeem1498946082023-11-13 4:47:00136 days 13 hrs ago0xcbd1c32a1b3961cc43868b8bae431ab0da65beeb IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00009391 0.1
0xce5d988aaacd396476a41c788204c14bf1c03acbce376c821ca108845b01d1a4Redeem1483441512023-11-08 11:41:43141 days 6 hrs ago0xcbd1c32a1b3961cc43868b8bae431ab0da65beeb IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00005432 0.1
0x4cfea537c5dba31893efee55e602e2fc51f0bc8c78e91f55f63c55f57bb3a2d0Repay Borrow1483378512023-11-08 11:15:28141 days 6 hrs ago0x7a0c61edd8b5c0c5c1437aeb571d7ddbf8022be4 IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00008976 0.1
0xc7a67d5e057056eb4b6b5cce54ff35fdb6f9fe1b142476ae3c8be9d2b871736cRepay Borrow1430847112023-10-23 3:17:10157 days 14 hrs ago0xb8150a1b6945e75d05769d685b127b41e6335bbc IN  0x954f20df58347b71bbc10c94827be9ebc87068870 ETH0.00035988 0.1
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x00ee811081fbb859a8ea3ee4f423548071ba000d3096ce404fc39d2ebba9f3fc717969902023-03-20 14:10:26374 days 4 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 0x7aecd107cb022e1dfd42cc43e9ba94c38bc832750 ETH
0x00ee811081fbb859a8ea3ee4f423548071ba000d3096ce404fc39d2ebba9f3fc717969902023-03-20 14:10:26374 days 4 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 Maker DAO: DAI Token0 ETH
0x00ee811081fbb859a8ea3ee4f423548071ba000d3096ce404fc39d2ebba9f3fc717969902023-03-20 14:10:26374 days 4 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 Maker DAO: DAI Token0 ETH
0x00ee811081fbb859a8ea3ee4f423548071ba000d3096ce404fc39d2ebba9f3fc717969902023-03-20 14:10:26374 days 4 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 Maker DAO: DAI Token0 ETH
0x00ee811081fbb859a8ea3ee4f423548071ba000d3096ce404fc39d2ebba9f3fc717969902023-03-20 14:10:26374 days 4 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 Maker DAO: DAI Token0 ETH
0x00ee811081fbb859a8ea3ee4f423548071ba000d3096ce404fc39d2ebba9f3fc717969902023-03-20 14:10:26374 days 4 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 0xb71f3d4342aae0b8d531e14d2cf2f45d6e458a5f0 ETH
0x00ee811081fbb859a8ea3ee4f423548071ba000d3096ce404fc39d2ebba9f3fc717969902023-03-20 14:10:26374 days 4 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 0x051e2514e3fe8da88caa2951442a21042bce99ea0 ETH
0x00ee811081fbb859a8ea3ee4f423548071ba000d3096ce404fc39d2ebba9f3fc717969902023-03-20 14:10:26374 days 4 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 0x051e2514e3fe8da88caa2951442a21042bce99ea0 ETH
0x00ee811081fbb859a8ea3ee4f423548071ba000d3096ce404fc39d2ebba9f3fc717969902023-03-20 14:10:26374 days 4 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 0xb920bc6bda2f67c383f871ce1ac1eb56bdcee3a20 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 0xb920bc6bda2f67c383f871ce1ac1eb56bdcee3a20 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0xb71f3d4342aae0b8d531e14d2cf2f45d6e458a5f 0x954f20df58347b71bbc10c94827be9ebc87068870 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 0xb920bc6bda2f67c383f871ce1ac1eb56bdcee3a20 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0xb71f3d4342aae0b8d531e14d2cf2f45d6e458a5f 0x954f20df58347b71bbc10c94827be9ebc87068870 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 0xb920bc6bda2f67c383f871ce1ac1eb56bdcee3a20 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0xb71f3d4342aae0b8d531e14d2cf2f45d6e458a5f 0x954f20df58347b71bbc10c94827be9ebc87068870 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 0xb920bc6bda2f67c383f871ce1ac1eb56bdcee3a20 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0xb71f3d4342aae0b8d531e14d2cf2f45d6e458a5f 0x954f20df58347b71bbc10c94827be9ebc87068870 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 0xb920bc6bda2f67c383f871ce1ac1eb56bdcee3a20 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0xb71f3d4342aae0b8d531e14d2cf2f45d6e458a5f 0x954f20df58347b71bbc10c94827be9ebc87068870 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 0xb920bc6bda2f67c383f871ce1ac1eb56bdcee3a20 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0xb71f3d4342aae0b8d531e14d2cf2f45d6e458a5f 0x954f20df58347b71bbc10c94827be9ebc87068870 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 0xb920bc6bda2f67c383f871ce1ac1eb56bdcee3a20 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0xb71f3d4342aae0b8d531e14d2cf2f45d6e458a5f 0x954f20df58347b71bbc10c94827be9ebc87068870 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0x954f20df58347b71bbc10c94827be9ebc8706887 0xb920bc6bda2f67c383f871ce1ac1eb56bdcee3a20 ETH
0x97c2b274df3d0d7e62f63a54c64aabdcf9ad5f1608912c0ccb9efe401d0563ad715116792023-03-19 18:16:10374 days 23 hrs ago 0xb71f3d4342aae0b8d531e14d2cf2f45d6e458a5f 0x954f20df58347b71bbc10c94827be9ebc87068870 ETH
[ Download CSV Export 
Loading

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

Contract Name:
UUPSProxy

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 100 runs

Other Settings:
default evmVersion, MIT license
File 1 of 7 : ERC1967Proxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)

pragma solidity ^0.8.0;

import "../Proxy.sol";
import "./ERC1967Upgrade.sol";

/**
 * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
 * implementation address that can be changed. This address is stored in storage in the location specified by
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the
 * implementation behind the proxy.
 */
contract ERC1967Proxy is Proxy, ERC1967Upgrade {
    /**
     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.
     *
     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded
     * function call, and allows initializating the storage of the proxy like a Solidity constructor.
     */
    constructor(address _logic, bytes memory _data) payable {
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        _upgradeToAndCall(_logic, _data, false);
    }

    /**
     * @dev Returns the current implementation address.
     */
    function _implementation() internal view virtual override returns (address impl) {
        return ERC1967Upgrade._getImplementation();
    }
}

File 2 of 7 : ERC1967Upgrade.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Upgrade.sol)

pragma solidity ^0.8.2;

import "../beacon/IBeacon.sol";
import "../../utils/Address.sol";
import "../../utils/StorageSlot.sol";

/**
 * @dev This abstract contract provides getters and event emitting update functions for
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.
 *
 * _Available since v4.1._
 *
 * @custom:oz-upgrades-unsafe-allow delegatecall
 */
abstract contract ERC1967Upgrade {
    // This is the keccak-256 hash of "eip1967.proxy.rollback" subtracted by 1
    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;

    /**
     * @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 Emitted when the implementation is upgraded.
     */
    event Upgraded(address indexed implementation);

    /**
     * @dev Returns the current implementation address.
     */
    function _getImplementation() internal view returns (address) {
        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
    }

    /**
     * @dev Stores a new address in the EIP1967 implementation slot.
     */
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
    }

    /**
     * @dev Perform implementation upgrade
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Perform implementation upgrade with additional setup call.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeToAndCall(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        _upgradeTo(newImplementation);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(newImplementation, data);
        }
    }

    /**
     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeToAndCallSecure(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        address oldImplementation = _getImplementation();

        // Initial upgrade and setup call
        _setImplementation(newImplementation);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(newImplementation, data);
        }

        // Perform rollback test if not already in progress
        StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot(_ROLLBACK_SLOT);
        if (!rollbackTesting.value) {
            // Trigger rollback using upgradeTo from the new implementation
            rollbackTesting.value = true;
            Address.functionDelegateCall(
                newImplementation,
                abi.encodeWithSignature("upgradeTo(address)", oldImplementation)
            );
            rollbackTesting.value = false;
            // Check rollback was effective
            require(oldImplementation == _getImplementation(), "ERC1967Upgrade: upgrade breaks further upgrades");
            // Finally reset to the new implementation and log the upgrade
            _upgradeTo(newImplementation);
        }
    }

    /**
     * @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 Emitted when the admin account has changed.
     */
    event AdminChanged(address previousAdmin, address newAdmin);

    /**
     * @dev Returns the current admin.
     */
    function _getAdmin() internal view returns (address) {
        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;
    }

    /**
     * @dev Stores a new address in the EIP1967 admin slot.
     */
    function _setAdmin(address newAdmin) private {
        require(newAdmin != address(0), "ERC1967: new admin is the zero address");
        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;
    }

    /**
     * @dev Changes the admin of the proxy.
     *
     * Emits an {AdminChanged} event.
     */
    function _changeAdmin(address newAdmin) internal {
        emit AdminChanged(_getAdmin(), newAdmin);
        _setAdmin(newAdmin);
    }

    /**
     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.
     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.
     */
    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;

    /**
     * @dev Emitted when the beacon is upgraded.
     */
    event BeaconUpgraded(address indexed beacon);

    /**
     * @dev Returns the current beacon.
     */
    function _getBeacon() internal view returns (address) {
        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;
    }

    /**
     * @dev Stores a new beacon in the EIP1967 beacon slot.
     */
    function _setBeacon(address newBeacon) private {
        require(Address.isContract(newBeacon), "ERC1967: new beacon is not a contract");
        require(
            Address.isContract(IBeacon(newBeacon).implementation()),
            "ERC1967: beacon implementation is not a contract"
        );
        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;
    }

    /**
     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does
     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).
     *
     * Emits a {BeaconUpgraded} event.
     */
    function _upgradeBeaconToAndCall(
        address newBeacon,
        bytes memory data,
        bool forceCall
    ) internal {
        _setBeacon(newBeacon);
        emit BeaconUpgraded(newBeacon);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);
        }
    }
}

File 3 of 7 : Proxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (proxy/Proxy.sol)

pragma solidity ^0.8.0;

/**
 * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
 * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
 * be specified by overriding the virtual {_implementation} function.
 *
 * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
 * different contract through the {_delegate} function.
 *
 * The success and return data of the delegated call will be returned back to the caller of the proxy.
 */
abstract contract Proxy {
    /**
     * @dev Delegates the current call to `implementation`.
     *
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        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 This is a virtual function that should be overriden so it returns the address to which the fallback function
     * and {_fallback} should delegate.
     */
    function _implementation() internal view virtual returns (address);

    /**
     * @dev Delegates the current call to the address returned by `_implementation()`.
     *
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _fallback() internal virtual {
        _beforeFallback();
        _delegate(_implementation());
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
     * function in the contract matches the call data.
     */
    fallback() external payable virtual {
        _fallback();
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
     * is empty.
     */
    receive() external payable virtual {
        _fallback();
    }

    /**
     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`
     * call, or as part of the Solidity `fallback` or `receive` functions.
     *
     * If overriden should call `super._beforeFallback()`.
     */
    function _beforeFallback() internal virtual {}
}

File 4 of 7 : IBeacon.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)

pragma solidity ^0.8.0;

/**
 * @dev This is the interface that {BeaconProxy} expects of its beacon.
 */
interface IBeacon {
    /**
     * @dev Must return an address that can be used as a delegate call target.
     *
     * {BeaconProxy} will check that this address is a contract.
     */
    function implementation() external view returns (address);
}

File 5 of 7 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Address.sol)

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 6 of 7 : StorageSlot.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)

pragma solidity ^0.8.0;

/**
 * @dev Library for reading and writing primitive types to specific storage slots.
 *
 * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
 * This library helps with reading and writing to such slots without the need for inline assembly.
 *
 * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
 *
 * Example usage to set ERC1967 implementation slot:
 * ```
 * contract ERC1967 {
 *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
 *
 *     function _getImplementation() internal view returns (address) {
 *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
 *     }
 *
 *     function _setImplementation(address newImplementation) internal {
 *         require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
 *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
 *     }
 * }
 * ```
 *
 * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._
 */
library StorageSlot {
    struct AddressSlot {
        address value;
    }

    struct BooleanSlot {
        bool value;
    }

    struct Bytes32Slot {
        bytes32 value;
    }

    struct Uint256Slot {
        uint256 value;
    }

    /**
     * @dev Returns an `AddressSlot` with member `value` located at `slot`.
     */
    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.
     */
    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
     */
    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.
     */
    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
        assembly {
            r.slot := slot
        }
    }
}

File 7 of 7 : UUPSProxy.sol
//SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.4;

import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";

// Kept for backwards compatibility with older versions of Hardhat and Truffle plugins.
contract UUPSProxy is ERC1967Proxy {
    constructor(
        address _logic,
        address, // This is completely unused by the uups proxy, required to remain compatible with hardhat deploy: https://github.com/wighawag/hardhat-deploy/issues/146
        bytes memory _data
    ) payable ERC1967Proxy(_logic, _data) {}
}

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

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"","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":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x60806040523661001357610011610017565b005b6100115b61002761002261005e565b610096565b565b606061004e838360405180606001604052806027815260200161024c602791396100ba565b9392505050565b3b151590565b90565b60006100917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100b5573d6000f35b3d6000fd5b6060833b61011e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161013991906101cc565b600060405180830381855af49150503d8060008114610174576040519150601f19603f3d011682016040523d82523d6000602084013e610179565b606091505b5091509150610189828286610193565b9695505050505050565b606083156101a257508161004e565b8251156101b25782518084602001fd5b8160405162461bcd60e51b815260040161011591906101e8565b600082516101de81846020870161021b565b9190910192915050565b602081526000825180602084015261020781604085016020870161021b565b601f01601f19169190910160400192915050565b60005b8381101561023657818101518382015260200161021e565b83811115610245576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220fb8e61469a63f5006df9388cf80a6a4d9d76a7975bfe1dfb606fe6c799da51c064736f6c63430008040033

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.