Contract 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b7 20

 
Txn Hash Method
Block
From
To
Value
0xd7a27442d9d6bfc6c7fd3df758450671b71484b6c00e33b0ce59e31851a90af0Mint Cube133517832024-04-19 2:15:132 secs ago0xea8d02cab8104d38277dc723842d8cb24f4ae79d IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000106352540.055346195
0x6feff17561235900e401d3844b2a4d89ddc054abaaae763f09da377d613b55faMint Cube133517832024-04-19 2:15:132 secs ago0x3976540e27d2e358dc3a55c8b6f781867690879c IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000114383340.055346195
0xd8c47ba8de942dcf38c8ba1391af083b8314a54fa1fae8643859552e9d9d5408Mint Cube133517812024-04-19 2:15:096 secs ago0xef111e0b94b305c1cf64d0197becb65639ad8d26 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000111541060.055415595
0x4424231d25f647ca248638f602aa9b21a419abe0269f0202bc44ac7d911d0a20Mint Cube133517802024-04-19 2:15:078 secs ago0x7159a539da543b86e0d8d862e71ec0dda17f0466 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000111455780.055402153
0x02be2f61d25c0b69ec2ae016e26bf561027af3104ca10cf9a0700e0d44950da7Mint Cube133517792024-04-19 2:15:0510 secs ago0x61cb99a82529f738169aed7171c5c67ccccd0366 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000132958650.06942902
0x7cd8959b07b6f96916454be3fab6bd5c2153a36c5ba7b2a0b9a1f11c6532fce8Mint Cube133517762024-04-19 2:14:5916 secs ago0x3eb25a7f5b8b0d1d7c9730cc52a2cbf7412276c7 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000111700620.055523365
0xf82d6041bd664a5a77ee902544cb56f53f448708e63d10fa1a66a68ad0308037Mint Cube133517742024-04-19 2:14:5520 secs ago0xd38beb126f7abd25fdba3b2ef4ee07a113ee83fe IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000117855690.0615
0xd23031606189c3a05b836db370282f7cec985b8e01dd57fc4e372cd6de06cdeeMint Cube133517722024-04-19 2:14:5124 secs ago0x7baae4eab0e08ebb47f0b39acd77e390d4f321cf IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000106930330.055735864
0x7000953c73cc9db9a57ee6aa42fcbcb307ddbb869c3ee720e69c7b214cd0346bMint Cube133517722024-04-19 2:14:5124 secs ago0x0d5b3e5cb73931f2174172a74ba36478e4698312 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.000011971750.055735864
0x025c4c07c770324ba8d08ea97cdb743e450429434f26e5b2edef88e09202177cMint Cube133517722024-04-19 2:14:5124 secs ago0x37f14e41d8be4de2ab16c2e175cf34a69dd32378 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000141746110.055735864
0x4a0ab95c11ff3cb8b83791b929ca3989fabcbb02192185898a702c33e24dec3cMint Cube133517722024-04-19 2:14:5124 secs ago0x21a2e8f10cd12dc45093d152784cb677d88f8324 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000117997150.0616
0x4b30430cdb779cc0f68b8ccc411f2043ebcc95a214a37cd8530605319de66623Mint Cube133517712024-04-19 2:14:4926 secs ago0xe74695087ae7cee8b34fb286d892350860ccb128 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000116101150.055302643
0x4f6dd48ca6bef0ac5ac1ec593dfa8cec460912c45113d6bbd6b3ebb835f571fcMint Cube133517712024-04-19 2:14:4926 secs ago0x01bdbfdd901b0e8000dd0ad7ddf85ef6cf8776fa IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000106881640.055710116
0xf0ebbbb8dc1dd7dffe8a7df6aa6a0c84c6e95959b8c4f4c1aceb0666cb13a6c6Mint Cube133517702024-04-19 2:14:4728 secs ago0xd7a30e82e65420dc01460629849355528d74c0df IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000111716270.05561577
0xb1f99a111a2b8d274dfb05bf0208f1e89eda3f9a17f5c34b53dac86d2eff2ce5Mint Cube133517672024-04-19 2:14:4134 secs ago0x8fc9ad2603015381212c2a9629c7ff5ceee4b9e8 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000158647930.055469775
0xad3105cb11d1657d93b9822f9c40d800a914335c795ae86805491e36dba8c29bMint Cube133517672024-04-19 2:14:4134 secs ago0xbbd9111ff9d0ad76d2d1681adc6b88c392a794f4 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.000011449520.055469775
0x3200af80e9a8a1ab8f757681dd7e817b99d244657aa5613f51d2749812abb14cMint Cube133517652024-04-19 2:14:3738 secs ago0x4ba4691780723db6db016775a29f2904e92bb581 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000119589220.055501968
0x6b26a60e1067af9202f611dfc7023d6cbd674253481e5713597ad52343c0e0b1Mint Cube133517642024-04-19 2:14:3540 secs ago0xb6efb6e4cd39955abe8869d1cbe2146f35219a3d IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.000011805150.0616
0xead53d44e406ed4f0a7409a972294138364e19192afb67e7ce156b8bf567dbfbMint Cube133517642024-04-19 2:14:3540 secs ago0x521e66938959bd791dd0a71f9462250e2058cb63 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000132855650.06942902
0xaf69efbee4846dfa137d690c8e36b33919c132afa8d63eaaccb7aa534b36da5fMint Cube133517612024-04-19 2:14:2946 secs ago0xa4a5743b5c61651f6fb6ef9e7b0782fc1667c56d IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000106119570.05538375
0x155318b2ee079ae3baae72762eb0143c1c7d86b90224a50d5dae4853320d5041Mint Cube133517582024-04-19 2:14:2352 secs ago0xf74cd0bccc47333fe0dcb392d17a127870c72f03 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000119403120.055524633
0x218c3991daee6e9c7b00f50fab4d3c3dbc695dadd640a7a02a222a7aedb731a8Mint Cube133517562024-04-19 2:14:1956 secs ago0x21a2e8f10cd12dc45093d152784cb677d88f8324 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.000010650880.055606533
0x4951fe6b48865e1a413e675f18540ab3b9bc7b006b2138729ad68f850025d24fMint Cube133517562024-04-19 2:14:1956 secs ago0xbbd9111ff9d0ad76d2d1681adc6b88c392a794f4 IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000106526040.055606533
0x40dc87ba125a852940249254ff68f0c6b7d61190359165bdc5ade718453603f7Mint Cube133517562024-04-19 2:14:1956 secs ago0x0afa97ddfa9d8a248a06655b616bd03bd816017c IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000124612750.055626748
0x9b068825babeca4941f785938a64f37691590d21acf9a17c0d19301fa4b733cbMint Cube133517552024-04-19 2:14:1758 secs ago0x3976540e27d2e358dc3a55c8b6f781867690879c IN  0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70.000075 ETH0.0000119585270.05561864
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x6feff17561235900e401d3844b2a4d89ddc054abaaae763f09da377d613b55fa133517832024-04-19 2:15:132 secs ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x4abada14f8b83f2a0156e7d7fdc950946c3c69d90.00002475 ETH
0x7000953c73cc9db9a57ee6aa42fcbcb307ddbb869c3ee720e69c7b214cd0346b133517722024-04-19 2:14:5124 secs ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x40e993a2d501eda73bb0b5b498fc5882de51007a0.00002475 ETH
0xb1f99a111a2b8d274dfb05bf0208f1e89eda3f9a17f5c34b53dac86d2eff2ce5133517672024-04-19 2:14:4134 secs ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x3a96ddaf838e2507074acf8d988dcf265fb47af30.00002475 ETH
0xad3105cb11d1657d93b9822f9c40d800a914335c795ae86805491e36dba8c29b133517672024-04-19 2:14:4134 secs ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x340fd1b38e3344a8924dd54347cfddab0acb76a80.00002475 ETH
0x3200af80e9a8a1ab8f757681dd7e817b99d244657aa5613f51d2749812abb14c133517652024-04-19 2:14:3738 secs ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x59d898d5db5364cd83f09a3d7dfdb78f1a5d347e0.00002475 ETH
0x155318b2ee079ae3baae72762eb0143c1c7d86b90224a50d5dae4853320d5041133517582024-04-19 2:14:2352 secs ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x59d898d5db5364cd83f09a3d7dfdb78f1a5d347e0.00002475 ETH
0x40dc87ba125a852940249254ff68f0c6b7d61190359165bdc5ade718453603f7133517562024-04-19 2:14:1956 secs ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70xb9d94a3b9b7281ed261005407c9edd72f0a9c54e0.00002475 ETH
0x9b068825babeca4941f785938a64f37691590d21acf9a17c0d19301fa4b733cb133517552024-04-19 2:14:1758 secs ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x4abada14f8b83f2a0156e7d7fdc950946c3c69d90.00002475 ETH
0xcecb5947b76f78eace4bd904cc1f7dfb1746f0f5ad498d5d52435e9c9a50679c133517522024-04-19 2:14:111 min ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70xb9d94a3b9b7281ed261005407c9edd72f0a9c54e0.00002475 ETH
0x4a23cbe010f936d94e00a6d9b15424c51dd7e864d54657bc88129c494ab448d5133517452024-04-19 2:13:571 min ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x5e2cb33af78c69d4a35e7948455e2c2c09d76d2e0.00002475 ETH
0x0b399d95c0be21f1df1cdea0eef830c3bf562d19de281b0d690c584e8c048a36133517442024-04-19 2:13:551 min ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x7fe36ef874e6c1dd080a9da48b1a22234a7f84540.00002475 ETH
0xee29e628f536ca6e85dfa98e03e03fc3c7783647ae378a1e5226937c4a45bc8a133517402024-04-19 2:13:471 min ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x3a96ddaf838e2507074acf8d988dcf265fb47af30.00002475 ETH
0xdd73e73229b11d4f18bf467010e18107664be5d184a2c275f6f03d31c52573f6133517402024-04-19 2:13:471 min ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x090a5d9ee53e865fb5977f9f6c5ff56ff70c6dc80.00002475 ETH
0x3cbe81be0fc59d22f6b796019eeb14fad506244764652ec32b77ea13def9a6ce133517302024-04-19 2:13:271 min ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70xe9f1c5da7ab007f8298e50067ca0a0f90e9f49eb0.00002475 ETH
0xddca10ee2b3f3318b186ab43aedc44b85f2f97b0105a28bab214d4cf123fc26e133517192024-04-19 2:13:052 mins ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x3a96ddaf838e2507074acf8d988dcf265fb47af30.00002475 ETH
0x864132173c7b2c4952d69219c89056c8ea7e07a952b3e0c14788a8ed6e6f6bcf133516832024-04-19 2:11:533 mins ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70xec17c56b3606ca9517bc8b640f93acd48ad062170.00002475 ETH
0x8beb601423ed455f3d2540a5de5d57c3ce4ca154044adcd94f8b1868a717bc46133516792024-04-19 2:11:453 mins ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x4abada14f8b83f2a0156e7d7fdc950946c3c69d90.00002475 ETH
0x69255243dd7cc6e1fc3f00c8f93292a7592e32a0bd7784c8351c81f873777684133516632024-04-19 2:11:134 mins ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x40e993a2d501eda73bb0b5b498fc5882de51007a0.00002475 ETH
0xd0b1b262173f9e7d9e6ec4c0a38ae9a987033634c89fbfa3525e013f870c5c3a133516622024-04-19 2:11:114 mins ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x4abada14f8b83f2a0156e7d7fdc950946c3c69d90.00002475 ETH
0xebeb56d3c485dc343cdb4be5e462b86ca68f2ed1e9fd8763f884e9df3541ad07133516602024-04-19 2:11:074 mins ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x58bb8c65ce6af884471a20fae0f2e412f78d12440.00002475 ETH
0x7b98e6ec36dadc467f786ecbf7c407fc1c776d04dd48832c2a873a3e3e24a238133516392024-04-19 2:10:254 mins ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70xb9d94a3b9b7281ed261005407c9edd72f0a9c54e0.00002475 ETH
0xac9014524b2439c796f4094a983850f2f4b8f6bf668ae03747dff9646e4e19b5133516302024-04-19 2:10:075 mins ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70xd3abc5d986a2d99bfad902cdb4b01bd2bcf1576e0.00002475 ETH
0xc596f92009ec1567442e9fc2cfbf29776eaf5e97f871abccd5c3aff6068f7441133516132024-04-19 2:09:335 mins ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70xb9d94a3b9b7281ed261005407c9edd72f0a9c54e0.00002475 ETH
0xd97e584fd401af31b6c9a65c06ea7527566c81e0cbbe5804b5a1991665096f96133516042024-04-19 2:09:156 mins ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x4469f00bfbd45c2fb1f8b8115b02995db1b7b5620.00002475 ETH
0x508507ea85c76b99fda9ee0816fcb08345d9547bca40dfc15f15c31cdb1c95ab133516032024-04-19 2:09:136 mins ago 0x1195cf65f83b3a5768f3c496d3a05ad6412c64b70x3a96ddaf838e2507074acf8d988dcf265fb47af30.00002475 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ERC1967Proxy

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 10000 runs

Other Settings:
paris EvmVersion
File 1 of 6 : ERC1967Proxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Proxy.sol)

pragma solidity ^0.8.20;

import {Proxy} from "../Proxy.sol";
import {ERC1967Utils} from "./ERC1967Utils.sol";

/**
 * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
 * implementation address that can be changed. This address is stored in storage in the location specified by
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the
 * implementation behind the proxy.
 */
contract ERC1967Proxy is Proxy {
    /**
     * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.
     *
     * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an
     * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.
     *
     * Requirements:
     *
     * - If `data` is empty, `msg.value` must be zero.
     */
    constructor(address implementation, bytes memory _data) payable {
        ERC1967Utils.upgradeToAndCall(implementation, _data);
    }

    /**
     * @dev Returns the current implementation address.
     *
     * 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() internal view virtual override returns (address) {
        return ERC1967Utils.getImplementation();
    }
}

File 2 of 6 : Proxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)

pragma solidity ^0.8.20;

/**
 * @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 internal call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

            // Call the implementation.
            // out and outsize are 0 because we don't know the size yet.
            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)

            // Copy the returned data.
            returndatacopy(0, 0, returndatasize())

            switch result
            // delegatecall returns 0 on error.
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    /**
     * @dev This is a virtual function that should be overridden 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 internal call site, it will return directly to the external caller.
     */
    function _fallback() internal virtual {
        _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();
    }
}

File 3 of 6 : ERC1967Utils.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)

pragma solidity ^0.8.20;

import {IBeacon} from "../beacon/IBeacon.sol";
import {Address} from "../../utils/Address.sol";
import {StorageSlot} from "../../utils/StorageSlot.sol";

/**
 * @dev This abstract contract provides getters and event emitting update functions for
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.
 */
library ERC1967Utils {
    // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.
    // This will be fixed in Solidity 0.8.21. At that point we should remove these events.
    /**
     * @dev Emitted when the implementation is upgraded.
     */
    event Upgraded(address indexed implementation);

    /**
     * @dev Emitted when the admin account has changed.
     */
    event AdminChanged(address previousAdmin, address newAdmin);

    /**
     * @dev Emitted when the beacon is changed.
     */
    event BeaconUpgraded(address indexed beacon);

    /**
     * @dev Storage slot with the address of the current implementation.
     * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1.
     */
    // solhint-disable-next-line private-vars-leading-underscore
    bytes32 internal constant IMPLEMENTATION_SLOT =
        0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @dev The `implementation` of the proxy is invalid.
     */
    error ERC1967InvalidImplementation(address implementation);

    /**
     * @dev The `admin` of the proxy is invalid.
     */
    error ERC1967InvalidAdmin(address admin);

    /**
     * @dev The `beacon` of the proxy is invalid.
     */
    error ERC1967InvalidBeacon(address beacon);

    /**
     * @dev An upgrade function sees `msg.value > 0` that may be lost.
     */
    error ERC1967NonPayable();

    /**
     * @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 {
        if (newImplementation.code.length == 0) {
            revert ERC1967InvalidImplementation(newImplementation);
        }
        StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;
    }

    /**
     * @dev Performs implementation upgrade with additional setup call if data is nonempty.
     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected
     * to avoid stuck value in the contract.
     *
     * Emits an {IERC1967-Upgraded} event.
     */
    function upgradeToAndCall(address newImplementation, bytes memory data) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);

        if (data.length > 0) {
            Address.functionDelegateCall(newImplementation, data);
        } else {
            _checkNonPayable();
        }
    }

    /**
     * @dev Storage slot with the admin of the contract.
     * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1.
     */
    // solhint-disable-next-line private-vars-leading-underscore
    bytes32 internal constant ADMIN_SLOT =
        0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /**
     * @dev Returns the current admin.
     *
     * 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 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 {
        if (newAdmin == address(0)) {
            revert ERC1967InvalidAdmin(address(0));
        }
        StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;
    }

    /**
     * @dev Changes the admin of the proxy.
     *
     * Emits an {IERC1967-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 the keccak-256 hash of "eip1967.proxy.beacon" subtracted by 1.
     */
    // solhint-disable-next-line private-vars-leading-underscore
    bytes32 internal constant BEACON_SLOT =
        0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;

    /**
     * @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 {
        if (newBeacon.code.length == 0) {
            revert ERC1967InvalidBeacon(newBeacon);
        }

        StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;

        address beaconImplementation = IBeacon(newBeacon).implementation();
        if (beaconImplementation.code.length == 0) {
            revert ERC1967InvalidImplementation(beaconImplementation);
        }
    }

    /**
     * @dev Change the beacon and trigger a setup call if data is nonempty.
     * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected
     * to avoid stuck value in the contract.
     *
     * Emits an {IERC1967-BeaconUpgraded} event.
     *
     * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since
     * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for
     * efficiency.
     */
    function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {
        _setBeacon(newBeacon);
        emit BeaconUpgraded(newBeacon);

        if (data.length > 0) {
            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);
        } else {
            _checkNonPayable();
        }
    }

    /**
     * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract
     * if an upgrade doesn't perform an initialization call.
     */
    function _checkNonPayable() private {
        if (msg.value > 0) {
            revert ERC1967NonPayable();
        }
    }
}

File 4 of 6 : IBeacon.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)

pragma solidity ^0.8.20;

/**
 * @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.
     *
     * {UpgradeableBeacon} will check that this address is a contract.
     */
    function implementation() external view returns (address);
}

File 5 of 6 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)

pragma solidity ^0.8.20;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev The ETH balance of the account is not enough to perform the operation.
     */
    error AddressInsufficientBalance(address account);

    /**
     * @dev There's no code at `target` (it is not a contract).
     */
    error AddressEmptyCode(address target);

    /**
     * @dev A call to an address target failed. The target may have reverted.
     */
    error FailedInnerCall();

    /**
     * @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://consensys.net/diligence/blog/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.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        if (address(this).balance < amount) {
            revert AddressInsufficientBalance(address(this));
        }

        (bool success, ) = recipient.call{value: amount}("");
        if (!success) {
            revert FailedInnerCall();
        }
    }

    /**
     * @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 or custom error, it is bubbled
     * up by this function (like regular Solidity function calls). However, if
     * the call reverted with no returned reason, this function reverts with a
     * {FailedInnerCall} error.
     *
     * 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.
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0);
    }

    /**
     * @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`.
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        if (address(this).balance < value) {
            revert AddressInsufficientBalance(address(this));
        }
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target
     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an
     * unsuccessful call.
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata
    ) internal view returns (bytes memory) {
        if (!success) {
            _revert(returndata);
        } else {
            // only check if target is a contract if the call was successful and the return data is empty
            // otherwise we already know that it was a contract
            if (returndata.length == 0 && target.code.length == 0) {
                revert AddressEmptyCode(target);
            }
            return returndata;
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the
     * revert reason or with a default {FailedInnerCall} error.
     */
    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {
        if (!success) {
            _revert(returndata);
        } else {
            return returndata;
        }
    }

    /**
     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.
     */
    function _revert(bytes memory returndata) private pure {
        // 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
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert FailedInnerCall();
        }
    }
}

File 6 of 6 : StorageSlot.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)
// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.

pragma solidity ^0.8.20;

/**
 * @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:
 * ```solidity
 * 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(newImplementation.code.length > 0);
 *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
 *     }
 * }
 * ```
 */
library StorageSlot {
    struct AddressSlot {
        address value;
    }

    struct BooleanSlot {
        bool value;
    }

    struct Bytes32Slot {
        bytes32 value;
    }

    struct Uint256Slot {
        uint256 value;
    }

    struct StringSlot {
        string value;
    }

    struct BytesSlot {
        bytes value;
    }

    /**
     * @dev Returns an `AddressSlot` with member `value` located at `slot`.
     */
    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.
     */
    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
     */
    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.
     */
    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `StringSlot` with member `value` located at `slot`.
     */
    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.
     */
    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := store.slot
        }
    }

    /**
     * @dev Returns an `BytesSlot` with member `value` located at `slot`.
     */
    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.
     */
    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := store.slot
        }
    }
}

Settings
{
  "remappings": [
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "foundry-devops/=lib/foundry-devops/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/",
    "solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 10000
  },
  "metadata": {
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"}]

608060405260405161041738038061041783398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60b7806103606000396000f3fe6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220f254e3b8ad483091df955b828abe631a700fa6d64b27a4227cff0e8dc932b27464736f6c63430008140033000000000000000000000000d0ab2d3621dc8a862389f89f52f08c097e3fe8b5000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a42e64002400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000f1c0df2381ac4a6cac9c866ddbde3c3d641a1337000000000000000000000000000000000000000000000000000000000000000b4c617965723320435542450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004435542450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064c415945523300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600a600c565b005b60186014601a565b605e565b565b600060597f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e808015607c573d6000f35b3d6000fdfea2646970667358221220f254e3b8ad483091df955b828abe631a700fa6d64b27a4227cff0e8dc932b27464736f6c63430008140033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000d0ab2d3621dc8a862389f89f52f08c097e3fe8b5000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a42e64002400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000f1c0df2381ac4a6cac9c866ddbde3c3d641a1337000000000000000000000000000000000000000000000000000000000000000b4c617965723320435542450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004435542450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064c415945523300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : implementation (address): 0xd0aB2d3621DC8A862389f89F52F08c097e3Fe8B5
Arg [1] : _data (bytes): 0x2e64002400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000f1c0df2381ac4a6cac9c866ddbde3c3d641a1337000000000000000000000000000000000000000000000000000000000000000b4c617965723320435542450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004435542450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064c4159455233000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000

-----Encoded View---------------
17 Constructor Arguments found :
Arg [0] : 000000000000000000000000d0ab2d3621dc8a862389f89f52f08c097e3fe8b5
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 00000000000000000000000000000000000000000000000000000000000001a4
Arg [3] : 2e64002400000000000000000000000000000000000000000000000000000000
Arg [4] : 000000a000000000000000000000000000000000000000000000000000000000
Arg [5] : 000000e000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000012000000000000000000000000000000000000000000000000000000000
Arg [7] : 00000160000000000000000000000000f1c0df2381ac4a6cac9c866ddbde3c3d
Arg [8] : 641a133700000000000000000000000000000000000000000000000000000000
Arg [9] : 0000000b4c617965723320435542450000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [11] : 0000000443554245000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [13] : 000000064c415945523300000000000000000000000000000000000000000000
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [15] : 0000000131000000000000000000000000000000000000000000000000000000
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000000


Block Transaction Difficulty Gas Used Reward
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.