Contract 0x7a3cdb2364f92369a602cae81167d0679087e6a3 4

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xbe06d3614d35de8bfcc962f4f3202bb8bcd8ba7e6f66ca1ca9344f1712fa8a9aWithdraw Payment...86369862023-06-04 5:24:0811 mins agoCronos ID Name tripplej.cro IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.2146362602960
0x7340a0d5e36716baf971b8e87cc60cd99d4c88b9a0cbb897b97a6eb8544e311dBulk Transfer86368402023-06-04 5:10:2025 mins ago0x808e3de77975b9b050d4a7dcbfce909e20fcf4b5 IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO4.0634250
0x814567f04a242da00b942af2e573e9475bd11bc9ddd43ef2ca4e02b254c70d92Bulk Transfer86365782023-06-04 4:45:3449 mins ago0x808e3de77975b9b050d4a7dcbfce909e20fcf4b5 IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO5.417030
0xaab2c3f56fe40b54f40ca472ead1a26db6b1fe8abdfea0f156dc0d39ac6720f4Withdraw Payment...86362902023-06-04 4:18:231 hr 17 mins agoCronos ID Name tripplej.cro IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.2146377180340
0x18692408b6f1c1bae8655f9c48f7f49e7ee5be86a73b65964a5d10319f3285f6Withdraw Payment...86362572023-06-04 4:15:161 hr 20 mins ago0x2998e408d3633999850c3a91891f76f4c2971c53 IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.214705774931 4,736.400585287
0xddbb6edfa36cce90e5252cff75c15e7f27fb43f03e925964a75d0c5e14e34354Withdraw Payment...86360832023-06-04 3:58:501 hr 36 mins ago0x69b623d036e2f0bcd4d1fec7ebceaf0250a28196 IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.2146381535980
0xbb53fc64142eb7f3283374bb91cfdfecdc084900c622a1c14fbf4f654ef5f68cBulk Transfer86360232023-06-04 3:53:101 hr 42 mins ago0x1b1b758fdc917938ae0998158fc6651432f49d0b IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.782213616827 4,736.411463755
0x976d786aaefe1b917fc4a2123cf8d74b05b8fe5f0f464ec2b9d1a2bd5d692625Withdraw Payment...86345722023-06-04 1:36:253 hrs 59 mins agoCronos ID Name tripplej.cro IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.2146413311180
0x0b2b7a17eb76171aab1ebc048486ebe082c37bde7b098bdd5720690ad113800bWithdraw Payment...86342962023-06-04 1:10:214 hrs 25 mins ago0x1d7a11232ca73563c6dce5b01c98367d880b9734 IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.214709893315 4,736.491436658
0x10ebad81a0aa900ecb57fc2caca5a03374a605062d8654902a706d8d1221ffffWithdraw Payment...86342562023-06-04 1:06:354 hrs 28 mins ago0x5efac34488c53967ce6b9c93d31055816282f5a0 IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.2146419846620
0x1cda76eef1f27e376547cea2defdce115e1766535871e19856af089045046686Cancel Listing86337942023-06-04 0:22:555 hrs 12 mins ago0x3b744b7205d030a1bdcb05ff1d778a885b475d4f IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO1.6692441955440
0x9414fe02aa028b2f509f88768d7abb216d94880666bc58027ef240112dfdbdb3Cancel Listing86337932023-06-04 0:22:495 hrs 12 mins ago0x3b744b7205d030a1bdcb05ff1d778a885b475d4f IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO1.6692441955440
0x4f4e79bfd6c9f346a0a87c70393c2757114ca889d2fa093f16e5c58749659340Bulk Transfer86335062023-06-03 23:55:415 hrs 39 mins agoCronos ID Name stoned.cro IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.4917847362790
0x63093f435e447e19b7b6fd43a3a53ab04981bcc1a605dc380cd26405cc722719Bulk Transfer86334872023-06-03 23:53:535 hrs 41 mins ago0x4cabc294539ee6b1139553fa74bea8709814189c IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.4335439694170
0xf6180ce32827fe75f275c711639506d30406aa2e85ce588e1b1140b7f6c30fc2Withdraw Payment...86333612023-06-03 23:42:005 hrs 53 mins ago0x35396a93febf6db1546c29b160a394b715359c6b IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.2146438544710
0x5a3e4fd04ef8e818d2bb60b08ca98e97f9fe4ff309316af554bd1e5d8bac04b8Bulk Transfer86331862023-06-03 23:25:286 hrs 10 mins ago0x38eb9a99ea4d612f7c516368242fb7dabffd1a75 IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO2.660724355683 4,736.542545507
0xf3f766050c93a0740eb85eb985a62c1ef3d0229b1204cb7fce868e89928ed5aeSet Use Escrow86328952023-06-03 22:58:016 hrs 37 mins ago0x02289422542c670c4d4dc881d0706d60b9619809 IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.2511379117070
0x38cbe7dc65c3e67bff77cf9e33d2c92b05135638c42da8d5399c189fb1426ad5Withdraw Payment...86327342023-06-03 22:42:496 hrs 52 mins agoCronos ID Name tripplej.cro IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.2146451715580
0xcf2b98f22d5b70c11c4f9e1fb7364c9688c3a24aa9f7d42b3530f1e6c80d988fBulk Transfer86324762023-06-03 22:18:287 hrs 17 mins ago0xb2e3938eaa22fc5db93459b0f9eaa55f129fe331 IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO1.07186423153 4,792.360901234
0xb7988867317a2d018e456710303cc05ca6dd1d2515244f5cd7242fa76d9af07cBulk Transfer86324712023-06-03 22:18:007 hrs 17 mins ago0xb2e3938eaa22fc5db93459b0f9eaa55f129fe331 IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO1.067966302517 4,775.189258695
0xa6c4146c244dd39e9238830f9547844171f8336aed9fa456ac2233256a4e968aBulk Transfer86323212023-06-03 22:03:527 hrs 31 mins ago0x2998e408d3633999850c3a91891f76f4c2971c53 IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.759496795853 4,736.582510762
0x005c32f268c075111b51ebdb18026e37c8e727af58dacd68f5c13ebefeaebd7eBulk Transfer86323132023-06-03 22:03:077 hrs 32 mins ago0x1d9e0bd4ed0c45b646e844b706d9fe8224249d72 IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO1.041884670235 4,775.081901424
0x62981bc390acb77da6cf307c8e8b17c23a677fb3af122460108459b7f4cf6e0aWithdraw Payment...86320812023-06-03 21:41:137 hrs 54 mins ago0x5efac34488c53967ce6b9c93d31055816282f5a0 IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.2146465329710
0xc3f545c18e7705b7fe6d5ad5070647662d226a6711015896f2fc60dc692903d8Bulk Transfer86318432023-06-03 21:18:398 hrs 16 mins ago0x4cabc294539ee6b1139553fa74bea8709814189c IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.5069971343220
0x2a45296304fcc1e0dd59704c759ddb6073d795c4915891b18ae2dc059942f441Withdraw Payment...86317832023-06-03 21:13:008 hrs 22 mins ago0x1a7c460f625a1e71ef327b7d2c32f1c1e16e51b4 IN  0x7a3cdb2364f92369a602cae81167d0679087e6a30 CRO0.214715145739 4,736.60730493
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xfa6eeb6a7b662eeabd1b640262d16031d556519ebf175e6e851608b9320c0bba86370782023-06-04 5:32:492 mins ago 0x016b347aeb70cc45e3bbaf324feb3c7c464e18b0 0x7a3cdb2364f92369a602cae81167d0679087e6a30.96 CRO
0xfa6eeb6a7b662eeabd1b640262d16031d556519ebf175e6e851608b9320c0bba86370782023-06-04 5:32:492 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0x39a3f70d1696093f8cad28e62bcbbf6c8fdf19d66.4 CRO
0xfa6eeb6a7b662eeabd1b640262d16031d556519ebf175e6e851608b9320c0bba86370782023-06-04 5:32:492 mins ago 0x016b347aeb70cc45e3bbaf324feb3c7c464e18b0 0x7a3cdb2364f92369a602cae81167d0679087e6a36.4 CRO
0x5315c5e3a385f0bf97748c7e71f8fc5041c83775f58253d0222b056b8f354da986370602023-06-04 5:31:074 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a30x0ae1a3ace49f417b1fa575dcbb9acb491348150140 CRO
0x5315c5e3a385f0bf97748c7e71f8fc5041c83775f58253d0222b056b8f354da986370602023-06-04 5:31:074 mins ago 0x523d6f30c4aaca133daad97ee2a0c48235bff137 0x7a3cdb2364f92369a602cae81167d0679087e6a340 CRO
0x5315c5e3a385f0bf97748c7e71f8fc5041c83775f58253d0222b056b8f354da986370602023-06-04 5:31:074 mins ago 0x523d6f30c4aaca133daad97ee2a0c48235bff137 0x7a3cdb2364f92369a602cae81167d0679087e6a33.75 CRO
0x577701534fa2be481cd72fc551e91e9aaf9cd7607c6751fcd026359c365fa8ad86370572023-06-04 5:30:504 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0x39a3f70d1696093f8cad28e62bcbbf6c8fdf19d613.5 CRO
0x577701534fa2be481cd72fc551e91e9aaf9cd7607c6751fcd026359c365fa8ad86370572023-06-04 5:30:504 mins ago 0x523d6f30c4aaca133daad97ee2a0c48235bff137 0x7a3cdb2364f92369a602cae81167d0679087e6a313.5 CRO
0x577701534fa2be481cd72fc551e91e9aaf9cd7607c6751fcd026359c365fa8ad86370572023-06-04 5:30:504 mins ago 0x523d6f30c4aaca133daad97ee2a0c48235bff137 0x7a3cdb2364f92369a602cae81167d0679087e6a31.0125 CRO
0x5cc714380d09add975c84e8725b9eb2d869b238824b1a687c59a1a9403b7f8cf86370472023-06-04 5:29:545 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a30x2ee5f8cbcb65b76681fb79636ebcca423243b42c14.95 CRO
0x5cc714380d09add975c84e8725b9eb2d869b238824b1a687c59a1a9403b7f8cf86370472023-06-04 5:29:545 mins ago 0x523d6f30c4aaca133daad97ee2a0c48235bff137 0x7a3cdb2364f92369a602cae81167d0679087e6a314.95 CRO
0x5cc714380d09add975c84e8725b9eb2d869b238824b1a687c59a1a9403b7f8cf86370472023-06-04 5:29:545 mins ago 0x523d6f30c4aaca133daad97ee2a0c48235bff137 0x7a3cdb2364f92369a602cae81167d0679087e6a34.485 CRO
0xe068ac6e2b0dfbc9ca97f7a5c94c4c16b040f123ae90f5cb649a0658f6cb173c86370472023-06-04 5:29:545 mins ago 0x016b347aeb70cc45e3bbaf324feb3c7c464e18b0 0x7a3cdb2364f92369a602cae81167d0679087e6a30.375 CRO
0xe068ac6e2b0dfbc9ca97f7a5c94c4c16b040f123ae90f5cb649a0658f6cb173c86370472023-06-04 5:29:545 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3Cronos ID Name ninjaturtlefactions.cro1.25 CRO
0xe068ac6e2b0dfbc9ca97f7a5c94c4c16b040f123ae90f5cb649a0658f6cb173c86370472023-06-04 5:29:545 mins ago 0x016b347aeb70cc45e3bbaf324feb3c7c464e18b0 0x7a3cdb2364f92369a602cae81167d0679087e6a31.25 CRO
0x8d201ab6065f23f61dc69f7f44395681273bf56df7b4f7bfe17898d99430301c86370412023-06-04 5:29:206 mins ago 0x016b347aeb70cc45e3bbaf324feb3c7c464e18b0 0x7a3cdb2364f92369a602cae81167d0679087e6a31.05 CRO
0x8d201ab6065f23f61dc69f7f44395681273bf56df7b4f7bfe17898d99430301c86370412023-06-04 5:29:206 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0x39a3f70d1696093f8cad28e62bcbbf6c8fdf19d62.8 CRO
0x8d201ab6065f23f61dc69f7f44395681273bf56df7b4f7bfe17898d99430301c86370412023-06-04 5:29:206 mins ago 0x016b347aeb70cc45e3bbaf324feb3c7c464e18b0 0x7a3cdb2364f92369a602cae81167d0679087e6a32.8 CRO
0x65440cf396f62ed1a8d88d52092dc9bab78a92d18ebf4198b213ce616f1e92b286370322023-06-04 5:28:307 mins ago 0x016b347aeb70cc45e3bbaf324feb3c7c464e18b0 0x7a3cdb2364f92369a602cae81167d0679087e6a31.05 CRO
0x65440cf396f62ed1a8d88d52092dc9bab78a92d18ebf4198b213ce616f1e92b286370322023-06-04 5:28:307 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a30xb5d4f12b5e7d8ce43fece177a6c75df14994fbe67 CRO
0x65440cf396f62ed1a8d88d52092dc9bab78a92d18ebf4198b213ce616f1e92b286370322023-06-04 5:28:307 mins ago 0x016b347aeb70cc45e3bbaf324feb3c7c464e18b0 0x7a3cdb2364f92369a602cae81167d0679087e6a37 CRO
0xd2cc7feb5c5e22ca3b262b8fd6abfa13637bb9abc43fa62a0f6f3fd3189c80f586368512023-06-04 5:11:2324 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a3 0x39a3f70d1696093f8cad28e62bcbbf6c8fdf19d6413.08 CRO
0xd2cc7feb5c5e22ca3b262b8fd6abfa13637bb9abc43fa62a0f6f3fd3189c80f586368512023-06-04 5:11:2324 mins ago 0x523d6f30c4aaca133daad97ee2a0c48235bff137 0x7a3cdb2364f92369a602cae81167d0679087e6a3413.08 CRO
0xd2cc7feb5c5e22ca3b262b8fd6abfa13637bb9abc43fa62a0f6f3fd3189c80f586368512023-06-04 5:11:2324 mins ago 0x7a3cdb2364f92369a602cae81167d0679087e6a30x0ae1a3ace49f417b1fa575dcbb9acb491348150135.92 CRO
0xd2cc7feb5c5e22ca3b262b8fd6abfa13637bb9abc43fa62a0f6f3fd3189c80f586368512023-06-04 5:11:2324 mins ago 0x523d6f30c4aaca133daad97ee2a0c48235bff137 0x7a3cdb2364f92369a602cae81167d0679087e6a335.92 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.