Contract 0xeb074cc764f20d8fe4317ab63f45a85bce2becb1

Contract Overview

Balance:
173,494.728981104853019073 CRO

CRO Value:
$19,188.52 (@ $0.11/CRO)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x4dc7257f099aadef981f22d6bddd7355f7f72ef64bc44d2ce95b533097c45f1cHarvest49114662022-10-03 1:43:022 mins ago0xdc8a0ed8288dba6c77fbb4469194df91551e2b68 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.379118422082 4,907.491257073
0xd2acb815e52aa71f3b3fc6573e593e0cb5a1a177852688f232c75908be73fc6aUnstake49096632022-10-02 22:52:422 hrs 52 mins ago0x245216e531e419168f83c0e528f59d578b034e2d IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.614955 5,000
0x9cea96e56fee74cf432637697181aebdccdd6b7fee44832c718144388a6e1547Harvest49096602022-10-02 22:52:252 hrs 53 mins ago0x245216e531e419168f83c0e528f59d578b034e2d IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.386265 5,000
0x96f80337c948f88f7402217d849a065d3a377f0bf2f6fd693a1211d1828bd030Harvest49090252022-10-02 21:52:233 hrs 53 mins ago0x583866217c241cc69f01b0f0c4af9047d8cfddf9 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.37912708486 4,907.603392232
0x9632fe69869f3838b6ca96e30e356964f1f1b3defea8a1d27d544dcfa06f0507Harvest49088552022-10-02 21:36:204 hrs 9 mins ago0xe2866ca43f16e74399f49cdea9462a423c95070f IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.3790118194810
0xfbba2d1b75a7c4d93e94438504046c3618b6f58285d0826881bbd2ac51a4a7b2Harvest49085122022-10-02 21:03:574 hrs 41 mins ago0xb76e0a38519afe6d7dcaf57adcd385b33d0b4ed8 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.3790130227420
0x79856a9fc93e6aa1e8d25b96784847a8ac6e2ac4ea5cf1b9c42d4343c9afe088Harvest49078722022-10-02 20:03:205 hrs 42 mins ago0x6d7cc1045bb46e1c697f4d3db88df3e2453e8c5b IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.379131115965 4,907.655572804
0x145b2429c292019c44324b415a8291233c70a7b0d9bd4ad783ec95347e942a2cHarvest49076232022-10-02 19:39:386 hrs 5 mins ago0x22f8a370cb3fec41acf3c22ff78e000b0a27b741 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.3789572405180
0xdf0dac11f6472adfbc988b7b934818913627f1309bba9cbeb33e0a9f0236caeeHarvest49072712022-10-02 19:06:196 hrs 39 mins ago0xa152eb75aa843f5b3ed32bb21991f740efb97e36 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.3790173370910
0x769e7452957e598d51f6a956e1aa43567a07c4530414a900d5c564b89bde3099Harvest49070722022-10-02 18:47:236 hrs 58 mins ago0x6f0cebb6376ed3469a3b30cd3b3758ac68a833b4 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.379172523903 4,908.191577077
0x74daa946b604c006df17643404d2728f383fb7e913c3d2192d7650751412bee4Stake49069852022-10-02 18:39:097 hrs 6 mins ago0x35152346a603ec69b96c6e3d8478b8d80d51aafa IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.853675 5,000
0x2fc95be35228670b0485492d89c94ac321d7e1162312a5f7590de99e2100e743Harvest49059922022-10-02 17:05:178 hrs 40 mins ago0xa789ca939e57d7c68d1bc3f13a81d66996e3f758 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.3790217883450
0x915b0356f1c1cc9529fe1d487ac7871dbf81dc619e80a360058a59abf8ae0b2cHarvest49049442022-10-02 15:26:0310 hrs 19 mins ago0xb76e0a38519afe6d7dcaf57adcd385b33d0b4ed8 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.3790254532730
0x465fdd32cf673faa2c5f919743eef4a5d433db45e15cbaebf69678bc7da78c42Harvest49049082022-10-02 15:22:3910 hrs 22 mins ago0xe33736e7357f9edc248baec97d66d90e8c9a8ebc IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.379141448418 4,907.789321048
0x84a974e734e534f75147e0fd5ffe888695e91e086e704a3d86e8218668b1509eHarvest49047732022-10-02 15:09:5410 hrs 35 mins ago0x6e85700d08fabbc3bfa7d189e04c5be91bac9010 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.379494278248 4,912.356520122
0xebd48fe779edbd6c45e742ec7c3836b5c63b943f4e502b81ea1216c3f2e272f4Unstake49041022022-10-02 14:06:3211 hrs 38 mins ago0x401cbce3ba2414611e4df40040df3db2b198a3b8 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.6149550
0x9d3548caf39873147b625af47edd0d9d5284f8ce92e7b49a44f10e94589a16e6Harvest49040982022-10-02 14:06:0911 hrs 39 mins ago0x401cbce3ba2414611e4df40040df3db2b198a3b8 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.4525644401670
0xdd8ac32466d3ebee00cf79c558a32abac76c881c9ced37c33acefae3808af67fHarvest49012462022-10-02 9:36:1816 hrs 9 mins ago0x789e372442d31488a2d3565d916f812c7e400f16 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.379154403381 4,907.957016321
0xb538b114a8eddd123b7f39ee3a3078d492492515af776e1d1c2c2c1d992c1b51Harvest49005482022-10-02 8:30:1917 hrs 15 mins ago0x9397d779c63faaf7f2e4c358a35e58bf53cccfa1 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.379156909036 4,907.989450721
0xde8890f704a486ecede387d88ced3515ea4c5f2b2dc730aa02f1080a2099ea99Harvest48994132022-10-02 6:42:5619 hrs 2 mins ago0x802eba580798dd6ecdcf06d154bd35a020a5e1e6 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.379160961053 4,908.04190198
0x9a88d30b0b1a21baf8646fd69be83b260b40a2ca94e6a77d9016d31ad978390bHarvest48992262022-10-02 6:25:1619 hrs 20 mins ago0x90810016abda4b7f71e006cfb17020cd40abfdb3 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.3789868884030
0x927d4b112dbc297f52815e9c782d7417a8955c4fe8048c98e0ff21113568878cHarvest48985872022-10-02 5:24:5420 hrs 20 mins ago0x3f216ccc5b8e6c7ef29e0a1a75f22b902445482c IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.3790480669840
0xee39228e0b13b86aa447a559c90cebc5e3e86d472856672246b46131b4495a10Harvest48978172022-10-02 4:12:1221 hrs 33 mins ago0xd537c8f98de0c60955d91d4f4609c936ef9254a9 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.37916670764 4,908.11628857
0x58d908979024628635bc955e3bf8a205a8d0b01e683db2281c87b3f113d02414Harvest48975602022-10-02 3:47:5421 hrs 57 mins ago0xd156f87ea9f25b7820582b460553ee621eddc258 IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.379167633099 4,908.128268155
0x2c74488503ecbc40ab536d19215a69964ac72f9a6ac0cdbc7e7aa4b47bc212b2Stake48949552022-10-01 23:41:401 day 2 hrs ago0x6be7682afc3bc3f700f8400e97ab62a77ed65c8f IN  0xeb074cc764f20d8fe4317ab63f45a85bce2becb10 CRO0.778675 5,000
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x4dc7257f099aadef981f22d6bddd7355f7f72ef64bc44d2ce95b533097c45f1c49114662022-10-03 1:43:022 mins ago 0xeb074cc764f20d8fe4317ab63f45a85bce2becb10xdc8a0ed8288dba6c77fbb4469194df91551e2b681,481.997223769121566662 CRO
0x43f14f5a30957a2de484b34e50d08d7823b5e0bb7a0a692e45550aa71a5e130449114622022-10-03 1:42:392 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb11.935 CRO
0x9a53a1788c0e4c557448f43efc87379cf4b2fa958e7c85d834e9e02e8c75a5f149113572022-10-03 1:32:4612 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb11.1025 CRO
0xc9c1a0b1e1753b478e519bd4d48c6f8efd1d8892e8de237c922ae66aafde1be249112882022-10-03 1:26:1419 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb11.59 CRO
0xac41e9ec2428bf5027ea8056f8532ff17c8084bcf9286329391c3374a4d3d3d749112842022-10-03 1:25:5119 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb11.575 CRO
0x85998807603eeaf5fedddff6812d59e4183fe7d1079b41b1df18daab689a79db49112812022-10-03 1:25:3419 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb11.575 CRO
0xc31186a78de68cadca7971a3ac17905b240f31cb8ff3a576f38bba1173b4b3ad49112582022-10-03 1:23:2422 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb11.65 CRO
0x8860d92327def31e26d81545f4fc14e726c4d3c4d2e56cc370cfa519847d9d1d49112412022-10-03 1:21:4823 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb137.5 CRO
0xf272fcfc84d44fd42e8f99cf1234772dbad63166e9c8d99bf9c33b0c6606205b49112212022-10-03 1:19:5525 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb10.825 CRO
0x68a82ad787f079972377c78b630ccb42f44e642bb9a111dc86641557c8e097a749111732022-10-03 1:15:2430 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb10.0525 CRO
0x93a5e39aaa1fae2ca9d10c9f35c799459497884149bf8f0598bafaf2994194db49111482022-10-03 1:13:0232 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb10.0525 CRO
0x33a109bdcf712024822d00dd9d6187742834efd2baac9516927bfd3df84b29f149110912022-10-03 1:07:4037 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb10.15 CRO
0xec244f4b57e93a730cf6786c2a37e8dcbcec172dbad61a72d89c17e07c8758ef49110372022-10-03 1:02:3342 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb11.2 CRO
0x55bec35f854faea9007ef2296d7866b18428dab1cac0f753acd217ff816ed46549109962022-10-03 0:58:4046 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb12.4075 CRO
0xb0158fb61867a0f80336c4fccba3b4e90ebf4e7642c4cd69ccc3a03c8a19406449109902022-10-03 0:58:0647 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb119.1625 CRO
0x95be5ebc1edd3a7771676ea848c6d0df553e2ebd714d958aa5ebde5e108b8abe49109892022-10-03 0:58:0047 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb12.4075 CRO
0x26316552cb75e642bde5adc856c1d82a52412ceb7e9a3846cdd954cc8bbf2a9949109822022-10-03 0:57:2048 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb14.725 CRO
0x978e7edafbcc473bff7af3fce44dc9991a45efebb88d2b22faf3d254d58fe7b649109782022-10-03 0:56:5848 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb10.36 CRO
0x720c9d3146d88b1baafbf91a9ab56e8d0b28b721f6977689aa03d0344fb8160049109682022-10-03 0:56:0149 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb110.8 CRO
0x6db3a6ca504e1d4050c15ec31ed3ddb3333f698911220f2d99fc38a99eed2d3949109682022-10-03 0:56:0149 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb10.18 CRO
0x856f05398499673099e5ee40ee9ab6c3c5d6e86e1697afc3951d3969500fc78949109622022-10-03 0:55:2850 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb10.18 CRO
0x4767ab8acba3c6cb27eab78ec1555e98ff2f92a5439479c0f12d45198839504649109572022-10-03 0:54:5950 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb10.375 CRO
0xee1316ce3ce4d1ef5afc9c0d926f705aeba21249f4be127f151ecd9d60a93fa449109462022-10-03 0:53:5751 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb10.18 CRO
0x47f96e5cf8069184295b3d67b1c5b33fc7d9c1dd47dc576ba892eca0e6454b4549109372022-10-03 0:53:0752 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb10.18 CRO
0x4e84d19c62b84378d632fac94019c0deb18c6d08fe269aec677983a7eb4b56ec49109312022-10-03 0:52:3352 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0xeb074cc764f20d8fe4317ab63f45a85bce2becb10.18 CRO
[ Download CSV Export 
Loading

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

Contract Name:
ERC1967Proxy

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-03-18
*/

// File contracts/proxy/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 {
        // solhint-disable-next-line no-inline-assembly
        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 contracts/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 contracts/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;
        // solhint-disable-next-line no-inline-assembly
        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");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @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");

        // solhint-disable-next-line avoid-low-level-calls
        (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");

        // solhint-disable-next-line avoid-low-level-calls
        (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");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private 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

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


// File contracts/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 contracts/proxy/ERC1967/ERC1967Upgrade.sol

pragma solidity ^0.8.2;



/**
 * @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 {
        _setImplementation(newImplementation);
        emit Upgraded(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
            _setImplementation(newImplementation);
            emit Upgraded(newImplementation);
        }
    }

    /**
     * @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);
        }
    }

    /**
     * @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;
    }
}


// File contracts/proxy/ERC1967/ERC1967Proxy.sol

pragma solidity ^0.8.0;


/**
 * @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();
    }
}

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

6080604052604051610772380380610772833981016040819052610022916102f7565b61004d60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61040f565b60008051602061072b8339815191521461007757634e487b7160e01b600052600160045260246000fd5b6100838282600061008a565b5050610474565b610093836100f4565b6040516001600160a01b038416907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a26000825111806100d45750805b156100ef576100ed83836101b460201b6100291760201c565b505b505050565b610107816101e060201b6100551760201c565b61016e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b8061019360008051602061072b83398151915260001b6101e660201b61005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606101d9838360405180606001604052806027815260200161074b602791396101e9565b9392505050565b3b151590565b90565b6060833b6102485760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610165565b600080856001600160a01b03168560405161026391906103c0565b600060405180830381855af49150503d806000811461029e576040519150601f19603f3d011682016040523d82523d6000602084013e6102a3565b606091505b5090925090506102b48282866102be565b9695505050505050565b606083156102cd5750816101d9565b8251156102dd5782518084602001fd5b8160405162461bcd60e51b815260040161016591906103dc565b60008060408385031215610309578182fd5b82516001600160a01b038116811461031f578283fd5b60208401519092506001600160401b038082111561033b578283fd5b818501915085601f83011261034e578283fd5b8151818111156103605761036061045e565b604051601f8201601f19908116603f011681019083821181831017156103885761038861045e565b816040528281528860208487010111156103a0578586fd5b6103b1836020830160208801610432565b80955050505050509250929050565b600082516103d2818460208701610432565b9190910192915050565b60006020825282518060208401526103fb816040850160208701610432565b601f01601f19169190910160400192915050565b60008282101561042d57634e487b7160e01b81526011600452602481fd5b500390565b60005b8381101561044d578181015183820152602001610435565b838111156100ed5750506000910152565b634e487b7160e01b600052604160045260246000fd5b6102a8806104836000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610096565b565b606061004e838360405180606001604052806027815260200161024c602791396100ba565b9392505050565b3b151590565b90565b60006100917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100b5573d6000f35b3d6000fd5b6060833b61011e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161013991906101cc565b600060405180830381855af49150503d8060008114610174576040519150601f19603f3d011682016040523d82523d6000602084013e610179565b606091505b5091509150610189828286610193565b9695505050505050565b606083156101a257508161004e565b8251156101b25782518084602001fd5b8160405162461bcd60e51b815260040161011591906101e8565b600082516101de81846020870161021b565b9190910192915050565b600060208252825180602084015261020781604085016020870161021b565b601f01601f19169190910160400192915050565b60005b8381101561023657818101518382015260200161021e565b83811115610245576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209b8470f06e8a3960c912103fc2be177edaad69584ee3c7d2809ee737e79408e764736f6c63430008020033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564000000000000000000000000a1fc967fda140da8ee241cca5191c746d818f75c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c4728cdbca000000000000000000000000b9a81e121d8c9d619682bb9ddb6823439178f2f8000000000000000000000000b9a81e121d8c9d619682bb9ddb6823439178f2f80000000000000000000000005bd97307a40dfbfdbaef4b3d997adb816f2dadcc00000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000009fdf42f6e480000000000000000000000000000000000000000000000000000011c37937e0800000000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

21600:848:0:-:0;;;;;;2943:11;:9;:11::i;:::-;21600:848;;2711:11;2347:113;2424:28;2434:17;:15;:17::i;:::-;2424:9;:28::i;:::-;2347:113::o;10164:200::-;10247:12;10279:77;10300:6;10308:4;10279:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;10272:84;10164:200;-1:-1:-1;;;10164:200:0:o;4479:422::-;4846:20;4885:8;;;4479:422::o;13340:151::-;13469:4;13444:40::o;22303:142::-;22370:12;22402:35;15102:66;15463:54;-1:-1:-1;;;;;15463:54:0;;15383:142;22402:35;22395:42;;22303:142;:::o;940:915::-;1340:14;1337:1;1334;1321:34;1558:1;1555;1539:14;1536:1;1520:14;1513:5;1500:60;1637:16;1634:1;1631;1616:38;1677:6;1746:38;;;;1818:16;1815:1;1808:27;1746:38;1765:16;1762:1;1755:27;10558:423;10669:12;4846:20;;10694:69;;;;-1:-1:-1;;;10694:69:0;;883:2:1;10694:69:0;;;865:21:1;922:2;902:18;;;895:30;961:34;941:18;;;934:62;-1:-1:-1;;;1012:18:1;;;1005:36;1058:19;;10694:69:0;;;;;;;;;10837:12;10851:23;10878:6;-1:-1:-1;;;;;10878:19:0;10898:4;10878:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10836:67;;;;10921:52;10939:7;10948:10;10960:12;10921:17;:52::i;:::-;10914:59;10558:423;-1:-1:-1;;;;;;10558:423:0:o;10989:742::-;11104:12;11133:7;11129:595;;;-1:-1:-1;11164:10:0;11157:17;;11129:595;11278:17;;:21;11274:439;;11541:10;11535:17;11602:15;11589:10;11585:2;11581:19;11574:44;11489:148;11684:12;11677:20;;-1:-1:-1;;;11677:20:0;;;;;;;;:::i;14:274:1:-;;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:1: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:1;620:45;;;;667:2;616:54;;414:262;-1:-1:-1;;414:262:1: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://9b8470f06e8a3960c912103fc2be177edaad69584ee3c7d2809ee737e79408e7
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.