Contract 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f8

Contract Overview

Balance:
0 GLMR

GLMR Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xfd32cf534edd45f688dfb68f4bc64b0af41a17c09d6279db957d26636b27ac08Grant Role19299302022-09-23 15:29:064 days 22 hrs ago0x61d83ca1438467a383008c07e796a6fb484bbaa9 IN  0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f80 GLMR0.0073018
0x6d4a55fc6302adb4905ed27b6a753743408d994d098b204e71b4d4c905b9903fGrant Role19299282022-09-23 15:28:424 days 22 hrs ago0x61d83ca1438467a383008c07e796a6fb484bbaa9 IN  0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f80 GLMR0.0073018
0x2b45b56ff4a16aa548642681e40f73bbb70a177881fe3ba2fd6a19b237629460Grant Role19297962022-09-23 15:01:004 days 22 hrs ago0x61d83ca1438467a383008c07e796a6fb484bbaa9 IN  0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f80 GLMR0.0206644
0xb844d2be97edf0c9e698585b099e1b411ce642c663820d24e211148828a6d25eGrant Role19297762022-09-23 14:56:424 days 22 hrs ago0x61d83ca1438467a383008c07e796a6fb484bbaa9 IN  0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f80 GLMR0.0206644
0x4300ad138ba507a5e5be0788790ee46ae649b0cee878ee8c367b32dcaa69b497Grant Role18893302022-09-17 20:28:2410 days 17 hrs ago0x61d83ca1438467a383008c07e796a6fb484bbaa9 IN  0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f80 GLMR0.0103322
0x23819dc41cb584c49e2bae0b2dc6a5de737c2ed80fc104aef7c5e2beb1f9dc86Grant Role18893282022-09-17 20:28:0010 days 17 hrs ago0x61d83ca1438467a383008c07e796a6fb484bbaa9 IN  0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f80 GLMR0.0103322
0x3d9ccdbf12856430728e4fb29846d4227800abc3ea4819f999710ecff750190dTransfer18660412022-09-14 13:10:4814 days 30 mins agoBinance 1 IN  0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81.99 GLMR0.0051892
0x3e8bc9f60556aae11bd18960da1cc19cc4168e35462022db578d222560c67641Transfer17893342022-09-03 10:45:3625 days 2 hrs ago0xa7b661b5cb100096017963cf60fed03fa7838870 IN  0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f80.1 GLMR0.002633519
0x06eabb62b1df1a455c0f9226bb5ef47faf6a86a73986374ce920d8f51636e22aTransfer17893252022-09-03 10:43:4225 days 2 hrs ago0xaac47732a9617bd6e2881eb703c07f60f9a9a6fa IN  0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f80.1 GLMR0.002633519
0xab7de0bd4f0c0770dbbf63f6e5dc2266ab1b3e2a0e19902b9e199b17bfd6c6c1Transfer17769762022-09-01 16:06:5426 days 21 hrs ago0xe312f9934d40a5d484a0689c3e55e26c072799d8 IN  0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81 GLMR0.002633519
0x1134683a4295491fa78469a6f5786b0646d98c24e84df1e30a8d4f375001c7e0Transfer17769672022-09-01 16:05:0626 days 21 hrs ago0xdd82401bb31012d7cc56ab8905b8d981aa4c788a IN  0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81 GLMR0.0021315
0x9b30a20319beec7611d25de33bafc5829366d11e8f1b5fbecf470301e0106295Transfer17768632022-09-01 15:43:2426 days 21 hrs ago0x80106c6e3001bbd2620e329fe9411d4de371bb2c IN  0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81 GLMR0.002633519
0xd54dc8fd629c95c1d2c74178794d8b87be4b54326db6dd725f6752c24b8eb6a3Grant Role17696452022-08-31 14:50:1827 days 22 hrs ago0x61d83ca1438467a383008c07e796a6fb484bbaa9 IN  0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f80 GLMR0.0103322
0x68add5425f8bdfad6e6bbf55a5002f6e03b25f69f540aa30183e656a46ff9546Grant Role17695142022-08-31 14:23:1827 days 23 hrs ago0x61d83ca1438467a383008c07e796a6fb484bbaa9 IN  0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f80 GLMR0.0123222
0x08e14f61ae40b4f2c80b9b97d36d88c799de5d3de9bd6b6b719c5073b85573830x6080604017694992022-08-31 14:20:1827 days 23 hrs ago0x05b9b543328d4c797e1eec747efc65d97de542f2 IN  Contract Creation0 GLMR0.0551076
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xc369d79373ba3a9b2acccf62d8100dcf5881a6da1e387da9c22119f80077da7619641262022-09-28 13:08:5432 mins ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f82,190 GLMR
0x42b4cd3c18be54610afcbf35af25d888f5489989c80012953e7622f28005434a19626482022-09-28 8:07:365 hrs 33 mins ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f82,000 GLMR
0xc3512b422cc55a8a18e8eccd5c949239af1daded3fdbd8ec587076393c8bc05b19626032022-09-28 7:58:245 hrs 42 mins ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f82,480 GLMR
0x3c4cce91592fbfe36f0b48230ad964fa04dc16bb51e1f95801eb5d3c40b4fb7b19615902022-09-28 4:33:069 hrs 7 mins ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81,799 GLMR
0x9a08ab0790bde86ad33d2af342b22c17de433a1c82f606b487979f27aba2149919597752022-09-27 22:22:5415 hrs 18 mins ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f82,100 GLMR
0x264c87f801e4ff3299f55b7b6032a0e97b3744cd482846dfd36459410abba9d219577262022-09-27 15:21:2422 hrs 19 mins ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f82,069 GLMR
0x49f98c9914b587bc71370eaa96f176e5347b93b1973be2f1f39834cd95ced04c19573352022-09-27 14:01:5423 hrs 39 mins ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f82,400 GLMR
0xd1d36b3c06e47609518cfd246ee133867cdd835034520aac3385b2b7b2bf2c0919538652022-09-27 2:11:301 day 11 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f82,000 GLMR
0x2cf1fa2ced4862bad39228eafefa9413ca60ac4e23b06c68987d21fc7e6f1d7219522412022-09-26 20:38:061 day 17 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f82,013 GLMR
0xa1d4851e914bd97fedb4bf253479a810e30d0c3bea00fb8300048af14947bb0919520622022-09-26 20:01:481 day 17 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81,950 GLMR
0xd3ec9a6b66c943595b4736f55cf8048f46c4bb9ef885d4cb51e42cd8ba6f072019519592022-09-26 19:41:001 day 17 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f82,400 GLMR
0xec17eb59f0b12a43cfe652525159cac830df12a659f66630b575973c4caa943019518772022-09-26 19:23:481 day 18 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f82,000 GLMR
0x32d0208e0f495acb5ad61cd147724584eb66b927eee380b391549ea9cbc5917319518322022-09-26 19:14:421 day 18 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81,900 GLMR
0xb548cd43fec2dce312d46c78949a9c98e286da36378ddc415e732a8fd70bfb9b19512692022-09-26 17:19:181 day 20 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81,900 GLMR
0xe2c536f006aad7a727303ac255a81e3616080c2eb6c174f3cf7755b40de02d1319472262022-09-26 3:26:122 days 10 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81,850 GLMR
0x66f6f78c20bc9b4f1daa9d9e1f71e45c196f863b85d18c43770de37a3498df6019455722022-09-25 21:45:122 days 15 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81,900 GLMR
0x7d7ea22a516c2f43f39a2e46d83e42815d1c31ab62e37fa34adab26b60226b7919453702022-09-25 21:03:182 days 16 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81,850 GLMR
0xcc642267f2d554b97ca32b215c6827b24badeda6c85202cfb92a73a7a75bc25119452372022-09-25 20:36:062 days 17 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81,840 GLMR
0x07e7a553c09326da841771a3dda765687984f45e8e954b2eaafd4416b4636de319448062022-09-25 19:05:002 days 18 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81,685 GLMR
0x5bed844fb23591e303f3bf457dc044fe938fc349cc7ad1048aa38dec9d15c57319439082022-09-25 15:56:482 days 21 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81,870 GLMR
0x4a95c1f2f91b0186e3e4f52a61ebd7839810b2ed340cd76fd9b12a73ce8b0abc19437012022-09-25 15:14:122 days 22 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81,890 GLMR
0x11173fd769aebc35a79deccd8af59b2892ae7f28a8425b76e3c0cd391da334b819436742022-09-25 15:08:362 days 22 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81,880 GLMR
0xdd81c5305f18706bf59174caffda375b60b6df7ce990e96e03e0c938a5f5eb4c19436272022-09-25 14:58:542 days 22 hrs ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81,880 GLMR
0x22ed5e083890f05f6764a437a246974e4dc08dfd775245a859cedd726294bedc19431982022-09-25 13:29:423 days 11 mins ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f81.88 GLMR
0x3ea89244dd62e95e26bacb94f1f2ff12511de8724d581a06d46a8a7623f2c15719429012022-09-25 12:28:423 days 1 hr ago 0x532598572ab65e338e9662f25ee3c880ebb33a96 0x5274a86d39fd6db8e73d0ab6d7d5419c1bf593f82,390 GLMR
[ Download CSV Export 
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

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

Contract Name:
ERC1967Proxy

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at moonbeam.moonscan.io on 2022-03-25
*/

// Sources flattened with hardhat v2.8.3 https://hardhat.org

// File @openzeppelin/contracts/proxy/[email protected]

// 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 @openzeppelin/contracts/proxy/beacon/[email protected]

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 @openzeppelin/contracts/utils/[email protected]

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 @openzeppelin/contracts/utils/[email protected]

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 @openzeppelin/contracts/proxy/ERC1967/[email protected]

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

6080604052604051610772380380610772833981016040819052610022916102f7565b61004d60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61040f565b60008051602061072b8339815191521461007757634e487b7160e01b600052600160045260246000fd5b6100838282600061008a565b5050610474565b610093836100f4565b6040516001600160a01b038416907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a26000825111806100d45750805b156100ef576100ed83836101b460201b6100291760201c565b505b505050565b610107816101e060201b6100551760201c565b61016e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b8061019360008051602061072b83398151915260001b6101e660201b61005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606101d9838360405180606001604052806027815260200161074b602791396101e9565b9392505050565b3b151590565b90565b6060833b6102485760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610165565b600080856001600160a01b03168560405161026391906103c0565b600060405180830381855af49150503d806000811461029e576040519150601f19603f3d011682016040523d82523d6000602084013e6102a3565b606091505b5090925090506102b48282866102be565b9695505050505050565b606083156102cd5750816101d9565b8251156102dd5782518084602001fd5b8160405162461bcd60e51b815260040161016591906103dc565b60008060408385031215610309578182fd5b82516001600160a01b038116811461031f578283fd5b60208401519092506001600160401b038082111561033b578283fd5b818501915085601f83011261034e578283fd5b8151818111156103605761036061045e565b604051601f8201601f19908116603f011681019083821181831017156103885761038861045e565b816040528281528860208487010111156103a0578586fd5b6103b1836020830160208801610432565b80955050505050509250929050565b600082516103d2818460208701610432565b9190910192915050565b60006020825282518060208401526103fb816040850160208701610432565b601f01601f19169190910160400192915050565b60008282101561042d57634e487b7160e01b81526011600452602481fd5b500390565b60005b8381101561044d578181015183820152602001610435565b838111156100ed5750506000910152565b634e487b7160e01b600052604160045260246000fd5b6102a8806104836000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610096565b565b606061004e838360405180606001604052806027815260200161024c602791396100ba565b9392505050565b3b151590565b90565b60006100917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100b5573d6000f35b3d6000fd5b6060833b61011e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161013991906101cc565b600060405180830381855af49150503d8060008114610174576040519150601f19603f3d011682016040523d82523d6000602084013e610179565b606091505b5091509150610189828286610193565b9695505050505050565b606083156101a257508161004e565b8251156101b25782518084602001fd5b8160405162461bcd60e51b815260040161011591906101e8565b600082516101de81846020870161021b565b9190910192915050565b600060208252825180602084015261020781604085016020870161021b565b601f01601f19169190910160400192915050565b60005b8381101561023657818101518382015260200161021e565b83811115610245576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209b8470f06e8a3960c912103fc2be177edaad69584ee3c7d2809ee737e79408e764736f6c63430008020033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564000000000000000000000000d55958b24e07f7a6a82c1222c435d611ba84622a00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000104bd3a13f6000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000d87fe99d046e4ed9e44cf491683c7067b3a716d8000000000000000000000000000000000000000000000000000000000000000b546f6b656e2045524332300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005546f6b656e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

23028:939:0:-:0;;;;;;3203:11;:9;:11::i;:::-;23028:939;;2972:11;2609:113;2686:28;2696:17;:15;:17::i;:::-;2686:9;:28::i;:::-;2609:113::o;10986:302::-;11087:12;11137:143;11176:6;11201:4;11137:143;;;;;;;;;;;;;;;;;:20;:143::i;:::-;11117:163;10986:302;-1:-1:-1;;;10986:302:0:o;4771:444::-;5151:20;5199:8;;;4771:444::o;14352:183::-;14513:4;14488:40::o;23772:192::-;23884:12;23921:35;16275:66;16636:54;-1:-1:-1;;;;;16636:54:0;;16556:142;23921:35;23914:42;;23772:192;:::o;1025:1092::-;1425:14;1422:1;1419;1406:34;1746:1;1726;1693:14;1673:1;1640:14;1616:5;1585:177;1839:16;1836:1;1833;1818:38;1879:6;1948:68;;;;2067:16;2064:1;2057:27;1948:68;1984:16;1981:1;1974:27;11482:457;11627:12;5151:20;;11652:69;;;;-1:-1:-1;;;11652:69:0;;883:2:1;11652: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;;11652:69:0;;;;;;;;;11795:12;11809:23;11836:6;-1:-1:-1;;;;;11836:19:0;11856:4;11836:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11794:67;;;;11879:52;11897:7;11906:10;11918:12;11879:17;:52::i;:::-;11872:59;11482:457;-1:-1:-1;;;;;;11482:457:0:o;11947:777::-;12097:12;12126:7;12122:595;;;-1:-1:-1;12157:10:0;12150:17;;12122:595;12271:17;;:21;12267:439;;12534:10;12528:17;12595:15;12582:10;12578:2;12574:19;12567:44;12482:148;12677:12;12670:20;;-1:-1:-1;;;12670: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.