Contract 0xf4137e5D07b476e5A30f907C3e31F9FAAB00716b 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x7ceafaa870f68ed5797f8d47b6fbe9e1c5a215f12f69c47d327238dfe1483500Complete Withdra...317286922022-08-10 10:23:121 day 1 hr ago0x778902fb04a50622ea5c3c86f53ba9b47f3d0b4c IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0 MATIC0.00330684000130.000000015
0x202d8aec6e4603a62ff896434fd70651bfba40fed2faa476f2db0f9625da8862Withdraw317286282022-08-10 10:21:001 day 1 hr ago0x674e09856a52622ff6167ace08297ed14ba21149 IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0.0015 MATIC0.004457668953 30.555000021
0xbbd5cfe041bb5dbecf64e086eb7359c3962096a1568cd9588da2ea1a8ab93a36Complete Deposit316328982022-08-07 19:01:263 days 16 hrs ago0x778902fb04a50622ea5c3c86f53ba9b47f3d0b4c IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0 MATIC0.00262107000130.000000012
0xe46d295ec8ad56fd5f57d35746f9e2be5b51c195d69d7e5ad583518e4311c827Deposit316328272022-08-07 18:58:563 days 16 hrs ago0x674e09856a52622ff6167ace08297ed14ba21149 IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0.0015 MATIC0.004564690021 32.010000011
0x73ce1254098b10f2913c83ee796fb0f4500f5996c5a9c0b25fffcb2cde56d72eComplete Withdra...313473552022-07-31 8:48:5211 days 2 hrs ago0x778902fb04a50622ea5c3c86f53ba9b47f3d0b4c IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0 MATIC0.00279492000130.000000019
0x79255f24293695e9dd18ed45e6bb008b429ea57a67c86ddce84841e067b6c365Withdraw313472932022-07-31 8:46:4411 days 2 hrs ago0xa843c5d2b2dfc45e6799eae9b8dbee0189e6ccaa IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0.0015 MATIC0.004377060002 30.000000014
0xf611bfdbc74dae49ec89dfeeb61e255ef546d03da82162e9b4ba094801116b27Complete Deposit312447142022-07-28 17:43:2213 days 17 hrs ago0x778902fb04a50622ea5c3c86f53ba9b47f3d0b4c IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0 MATIC0.00400047598145.781989005
0xd2af04c27a0ee61c2af969060edbb72f490992b96b118998cd03f57fa8892103Deposit312446502022-07-28 17:41:1013 days 17 hrs ago0xa843c5d2b2dfc45e6799eae9b8dbee0189e6ccaa IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0.0015 MATIC0.013187417808 92.461527409
0x031da5ed070d9a2b97a7312dd2f54625144071b8d669b93a5be98e5f0013879dComplete Withdra...311900692022-07-27 8:25:4715 days 3 hrs ago0x778902fb04a50622ea5c3c86f53ba9b47f3d0b4c IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0 MATIC0.00330756000230.000000022
0x0121e26e7cfac467072eadcb7e8f96b95c01f6ae621c8a56350cbe60e52e27adWithdraw311899992022-07-27 8:23:2315 days 3 hrs ago0xda8e01696e52ef6d28272cebbfe49e0a2ebcb61a IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0.0015 MATIC0.004660628566 31.943555035
0x1dfd50bbbfa8106fbde44cb4dee1f3fd5006da6995a674ad17a1d6e27047b804Complete Withdra...309783812022-07-21 14:42:0520 days 20 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0 MATIC0.011909184815108.017857409
0x1436313208287078fd7070d89794722e372ddbcde45a983a145351167a137516Withdraw309782862022-07-21 14:38:1320 days 20 hrs ago0xaeec69a1e1d9865cda64ec032827c00011e36010 IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0.0015 MATIC0.03013676251 206.554827969
0xb78927b8d39458b17371c5962282ac7cda3023dce301a1dd36c046badbb146f0Grant Role309701982022-07-21 9:22:0321 days 2 hrs ago0x0132613b3a1061816f4661ad301612910e3cce0b IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0 MATIC0.00322177457257.117586299
0x72e402ffa9c0732a8ed577f2486b25ada09ccbf71c1b73183c89c6b56b03456aGrant Role309701922022-07-21 9:21:5121 days 2 hrs ago0x0132613b3a1061816f4661ad301612910e3cce0b IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0 MATIC0.003324009458.917533416
0x004677fd907f87238a9809b5c302ba44fe11b132a692248cca45746ea75b49daGrant Role309701872022-07-21 9:21:4121 days 2 hrs ago0x0132613b3a1061816f4661ad301612910e3cce0b IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0 MATIC0.00341082452460.456317567
0x77d69c1e058f2a6bfdbf042c310ab53bbec2099e0835f56485775a98bbdeaa75Complete Deposit309395222022-07-20 14:23:0521 days 21 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0 MATIC0.00331512014437.938683974
0x89fed980f9a074c3392313cf27fb6b9f6d40b8566bd239815f88914b9475577cDeposit309393512022-07-20 14:17:1121 days 21 hrs ago0xaeec69a1e1d9865cda64ec032827c00011e36010 IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0.0015 MATIC0.004580123567 32.115525596
0xa10a5f6d8077d0957c354b3b2f68269a1be68d1c9e6e7782933e69ebac404cb5Complete Deposit308066512022-07-17 1:59:2725 days 9 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0 MATIC0.00262107000130.000000014
0x924c6f182ad9d4285e48dec8e8eb4d71c41f15de3c3dae352c07f7e17e986134Deposit308065902022-07-17 1:57:2125 days 9 hrs ago0xbe13084cea1e3c8615f781b85b995c4d95947080 IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0.0015 MATIC0.00443237814 30.07
0x6d113a3ed779e3a84f07c524e315f5ba2f3b7b29face94d15d8d9bf784062a33Complete Withdra...307883662022-07-16 13:36:3025 days 21 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0 MATIC0.00338453622530.698184391
0xfdaffcfe4407927ee9ed43c257ca17ef4d5aecf626e6c6a7b7c7615cae073189Withdraw307882992022-07-16 13:34:1225 days 21 hrs ago0x76c465aeb522d8a037b3a061054b293c9c330c51 IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0.0015 MATIC0.004787625886 32.813983952
0x435a768a03c2b8faea0b06a0c3dee2559378494307e99ae1148a68a756ed0d0aComplete Withdra...307873142022-07-16 12:51:2025 days 22 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0 MATIC0.00336035576730.485500663
0x86bfc0a6d6e1260c53a365a32d854aac6b64d9bc9f052eb5216c0093d1d1e4beWithdraw307872562022-07-16 12:47:2425 days 22 hrs ago0x76c465aeb522d8a037b3a061054b293c9c330c51 IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0.0015 MATIC0.004649172228 30.857474339
0xbb469e7c434db8a255b69069caa40da42208fd67b608db85a8ba6c730fe45422Complete Deposit307868922022-07-16 12:32:5825 days 22 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0 MATIC0.00262143000430.000000051
0xf1c75c51e2773e259cb1db249964e6f70acf7234ccd13bb334c5dc29ee5d67bdDeposit307868132022-07-16 12:30:0825 days 22 hrs ago0x76c465aeb522d8a037b3a061054b293c9c330c51 IN  0xf4137e5d07b476e5a30f907c3e31f9faab00716b0.0015 MATIC0.004677125996 32.795700254
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x202d8aec6e4603a62ff896434fd70651bfba40fed2faa476f2db0f9625da8862317286282022-08-10 10:21:001 day 1 hr ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0x674e09856a52622ff6167ace08297ed14ba211490.00025 MATIC
0xe46d295ec8ad56fd5f57d35746f9e2be5b51c195d69d7e5ad583518e4311c827316328272022-08-07 18:58:563 days 16 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0x674e09856a52622ff6167ace08297ed14ba211490.00025 MATIC
0x79255f24293695e9dd18ed45e6bb008b429ea57a67c86ddce84841e067b6c365313472932022-07-31 8:46:4411 days 2 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0xa843c5d2b2dfc45e6799eae9b8dbee0189e6ccaa0.00025 MATIC
0xd2af04c27a0ee61c2af969060edbb72f490992b96b118998cd03f57fa8892103312446502022-07-28 17:41:1013 days 17 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0xa843c5d2b2dfc45e6799eae9b8dbee0189e6ccaa0.00025 MATIC
0x0121e26e7cfac467072eadcb7e8f96b95c01f6ae621c8a56350cbe60e52e27ad311899992022-07-27 8:23:2315 days 3 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0xda8e01696e52ef6d28272cebbfe49e0a2ebcb61a0.00025 MATIC
0x1436313208287078fd7070d89794722e372ddbcde45a983a145351167a137516309782862022-07-21 14:38:1320 days 20 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0xaeec69a1e1d9865cda64ec032827c00011e360100.00025 MATIC
0x89fed980f9a074c3392313cf27fb6b9f6d40b8566bd239815f88914b9475577c309393512022-07-20 14:17:1121 days 21 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0xaeec69a1e1d9865cda64ec032827c00011e360100.00025 MATIC
0x924c6f182ad9d4285e48dec8e8eb4d71c41f15de3c3dae352c07f7e17e986134308065902022-07-17 1:57:2125 days 9 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0xbe13084cea1e3c8615f781b85b995c4d959470800.00025 MATIC
0xfdaffcfe4407927ee9ed43c257ca17ef4d5aecf626e6c6a7b7c7615cae073189307882992022-07-16 13:34:1225 days 21 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0x76c465aeb522d8a037b3a061054b293c9c330c510.00025 MATIC
0x86bfc0a6d6e1260c53a365a32d854aac6b64d9bc9f052eb5216c0093d1d1e4be307872562022-07-16 12:47:2425 days 22 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0x76c465aeb522d8a037b3a061054b293c9c330c510.00025 MATIC
0xf1c75c51e2773e259cb1db249964e6f70acf7234ccd13bb334c5dc29ee5d67bd307868132022-07-16 12:30:0825 days 22 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0x76c465aeb522d8a037b3a061054b293c9c330c510.00025 MATIC
0x98ec4578b8a017aad05244f7208ca1d12e47bf24adc6ed612b9022937d05eb98305967082022-07-11 8:51:4131 days 2 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0x37326f5b0d995232f16ef191623874f2d53f6b950.00025 MATIC
0xb00635b30dd7a8bd834891b4f2c3d60493e1b5af7dd537d631e95f19020b4890304948112022-07-08 19:27:2633 days 16 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0x747276019e3340104c96397bf6537ad01f93d7df0.00025 MATIC
0x4361201804a7c0950f88dce8f9d8dde71949871eb6656daaad0081eeeb8f7b85304715842022-07-08 5:35:1134 days 5 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0x6737ada10678ccd0e52219e39d031dd3960d16a20.00025 MATIC
0xdd0f85f3d4ed641147c2addc640da4f289b1c50826b31300f80dd11b7d463966304273312022-07-07 2:58:1435 days 8 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0xb9ff91ab4b7cd459bf417216a73e6b65be34a57c0.00025 MATIC
0xc58bed3e09d2b69d343c2e9d135a638f5e9afa568be2471b125e41b41874c06b304145142022-07-06 18:52:0835 days 16 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0x6737ada10678ccd0e52219e39d031dd3960d16a20.00025 MATIC
0x954a44da298a7ec9bad86d321c20674f686bd691ee123b9ebcbb1247043162bf299940692022-06-25 20:56:1946 days 14 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0xe366619833126918f7fd3bdf516002bdadf1ae5f0.00025 MATIC
0x17b96f0acd093b4a998fe75ec70a283c9d3a33d2dcbf6100af608646beaf75e8297982162022-06-20 17:05:2751 days 18 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0xe366619833126918f7fd3bdf516002bdadf1ae5f0.00025 MATIC
0x414d2ecc02ffea4b09bc10cedf088dcff04284a8e9fee87af875fd2b36443a11295867332022-06-15 6:03:4557 days 5 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b 0x70440d9e4195c6df23d2ec04170ee290305d4d3e0.00025 MATIC
0x414d2ecc02ffea4b09bc10cedf088dcff04284a8e9fee87af875fd2b36443a11295867332022-06-15 6:03:4557 days 5 hrs ago 0x70440d9e4195c6df23d2ec04170ee290305d4d3e 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0.0015 MATIC
0xa45bafc0f033f91947be313925e11d6542a52dcc67eb499ec27dfc94f3546e4f295577142022-06-14 12:52:0057 days 22 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0xe4ea18429122e72f7755fa5b0d8d8b704a3247ae0.00025 MATIC
0x7ba204e63b7c6a6be31350b687956370b38aab4556a095c4610f2f5da25f91f7294668232022-06-12 6:41:1660 days 4 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0xe4ea18429122e72f7755fa5b0d8d8b704a3247ae0.00025 MATIC
0x1345a2ff11b772d16fe62ab399c74329943f246928c56f04c15dc910fb747743294425832022-06-11 16:26:2060 days 19 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0xdccf49fe72d152ef9e3239191f88b7c3668853990.00025 MATIC
0xac6a48cfdae7e2bad13bf97906736883b1b1d37d728db364626044b16f821ceb294210942022-06-11 4:00:3861 days 7 hrs ago 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0xdc237ac14c99ddde5b78dd9152542cb2ef4ddd850.00025 MATIC
0xac6a48cfdae7e2bad13bf97906736883b1b1d37d728db364626044b16f821ceb294210942022-06-11 4:00:3861 days 7 hrs ago 0xdc237ac14c99ddde5b78dd9152542cb2ef4ddd85 0xf4137e5d07b476e5a30f907c3e31f9faab00716b0.0015 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UUPSProxy

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
File 1 of 7 : UUPSProxy.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;

import "ERC1967Proxy.sol";

contract UUPSProxy is ERC1967Proxy {
    constructor(address _logic, bytes memory _data) ERC1967Proxy(_logic, _data) payable {}
}

File 2 of 7 : ERC1967Proxy.sol
// SPDX-License-Identifier: MIT

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 3 of 7 : Proxy.sol
// SPDX-License-Identifier: MIT

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 : ERC1967Upgrade.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.2;

import "IBeacon.sol";
import "Address.sol";
import "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 5 of 7 : IBeacon.sol
// SPDX-License-Identifier: MIT

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 6 of 7 : 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 7 of 7 : StorageSlot.sol
// SPDX-License-Identifier: MIT

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

Settings
{
  "evmVersion": "istanbul",
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "libraries": {
    "UUPSProxy.sol": {}
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","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"}]

608060405260405161078238038061078283398101604081905261002291610307565b818161004f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61041f565b60008051602061073b8339815191521461007957634e487b7160e01b600052600160045260246000fd5b6100858282600061008e565b50505050610484565b610097836100c4565b6000825111806100a45750805b156100bf576100bd838361010460201b6100291760201c565b505b505050565b6100cd81610130565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610129838360405180606001604052806027815260200161075b602791396101f0565b9392505050565b610143816102c560201b6100551760201c565b6101aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101cf60008051602061073b83398151915260001b6102cb60201b61005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060833b61024f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101a1565b600080856001600160a01b03168560405161026a91906103d0565b600060405180830381855af49150503d80600081146102a5576040519150601f19603f3d011682016040523d82523d6000602084013e6102aa565b606091505b5090925090506102bb8282866102ce565b9695505050505050565b3b151590565b90565b606083156102dd575081610129565b8251156102ed5782518084602001fd5b8160405162461bcd60e51b81526004016101a191906103ec565b60008060408385031215610319578182fd5b82516001600160a01b038116811461032f578283fd5b60208401519092506001600160401b038082111561034b578283fd5b818501915085601f83011261035e578283fd5b8151818111156103705761037061046e565b604051601f8201601f19908116603f011681019083821181831017156103985761039861046e565b816040528281528860208487010111156103b0578586fd5b6103c1836020830160208801610442565b80955050505050509250929050565b600082516103e2818460208701610442565b9190910192915050565b600060208252825180602084015261040b816040850160208701610442565b601f01601f19169190910160400192915050565b60008282101561043d57634e487b7160e01b81526011600452602481fd5b500390565b60005b8381101561045d578181015183820152602001610445565b838111156100bd5750506000910152565b634e487b7160e01b600052604160045260246000fd5b6102a8806104936000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610096565b565b606061004e838360405180606001604052806027815260200161024c602791396100ba565b9392505050565b3b151590565b90565b60006100917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100b5573d6000f35b3d6000fd5b6060833b61011e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161013991906101cc565b600060405180830381855af49150503d8060008114610174576040519150601f19603f3d011682016040523d82523d6000602084013e610179565b606091505b5091509150610189828286610193565b9695505050505050565b606083156101a257508161004e565b8251156101b25782518084602001fd5b8160405162461bcd60e51b815260040161011591906101e8565b600082516101de81846020870161021b565b9190910192915050565b600060208252825180602084015261020781604085016020870161021b565b601f01601f19169190910160400192915050565b60005b8381101561023657818101518382015260200161021e565b83811115610245576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202920f5adf396ed3c399e393f96e4aaba8f44eb306e275b55ae57893f81e6362064736f6c63430008020033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000005088be9a441737d019541d75e078bba8ffff2c2a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e4c3a77a550000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000002791bca1f2de4661ed88a30c99a7a9449aa84174000000000000000000000000fe56793f6d7f93fe44b7a290a92b4320a9198f24000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000005088be9a441737d019541d75e078bba8ffff2c2a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e4c3a77a550000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000002791bca1f2de4661ed88a30c99a7a9449aa84174000000000000000000000000fe56793f6d7f93fe44b7a290a92b4320a9198f24000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _logic (address): 0x5088be9a441737d019541d75e078bba8ffff2c2a
Arg [1] : _data (bytes): 0xc3a77a550000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000002791bca1f2de4661ed88a30c99a7a9449aa84174000000000000000000000000fe56793f6d7f93fe44b7a290a92b4320a9198f240000000000000000000000000000000000000000000000000000000000000006

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 0000000000000000000000005088be9a441737d019541d75e078bba8ffff2c2a
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e4
Arg [3] : c3a77a550000000000000000000000000132613b3a1061816f4661ad30161291
Arg [4] : 0e3cce0b0000000000000000000000000132613b3a1061816f4661ad30161291
Arg [5] : 0e3cce0b0000000000000000000000000132613b3a1061816f4661ad30161291
Arg [6] : 0e3cce0b0000000000000000000000000132613b3a1061816f4661ad30161291
Arg [7] : 0e3cce0b0000000000000000000000002791bca1f2de4661ed88a30c99a7a944
Arg [8] : 9aa84174000000000000000000000000fe56793f6d7f93fe44b7a290a92b4320
Arg [9] : a9198f2400000000000000000000000000000000000000000000000000000000
Arg [10] : 0000000600000000000000000000000000000000000000000000000000000000


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
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.