Contract 0x44a54941E572C526a599B0ebe27A14A5BF159333 5

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xaa3baaf369aac131167f5b5f8a11f1188cfe93da10d8582ef633aeb87fb92fe5Grant Role37894642022-07-21 9:29:4419 days 3 hrs ago0x0132613b3a1061816f4661ad301612910e3cce0b IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.2994644970790
0x62b04dc7bf45fe43fee7cc614569f0929bb7fcaaa11c83b0de1a5823684def3cGrant Role37894622022-07-21 9:29:3319 days 3 hrs ago0x0132613b3a1061816f4661ad301612910e3cce0b IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.2995239902810
0xb64d6a62eb2fb6960686357a53c2d128986e524101c9e78caff73ca90166f46cGrant Role37894612022-07-21 9:29:2719 days 3 hrs ago0x0132613b3a1061816f4661ad301612910e3cce0b IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.2995239929920
0xc7266ea1c1099fb9d44ebde0c55ec46ae7d3df30f419201e6d0a4d3c2cb4441cCollect Fees37183652022-07-16 16:51:2923 days 20 hrs ago0xc385ee2a513ad2f7fcdee6f0f212744c2102a04e IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.4338463901420
0xf219b83c680209d82fb477dc0255059222eb0858ad248190ccb0664b3e8118adComplete Withdra...34429182022-06-28 13:08:2941 days 23 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.5086153657370
0x5079a357c62d143447108a57266971f5892253d5d71a2ad8eb2470a26b869a52Withdraw34428772022-06-28 13:04:3641 days 23 hrs ago0xf380906e6f55094191ee190fe3752a08f18a1eb1 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330.75 CRO0.77395 5,000
0xd06687dff421737c1da363c09dc95e16ccbf50861e29577629940eb7390478f5Complete Deposit34157692022-06-26 18:13:1143 days 18 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.5230634326220
0xa354685c4d88dafbe44b9d6512c25f50bbca6cbd263a144a1bec2b54d4f9b93cDeposit34157312022-06-26 18:09:3543 days 18 hrs ago0x7b14a990a6482c8d414415147b41378d92255d97 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330.75 CRO0.6877976310050
0x4496c45fa053abb35c692183823773cb18224aa9abc5bc4cdaac11febaceff88Set Reserves Rec...33462062022-06-22 4:14:0648 days 8 hrs ago0x0132613b3a1061816f4661ad301612910e3cce0b IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.2725660448210
0x536c55e4e690cde6f28cccac43898f9151f8deaac92e168c8170f8f564b0eb28Set Reserves Rat...33462042022-06-22 4:13:5448 days 8 hrs ago0x0132613b3a1061816f4661ad301612910e3cce0b IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.2566416471770
0xfb2bb105f027235094e53ceb556f84c1c32f1db83d360f316395a3b236de3151Upgrade To33462022022-06-22 4:13:4348 days 8 hrs ago0x0132613b3a1061816f4661ad301612910e3cce0b IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.3302920120070
0x962764480cb20abe3342d6a64801d459c857609b0e0233d7d2eade0cb0e66cc4Set Yield Rate B...32546902022-06-16 3:44:4354 days 9 hrs ago0x0132613b3a1061816f4661ad301612910e3cce0b IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.1833723424360
0xa1a0bf1f75161e57bbc81c28d4698e1e57ce26522031b0e0f183ab99291f463cComplete Deposit32337782022-06-14 18:39:3055 days 18 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.5240568269660
0x997f3695d6b36880e10f353e3390c76d81dac7be5ec4642b9d6d551a00ea8e02Deposit32337372022-06-14 18:35:3655 days 18 hrs ago0xf380906e6f55094191ee190fe3752a08f18a1eb1 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330.75 CRO0.76634 5,000
0xc1f49433652f37216621be9fabe4df29449cb6f73c68ba2cd52db5dea96b3dd2Complete Withdra...31638702022-06-10 4:00:2560 days 8 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.5099728416770
0x4fe79121d1c567012f5a9bdea3b15c8cbbab18c40c1c11bd950ffc895a621f9bWithdraw31638332022-06-10 3:56:5560 days 8 hrs ago0x7e6eb2123463ca93bd0ef64bbcdde8db16d77c42 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330.75 CRO0.771455617986 4,983.563423687
0x48153602d4df50c679f5646138a5e62d18acb111121d4bf478b3c968d955b4edComplete Withdra...31154422022-06-06 23:16:5863 days 13 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.510168380930
0xa7197f89cb9b67c5b8a4cf91a1860a97417411749231c362a54c1f178dee1215Withdraw31154002022-06-06 23:12:5963 days 13 hrs ago0xe0f20c6669e93bee9b0eb7c3566e1f8509822c96 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330.75 CRO0.771811252687 4,985.474334593
0xe2e73677699ac81942840c0dea48b04997efb728af748b389a88cd15bfc5ec0fComplete Deposit31110812022-06-06 16:22:4463 days 20 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.5245541551520
0xeb451f9c3b7a4fa32d61e7ad59e363e885df66884c926163d1ddb64bfd47dcc2Deposit31110442022-06-06 16:19:1363 days 20 hrs ago0xe0f20c6669e93bee9b0eb7c3566e1f8509822c96 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330.75 CRO0.764139268471 4,985.641285016
0xc1e92260dca655dfacfc07c1436116279bb5408ffe27472c22a05341bf808a08Complete Withdra...28569822022-05-20 19:57:4380 days 16 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.5112929427380
0x9610bc53a99735ed255bacb3d5dc91cb28323604de7e520ef5e12a92d66bf241Withdraw28569422022-05-20 19:53:5280 days 17 hrs ago0x1eb6013db39fa042e6cecd3673680893431b9534 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330.75 CRO0.773391064391 4,995.291843589
0x3ea4b1ac984689eb48bfec1cd2c736d7594e6d9a281898fd71be53af04655c0eComplete Deposit28527862022-05-20 13:13:3480 days 23 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.5256444690120
0xa8cc81b428b75659df5bc9a94fd319c24c56a28239e31059b580083666294bfeDeposit28527432022-05-20 13:09:2480 days 23 hrs ago0x1eb6013db39fa042e6cecd3673680893431b9534 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330.75 CRO0.765640290888 4,995.434734506
0x733e74ee9ea96ff6cbd1055b285ea045646ea63e68abf684ef1ff77048997078Complete Withdra...28208272022-05-18 10:01:5283 days 2 hrs ago0x9c467162f24169a4f9bd4aa4e4d607bc1f9b0159 IN  0x44a54941e572c526a599b0ebe27a14a5bf1593330 CRO0.5114290107070
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xc7266ea1c1099fb9d44ebde0c55ec46ae7d3df30f419201e6d0a4d3c2cb4441c37183652022-07-16 16:51:2923 days 20 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330xc385ee2a513ad2f7fcdee6f0f212744c2102a04e28.125 CRO
0x5079a357c62d143447108a57266971f5892253d5d71a2ad8eb2470a26b869a5234428772022-06-28 13:04:3641 days 23 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330xf380906e6f55094191ee190fe3752a08f18a1eb10.125 CRO
0xa354685c4d88dafbe44b9d6512c25f50bbca6cbd263a144a1bec2b54d4f9b93c34157312022-06-26 18:09:3543 days 18 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330x7b14a990a6482c8d414415147b41378d92255d970.125 CRO
0x997f3695d6b36880e10f353e3390c76d81dac7be5ec4642b9d6d551a00ea8e0232337372022-06-14 18:35:3655 days 18 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330xf380906e6f55094191ee190fe3752a08f18a1eb10.125 CRO
0x4fe79121d1c567012f5a9bdea3b15c8cbbab18c40c1c11bd950ffc895a621f9b31638332022-06-10 3:56:5560 days 8 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330x7e6eb2123463ca93bd0ef64bbcdde8db16d77c420.125 CRO
0xa7197f89cb9b67c5b8a4cf91a1860a97417411749231c362a54c1f178dee121531154002022-06-06 23:12:5963 days 13 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330xe0f20c6669e93bee9b0eb7c3566e1f8509822c960.125 CRO
0xeb451f9c3b7a4fa32d61e7ad59e363e885df66884c926163d1ddb64bfd47dcc231110442022-06-06 16:19:1363 days 20 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330xe0f20c6669e93bee9b0eb7c3566e1f8509822c960.125 CRO
0x9610bc53a99735ed255bacb3d5dc91cb28323604de7e520ef5e12a92d66bf24128569422022-05-20 19:53:5280 days 17 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330x1eb6013db39fa042e6cecd3673680893431b95340.125 CRO
0xa8cc81b428b75659df5bc9a94fd319c24c56a28239e31059b580083666294bfe28527432022-05-20 13:09:2480 days 23 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330x1eb6013db39fa042e6cecd3673680893431b95340.125 CRO
0xd3b6c3c204326bf5d8f4382bffe0dcc14ebe243f27cc01201d84c1da7a2a68cb28207812022-05-18 9:57:2783 days 2 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330xf2e4c723fe7ff7eed50bfda9fe5b8d0bb7d7babf0.125 CRO
0xc79ba7844348abb6ddc35a25307d6eb2c7642ca6c23b8e9fd2ffafd54ac1790827618402022-05-14 11:31:0587 days 1 hr ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330x5625f5af8d36015319163485382ec41fd674001a0.125 CRO
0x5584efe5f706e6fad8d8adafd5811a95e72609330ae952a96d788576f8074bcf27438942022-05-13 6:40:2188 days 6 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330x37d6da103946ad22c18e75356f9ea9616b96fc2a0.125 CRO
0x4776c5e0b1c07012fa7ce8b58bebf6a22a704f592004a6d636f18fd9cef059e726613892022-05-07 15:21:3893 days 21 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330x3f9620cdc74115bf26abf8273cbaea6c51dc8ae70.125 CRO
0xff71aa9cd30afad587cafbdaae845fffe5145b64dceed6a4b2282cde757eb87726417482022-05-06 7:01:3595 days 5 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330xe74b99f5882b21baff9d91680d1d9a23f8d1a81a0.125 CRO
0xcc4c4f5dc3b2c98177d242ff733caf3c7c0f0d00cd40537aaa86fe6ad9da838126396762022-05-06 3:37:0595 days 9 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330x3f9620cdc74115bf26abf8273cbaea6c51dc8ae70.125 CRO
0x33a5a6b447203800fe7befcc157dd2939af6f59ee3217290567e68059cd742ab26148332022-05-04 10:17:2297 days 2 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330xb43cf4012ebf00e9ea330b10911084c3b99689ee0.125 CRO
0x919f3b522c138f27008f81b1b18588b4c92294d86ce7b8c054103a8863f0c98726123612022-05-04 6:13:1197 days 6 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330xe74b99f5882b21baff9d91680d1d9a23f8d1a81a0.125 CRO
0x5b360c477865ba200f2d3664d610be1f5958e555e99612dde166f9eb03393cc025923872022-05-02 21:02:0598 days 15 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330xa518845ef77b6d31cb2579c0b1a1090ee6b3c72c0.125 CRO
0xd1d32a7b99ea9b7b2cec8e6ea7a74288d06c63367618156d86180407c32c752a25882182022-05-02 13:59:3498 days 22 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330xb43cf4012ebf00e9ea330b10911084c3b99689ee0.125 CRO
0xd62de94c1b0dd824d20c4fbd00da895b2aca2e9979fba5f5c0e0dd12739717fe25562682022-04-30 8:40:50101 days 4 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330x55d83370eb6c4a4b0f41a9024c74ffa66c9252cd0.125 CRO
0x2a7947e91f4212402256e251be318e74d0090ae522bb334809100c67ba83ed5425480992022-04-29 18:53:37101 days 18 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330x3aaa68000e4cfc135a573e987ad84bafaa8437f30.125 CRO
0x345f2a84620472d4aad8ab322dcbaa7ba7e11b5fb6fbe7b743de2d2d73734f4225138452022-04-27 6:24:23104 days 6 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330x37d6da103946ad22c18e75356f9ea9616b96fc2a0.125 CRO
0x66e16edfa816989ad85be6173c9340dd1870cc5256b9ca940422bf8ebd22cade23942302022-04-18 15:18:12112 days 21 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330xa518845ef77b6d31cb2579c0b1a1090ee6b3c72c0.125 CRO
0x7fcb435cb172c7efede5aec5a3540830df6b1217ca71d44ea16821cc8481036523522322022-04-15 15:19:49115 days 21 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330xdbcaabcc51522ac2184c7c0d1fbe0630233de0a30.125 CRO
0x83628f1667c36a5f9001ee99efeb9dd594c35d370c32d0caf4fe4611df99e0ef23457032022-04-15 3:55:52116 days 8 hrs ago 0x44a54941e572c526a599b0ebe27a14a5bf1593330x55d83370eb6c4a4b0f41a9024c74ffa66c9252cd0.125 CRO
[ Download CSV Export 
Loading

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

Contract Name:
UUPSProxy

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
istanbul 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",
        "abi"
      ]
    }
  }
}

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

608060405260405161078238038061078283398101604081905261002291610307565b818161004f60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61041f565b60008051602061073b8339815191521461007957634e487b7160e01b600052600160045260246000fd5b6100858282600061008e565b50505050610484565b610097836100c4565b6000825111806100a45750805b156100bf576100bd838361010460201b6100291760201c565b505b505050565b6100cd81610130565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610129838360405180606001604052806027815260200161075b602791396101f0565b9392505050565b610143816102c560201b6100551760201c565b6101aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101cf60008051602061073b83398151915260001b6102cb60201b61005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060833b61024f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101a1565b600080856001600160a01b03168560405161026a91906103d0565b600060405180830381855af49150503d80600081146102a5576040519150601f19603f3d011682016040523d82523d6000602084013e6102aa565b606091505b5090925090506102bb8282866102ce565b9695505050505050565b3b151590565b90565b606083156102dd575081610129565b8251156102ed5782518084602001fd5b8160405162461bcd60e51b81526004016101a191906103ec565b60008060408385031215610319578182fd5b82516001600160a01b038116811461032f578283fd5b60208401519092506001600160401b038082111561034b578283fd5b818501915085601f83011261035e578283fd5b8151818111156103705761037061046e565b604051601f8201601f19908116603f011681019083821181831017156103985761039861046e565b816040528281528860208487010111156103b0578586fd5b6103c1836020830160208801610442565b80955050505050509250929050565b600082516103e2818460208701610442565b9190910192915050565b600060208252825180602084015261040b816040850160208701610442565b601f01601f19169190910160400192915050565b60008282101561043d57634e487b7160e01b81526011600452602481fd5b500390565b60005b8381101561045d578181015183820152602001610445565b838111156100bd5750506000910152565b634e487b7160e01b600052604160045260246000fd5b6102a8806104936000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610096565b565b606061004e838360405180606001604052806027815260200161024c602791396100ba565b9392505050565b3b151590565b90565b60006100917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100b5573d6000f35b3d6000fd5b6060833b61011e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161013991906101cc565b600060405180830381855af49150503d8060008114610174576040519150601f19603f3d011682016040523d82523d6000602084013e610179565b606091505b5091509150610189828286610193565b9695505050505050565b606083156101a257508161004e565b8251156101b25782518084602001fd5b8160405162461bcd60e51b815260040161011591906101e8565b600082516101de81846020870161021b565b9190910192915050565b600060208252825180602084015261020781604085016020870161021b565b601f01601f19169190910160400192915050565b60005b8381101561023657818101518382015260200161021e565b83811115610245576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202920f5adf396ed3c399e393f96e4aaba8f44eb306e275b55ae57893f81e6362064736f6c63430008020033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000003689d3b912d4d73ffcaad3a80861e7caf2d4f049000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e4c3a77a550000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b0000000000000000000000000132613b3a1061816f4661ad301612910e3cce0b00000000000000000000000066e428c3f67a68878562e79a0234c1f83c20877000000000000000000000000073ce60416035b8d7019f6399778c14ccf5c9c7a1000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

90:129:6:-:0;;;;;;2833:11:4;:9;:11::i;:::-;90:129:6;;2610:11:4;2257:110;2332:28;2342:17;:15;:17::i;:::-;2332:9;:28::i;:::-;2257:110::o;6170:198:0:-;6253:12;6284:77;6305:6;6313:4;6284:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6277:84;6170:198;-1:-1:-1;;;6170:198:0:o;718:377::-;1034:20;1080:8;;;718:377::o;1542:147:5:-;1669:4;1645:38::o;1169:140:1:-;1236:12;1267:35;867:66:2;1217:54;-1:-1:-1;;;;;1217:54:2;;1138:140;1267:35:1;1260:42;;1169:140;:::o;883:895:4:-;1221:14;1218:1;1215;1202:34;1435:1;1432;1416:14;1413:1;1397:14;1390:5;1377:60;1511:16;1508:1;1505;1490:38;1549:6;1616:66;;;;1731:16;1728:1;1721:27;1616:66;1651:16;1648:1;1641:27;6554:387:0;6695:12;1034:20;;6719:69;;;;-1:-1:-1;;;6719:69:0;;883:2:7;6719:69:0;;;865:21:7;922:2;902:18;;;895:30;961:34;941:18;;;934:62;-1:-1:-1;;;1012:18:7;;;1005:36;1058:19;;6719:69:0;;;;;;;;;6800:12;6814:23;6841:6;-1:-1:-1;;;;;6841:19:0;6861:4;6841:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6799:67;;;;6883:51;6900:7;6909:10;6921:12;6883:16;:51::i;:::-;6876:58;6554:387;-1:-1:-1;;;;;;6554:387:0:o;7161:692::-;7307:12;7335:7;7331:516;;;-1:-1:-1;7365:10:0;7358:17;;7331:516;7476:17;;:21;7472:365;;7670:10;7664:17;7730:15;7717:10;7713:2;7709:19;7702:44;7619:145;7809:12;7802:20;;-1:-1:-1;;;7802:20:0;;;;;;;;:::i;14:274:7:-;;181:6;175:13;197:53;243:6;238:3;231:4;223:6;219:17;197:53;:::i;:::-;266:16;;;;;151:137;-1:-1:-1;;151:137:7:o;293:383::-;;442:2;431:9;424:21;474:6;468:13;517:6;512:2;501:9;497:18;490:34;533:66;592:6;587:2;576:9;572:18;567:2;559:6;555:15;533:66;:::i;:::-;660:2;639:15;-1:-1:-1;;635:29:7;620:45;;;;667:2;616:54;;414:262;-1:-1:-1;;414:262:7:o;1088:258::-;1160:1;1170:113;1184:6;1181:1;1178:13;1170:113;;;1260:11;;;1254:18;1241:11;;;1234:39;1206:2;1199:10;1170:113;;;1301:6;1298:1;1295:13;1292:2;;;1336:1;1327:6;1322:3;1318:16;1311:27;1292:2;;1141:205;;;:::o

Swarm Source

ipfs://2920f5adf396ed3c399e393f96e4aaba8f44eb306e275b55ae57893f81e63620
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.