Contract 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f 14

Contract Overview

Balance:
112.877239275034436502 ETH

ETH Value:
$179,633.97 (@ $1,591.41/ETH)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xd68d92f67dc6f51c3a4c175e3cf631f78988a0fd93b93a61961cecb22b161af9Deposit57459082023-09-26 2:45:4411 mins ago0x52b2e07b40314312c697e371f8e74289bbe92781 IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0 ETH0.000015945375
0x49d7bf841666ad27665f68bdeaec7ad7bacd86a2253078b00db87e1100feefe3Deposit Native57455622023-09-26 2:21:0936 mins ago0xdd6484329369f9a4e0424fd62026c523449879ee IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0.13 ETH0.000013870668
0xbd67d179a500fcfadd1bb1e5e46847aa0c4a4497b0de424cb07c298e9786a8beWithdraw Native ...57453932023-09-26 2:10:5646 mins ago0xaf8ae6955d07776ab690e565ba6fbc79b8de3a5d IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0 ETH0.0000157179
0xd579157989435ae85279c4892e64556fe3180681cb6e5589c105b4231c2bc2fcDeposit57452342023-09-26 2:01:5955 mins ago0x7baae4eab0e08ebb47f0b39acd77e390d4f321cf IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0 ETH0.00001075437
0xe975167edbc9d211f50aae719ee0dfcad41dfe30b6c72e63bd9760aed318aa3fDeposit Native57429352023-09-25 22:55:104 hrs 2 mins ago0x5bbf96eb65a48e1cf0fe94dbd671b8067b5b291c IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0.054 ETH0.000012766212
0x1abe44b556a8804e6bbc894465f64dfee951e274155adae202bc1ab5080a031aWithdraw V257425442023-09-25 22:11:324 hrs 46 mins ago0xaf8ae6955d07776ab690e565ba6fbc79b8de3a5d IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0 ETH0.000049354443
0xd501380dfad925729f1b9d95e174b5c912cf778afe34f6f804007473801f10a5Deposit Native57419372023-09-25 21:11:095 hrs 46 mins ago0xbd80c8af9ae3fa041933592474c3dffac90346f4 IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0.00555376 ETH0.000029203116
0x0ca0cad89675671855d59f6daccf9ebc83f059cadfeef647eb1cb74a59d10e56Deposit Native57413982023-09-25 20:29:046 hrs 28 mins ago0xc6ba15d4688e7056b596c39588de0e15470bcae9 IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0.018 ETH0.000023031156
0xb50675ab62510edb4b88d880a7bd9b62713d4dd08144ea8ca5391e1b6963e59bDeposit Native57403612023-09-25 19:12:107 hrs 45 mins ago0xf89e64f848daf23c4bc3f3396392c995bcd96b87 IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0.005 ETH0.000024070644
0x24089006d77831c666f94985eced693a1357f9a00b358f883669363fe152f7a9Deposit Native57401482023-09-25 18:59:467 hrs 57 mins ago0x3c62128ee90b8e877ddfc1a6f252853471ad54bc IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0.002 ETH0.0000211146
0x67a62b58afda67fb1d840328f81414b27fc43ae8742761b1a6bb7d7f99a3bd28Deposit Native57395492023-09-25 18:24:048 hrs 33 mins ago0xb8774a85e9039d51a12c4eccef47ca9959888d66 IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0.0018 ETH0.000015170028
0xedcbf213d9323ca9a229b3603c54d5a5ec5d5de1e3b7321ca01db2706c2c124bDeposit Native57394252023-09-25 18:13:338 hrs 44 mins ago0xb8774a85e9039d51a12c4eccef47ca9959888d66 IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0.0016 ETH0.000019100592
0x4bce2a885631ccb208d6cda2f2629134aed1dbf726a72421937b43a7eb862d35Deposit Native57393162023-09-25 18:04:488 hrs 52 mins ago0x22d6ba6bf596d4b7da79514efac920e9e70b373a IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0.214 ETH0.000026214588
0xce57fa6cea769ef0c9e92b9e84ad2fb1d53bb61a6ff971804dcece927fe6c80bWithdraw Native ...57392782023-09-25 18:02:218 hrs 55 mins ago0xaf8ae6955d07776ab690e565ba6fbc79b8de3a5d IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0 ETH0.000044832251
0x7b2d87f65668b0e0fb1c476e9e1dd582dcb123b3aea1bfb4606d162dff86da2eWithdraw Native ...57381912023-09-25 16:23:5710 hrs 33 mins ago0xaf8ae6955d07776ab690e565ba6fbc79b8de3a5d IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0 ETH0.00008094856
0x4615fb0ec382076554a169103ea839aa5fd3d720b67fd10e6db41ff49c290defDeposit57370932023-09-25 15:03:2111 hrs 54 mins ago0xa3da7b05bf56a6b090f21b0513316851ddf839a8 IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0 ETH0.00003681408
0x0ae07d235ecce0b8daa65ddf5d91364beea7899917352d065f4b1fdafd06c7c2Deposit Native57370172023-09-25 14:59:3011 hrs 58 mins ago0x2db8031479a0c17d0ff7dbd1e3cb278936fe0508 IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0.0047988 ETH0.000029430504
0x1637e5a6c0544595b185174b5dfe9de0e2f9afabc9fbe8f206a75e46229ec56dWithdraw V257369382023-09-25 14:56:0012 hrs 1 min ago0xaf8ae6955d07776ab690e565ba6fbc79b8de3a5d IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0 ETH0.000076484496
0xa064c1a9e0b31af0a8f41faedb708e060129ee1305fd90bf9dd4152e5ccb7fdbDeposit Native57363462023-09-25 14:25:1312 hrs 32 mins ago0x00abae20ff04d55b9bdfc32f484fbfc696ebb17d IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0.019 ETH0.000027384012
0x68028c1e3ea1423b8dd65ce47daf90d122ddace4187a74c5c8d924b6b9f49090Withdraw Native ...57362472023-09-25 14:19:3112 hrs 38 mins ago0xaf8ae6955d07776ab690e565ba6fbc79b8de3a5d IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0 ETH0.00005714016
0xb10e643054480ba673e8360a5b6e3a3564bcf6476b441d1ec5ae6ba9eac9af70Deposit57354992023-09-25 13:43:3313 hrs 14 mins ago0xca0dc1bfd872f5b73ec6cb3a4e2c491d5ebe9cfe IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0 ETH0.0000373893
0xc27325b2b54553eda4550fbf9688a786a62e384f69f6fcdc7245bcac454416afDeposit57353612023-09-25 13:36:1813 hrs 21 mins ago0x0125d5a2c872a2441f8781d47ef50c4bc97778fa IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0 ETH0.00003623886
0xd290361713a3b41d517f1dda4a9764b310e99413de171d7c204286c72a4419d4Deposit Native57344892023-09-25 13:03:4713 hrs 53 mins ago0x50372a5bf6a3d9d642f9a0fce69f87af4061086e IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0.05699285 ETH0.000015332448
0x0a75ca7fe106d5976a091c589ed1bc183ccb6c96a01b529e616995129e9a98faWithdraw Native ...57342222023-09-25 12:54:5314 hrs 2 mins ago0xaf8ae6955d07776ab690e565ba6fbc79b8de3a5d IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0 ETH0.000024345675
0x10ef1ce21fa956e7f60c3eaeb9dd98ba6f3fcef7dfa6bb345ce2e9fcf7862dccDeposit Native57337072023-09-25 12:35:2614 hrs 22 mins ago0xdf8eee47dc826ab78cad8fc0b07cd97e43ddc794 IN  0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0.00096 ETH0.000019198044
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xbd67d179a500fcfadd1bb1e5e46847aa0c4a4497b0de424cb07c298e9786a8be57453932023-09-26 2:10:5646 mins ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x2194339fb822fd65e712b405012942494d42f8ad0.01742841 ETH
0xce57fa6cea769ef0c9e92b9e84ad2fb1d53bb61a6ff971804dcece927fe6c80b57392782023-09-25 18:02:218 hrs 55 mins ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x22d6ba6bf596d4b7da79514efac920e9e70b373a0.21334398 ETH
0x7b2d87f65668b0e0fb1c476e9e1dd582dcb123b3aea1bfb4606d162dff86da2e57381912023-09-25 16:23:5710 hrs 33 mins ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x174e3695cf3ebc2ff2508b2275fee9bfb349070c0.00001078 ETH
0x68028c1e3ea1423b8dd65ce47daf90d122ddace4187a74c5c8d924b6b9f4909057362472023-09-25 14:19:3112 hrs 38 mins ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x00abae20ff04d55b9bdfc32f484fbfc696ebb17d0.002191 ETH
0x0a75ca7fe106d5976a091c589ed1bc183ccb6c96a01b529e616995129e9a98fa57342222023-09-25 12:54:5314 hrs 2 mins ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x50372a5bf6a3d9d642f9a0fce69f87af4061086e0.07460252 ETH
0x5dd61ce2219b03ed0594551411ad4a95c204ab5b99b98f42ae57a0ce5731b31a57306062023-09-25 10:33:5316 hrs 23 mins ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x730ca69e99c1b23036dc9a04f0710f55bac35deb0.08651305 ETH
0x880a45d06ac118a3f4681c476bfa3c462f5fb5387f77438109fc5cf8e7b31b7857299762023-09-25 10:13:4416 hrs 43 mins ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x48b6f093d1f42722c79579b973e3cd64bd5002b50.01087989 ETH
0xc1799c7b5c93eca7d949c015b4d5f3060bd0209b94e419c948b976d5caa9291957274122023-09-25 8:51:5818 hrs 5 mins ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x47ce4710f1ec69fd49eeee3d1711942de47266d90.10837022 ETH
0xedd399697f74d93e37fc9f9b3a98b237bee6bd8cc3d643b01f8dabcc83687e3157265052023-09-25 8:20:2518 hrs 37 mins ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x5550590a7769247fc333d49e325026697ead083d0.00001838 ETH
0xd3fba0ff8d7522be4a448a99bbe62ab7027e3afba708e32aedf53459a62abb4f57039122023-09-24 15:33:161 day 11 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x06e3e1b6607ad34b7cc6fd7826eec0ff1592fc790.02436763 ETH
0xcc15f63605d8c1ea33e5ae70c890755ac82ac4fd08598975a9cf1dbe60784c7d57036762023-09-24 15:24:211 day 11 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x752d911bfbbdfde7475062160630c6f955fc35820.00342955 ETH
0x276c12b360405040d2f95ad443571f46c36ab9e09532be405c21d42f37fc333756895672023-09-24 8:12:541 day 18 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0xbc98299954312b7d69eceb0f80ab71a45ebf998a0.49822957 ETH
0x0c0a82de37ad4e92c227251373e351b51fa0626679f2fa97b5c4ad448d26672556820492023-09-24 2:26:492 days 30 mins ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0xbff1db66371a3746c2fd1763091d5270125206a70.00003147 ETH
0xe0ae1ddcd3a1edafba02bcb84462b18a29524791beded11d1d314afffb78ab1156718942023-09-23 15:27:492 days 11 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x185dc95c71799fad3bb58db88e21811483b0ce3f0.68815332 ETH
0x8ad435082df36f1ff07c368b7514a0f728912fa00e530f56fd66f4bc14debdc456718302023-09-23 15:24:462 days 11 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0xd6a2c44534c38a9d76fc24130dba4e46c90082b50.68815332 ETH
0x3c0524dbde4df320c996c892da325e5b79f21d99581499200f0af1e90e37283c56689622023-09-23 13:16:422 days 13 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0xfa864002bbb38e29750b06f363cd1ef70241948c0.00043023 ETH
0x76c1e9989a50a056cc3e98eb2451d2030c7ae6d0b5a32a4bb5d2b7ae364eef6256664282023-09-23 11:29:512 days 15 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x06e3e1b6607ad34b7cc6fd7826eec0ff1592fc790.00842967 ETH
0xacd27701c5125a79d079cdfc342f1e70c886fddf19896b6b1b3c193a16c6d83a56631302023-09-23 9:18:482 days 17 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x6e300d553fed81ab251ef85fe1226f2a1d9b6e0a0.10838704 ETH
0xfd8e231f0212b9dfadabf7c248fd218e8c1f84955c78c45e28f41f7ae3e3656956622652023-09-23 8:48:502 days 18 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0xe41e59405333ac5e8603bfaf150aaabb1d986e550.07739934 ETH
0x17e84dd8e4bd1562fd2721e5f4b53f2d53495346c4393aa8922c497c14b51b2d56459652023-09-22 16:54:133 days 10 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x2a24c04263ccb42ca0484d009be238341d2d59600.13801976 ETH
0x8f411da23e980a5f91927a0248574e2c8802fee40394caa31548c7624cc1daa356407382023-09-22 12:34:113 days 14 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x3b869cd5db3e2d9db6215a952e4bad04b9ad243c0.04813787 ETH
0x263166e13013e81908088f1ed1e6f71340ecd5137e74443d0e6f10b57c08428656405042023-09-22 12:24:353 days 14 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x36058c9ddd345daa47419096b39e140db01d56cb0.28831965 ETH
0xa20767dda714a48bc8660f0832f27976229b80df2295369936f37430d51e565d56194502023-09-22 0:39:414 days 2 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x2194339fb822fd65e712b405012942494d42f8ad0.06041762 ETH
0xc0909929b121d252ffa408264a3fe4ed6fca916529d449ea7decc4dce87b19ae56157632023-09-21 19:56:094 days 7 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x2194339fb822fd65e712b405012942494d42f8ad0.00113409 ETH
0x9b00a75d2e4c7fcc9e9061de9dc1df3b2a51ffa48ba91c6338bfc82cf39283cb56156262023-09-21 19:47:354 days 7 hrs ago 0x65a4b8a0927c7fd899aed24356bf83810f7b9a3f0x2194339fb822fd65e712b405012942494d42f8ad0.00043857 ETH
[ Download CSV Export 
Index Block
Loading

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

Contract Name:
TransparentUpgradeableProxy

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at zkevm.polygonscan.com on 2023-03-28
*/

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

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

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

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

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

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

pragma solidity ^0.8.0;

/**
 * @dev This contract implements a proxy that is upgradeable by an admin.
 *
 * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector
 * clashing], which can potentially be used in an attack, this contract uses the
 * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two
 * things that go hand in hand:
 *
 * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if
 * that call matches one of the admin functions exposed by the proxy itself.
 * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the
 * implementation. If the admin tries to call a function on the implementation it will fail with an error that says
 * "admin cannot fallback to proxy target".
 *
 * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing
 * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due
 * to sudden errors when trying to call a function from the proxy implementation.
 *
 * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,
 * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.
 */
contract TransparentUpgradeableProxy is ERC1967Proxy {
    /**
     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and
     * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.
     */
    constructor(address _logic, address admin_, bytes memory _data) payable ERC1967Proxy(_logic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        _changeAdmin(admin_);
    }

    /**
     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.
     */
    modifier ifAdmin() {
        if (msg.sender == _getAdmin()) {
            _;
        } else {
            _fallback();
        }
    }

    /**
     * @dev Returns the current admin.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.
     *
     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`
     */
    function admin() external ifAdmin returns (address admin_) {
        admin_ = _getAdmin();
    }

    /**
     * @dev Returns the current implementation.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.
     *
     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`
     */
    function implementation() external ifAdmin returns (address implementation_) {
        implementation_ = _implementation();
    }

    /**
     * @dev Changes the admin of the proxy.
     *
     * Emits an {AdminChanged} event.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.
     */
    function changeAdmin(address newAdmin) external virtual ifAdmin {
        _changeAdmin(newAdmin);
    }

    /**
     * @dev Upgrade the implementation of the proxy.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.
     */
    function upgradeTo(address newImplementation) external ifAdmin {
        _upgradeToAndCall(newImplementation, bytes(""), false);
    }

    /**
     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified
     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the
     * proxied contract.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.
     */
    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {
        _upgradeToAndCall(newImplementation, data, true);
    }

    /**
     * @dev Returns the current admin.
     */
    function _admin() internal view virtual returns (address) {
        return _getAdmin();
    }

    /**
     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.
     */
    function _beforeFallback() internal virtual override {
        require(msg.sender != _getAdmin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target");
        super._beforeFallback();
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ca565b610118565b61005b6100933660046106e5565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ca565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610292565b610116610111610331565b61033b565b565b61012061035f565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610392565b50565b6101546100fe565b61016761035f565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610392915050565b505050565b6101c36100fe565b60006101da61035f565b6001600160a01b0316336001600160a01b03161415610200576101fb610331565b905090565b6102086100fe565b90565b61021361035f565b6001600160a01b0316336001600160a01b0316141561015757610154816103f1565b600061023f61035f565b6001600160a01b0316336001600160a01b03161415610200576101fb61035f565b606061028583836040518060600160405280602781526020016107e460279139610445565b9392505050565b3b151590565b61029a61035f565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610519565b3660008037600080366000845af43d6000803e80801561035a573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039b83610541565b6040516001600160a01b038416907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a26000825111806103dc5750805b156101c3576103eb8383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61041a61035f565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816105e9565b6060833b6104a45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610328565b600080856001600160a01b0316856040516104bf9190610794565b600060405180830381855af49150503d80600081146104fa576040519150601f19603f3d011682016040523d82523d6000602084013e6104ff565b606091505b509150915061050f828286610675565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610383565b803b6105a55760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610328565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b03811661064e5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610328565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036105c8565b60608315610684575081610285565b8251156106945782518084602001fd5b8160405162461bcd60e51b815260040161032891906107b0565b80356001600160a01b03811681146106c557600080fd5b919050565b6000602082840312156106dc57600080fd5b610285826106ae565b6000806000604084860312156106fa57600080fd5b610703846106ae565b9250602084013567ffffffffffffffff8082111561072057600080fd5b818601915086601f83011261073457600080fd5b81358181111561074357600080fd5b87602082850101111561075557600080fd5b6020830194508093505050509250925092565b60005b8381101561078357818101518382015260200161076b565b838111156103eb5750506000910152565b600082516107a6818460208701610768565b9190910192915050565b60208152600082518060208401526107cf816040850160208701610768565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204675187caf3a43285d9a2c1844a981e977bd52a85ff073e7fc649f73847d70a464736f6c63430008090033

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.