Contract 0x9fae23a2700feecd5b93e43fdbc03c76aa7c08a6 2

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x8d428726715b7dc250b4f4d8f3d8d623939d265449bab2999e5d87f0de114badAccrue Reward140809992024-05-24 7:11:585 mins ago0x8c0ec5772bd92d55edd1325d022ec07e54ae1b0e IN  Liquid CRO: LCRO Token0 CRO0.50015 5,001.5
0xd5183095d9375e3a35b112682a5686f9c8b7c5cc9cd62971ff263c7ba32c2bf6Approve140809082024-05-24 7:03:2014 mins ago0xeefc0c0eb616573b0f5cdcb2351dd5f681767aca IN  Liquid CRO: LCRO Token0 CRO0.26006490
0x0a2a2f2e8e9ff0b0065e429ce4b3cceb8f90ed7c2796cf78b60d83bc6cd59b93Bridge140808832024-05-24 7:00:5816 mins ago0x8c0ec5772bd92d55edd1325d022ec07e54ae1b0e IN  Liquid CRO: LCRO Token0 CRO0.50015 5,001.5
0x1b34813b840640f5b472ecbb5a1c741e520c3994407c61623a59ab06f107b539Stake140808832024-05-24 7:00:5816 mins ago0xeefc0c0eb616573b0f5cdcb2351dd5f681767aca IN  Liquid CRO: LCRO Token1,585 CRO0.296662250
0x5c0903e2a9af83b013ea6295910785356841e5bd203ec5e46a015418ead5bc34Unbond140806962024-05-24 6:43:1534 mins ago0xe02aa84d800368e33f0af93c36b368c2a5782a6b IN  Liquid CRO: LCRO Token0 CRO0.83070480
0xb1ef71cf150016a32f1724c48857e06a270049bd518cb023cca6cfb94f69849aStake140806572024-05-24 6:39:3537 mins ago0xd9234be23d0665034629147d0ab961fd66efa0cb IN  Liquid CRO: LCRO Token402.72836419 CRO0.383017250
0xda55566c87c5af103486288d3d0e27c642d64ed0e9ae171dc08432dbf359da54Unbond140806182024-05-24 6:35:5341 mins ago0x0e907722bebcad0064e299ad10704d138f16750a IN  Liquid CRO: LCRO Token0 CRO0.83064420
0xb19287f27ec795fe63333e0379934a1cdfd2a4970e10888943f97e8ef72c00c6Unbond140804542024-05-24 6:20:2057 mins ago0xf7cd26304403b9e281bdb3a449d885aba733b240 IN  Liquid CRO: LCRO Token0 CRO0.83070480
0x38fed33453416beb68c07cfd889cf9aff243998044ff9906abb04afa444d6fcaAccrue Reward140803662024-05-24 6:11:591 hr 5 mins ago0x8c0ec5772bd92d55edd1325d022ec07e54ae1b0e IN  Liquid CRO: LCRO Token0 CRO0.50015 5,001.5
0xde42123314c34687c9dc361531d347c46e6acbdbd4af8e1244e3914fde7e409cBridge140802502024-05-24 6:01:011 hr 16 mins ago0x8c0ec5772bd92d55edd1325d022ec07e54ae1b0e IN  Liquid CRO: LCRO Token0 CRO0.50015 5,001.5
0x3db0036ef0bf13c8dc6b9eb223e6cd70816f7e45d3e6c67804a2da81bc1259b8Transfer140800092024-05-24 5:38:091 hr 39 mins ago0x563f6354fc42f5ec6c4f60e6c47de2fdb78d17fa IN  Liquid CRO: LCRO Token0 CRO0.2985837750
0xb909ee498080c7fe072932a98680af7689c90702c5e0c03052d0b7bf3a7623f4Transfer140799382024-05-24 5:31:261 hr 46 mins ago0xf133057e854a3b835de1d89e87ec475d20e53158 IN  Liquid CRO: LCRO Token0 CRO0.5050
0x48c9de18c997ebfe3fcaeaac9c4d43dab3e9e542dd4e778770f21bdea9f5923eApprove140798522024-05-24 5:23:161 hr 54 mins ago0xcef94f2dcc0ea60ad23c78b8f67504b1b132e66c IN  Liquid CRO: LCRO Token0 CRO0.26006490
0xcc273469545a00335b651b4e50b6bff62c525a1a87173fcfa6d400f7481111c4Approve140798442024-05-24 5:22:311 hr 55 mins ago0xb5641e0a7984531fcba369ba0c68418d72001b60 IN  Liquid CRO: LCRO Token0 CRO0.2730681450
0x3faba6701cc66c072bc650f82976ba14a106fb49991d99bc84ff16815321db2bStake140797392024-05-24 5:12:352 hrs 4 mins ago0x7b91933e1e95d2eb1e1ec13263337d34fd8608e9 IN  Liquid CRO: LCRO Token113.08203235 CRO0.383017250
0x0942d9b266fb13e78afd8eb7bf060f2c36d6e0063167f16b51f98ddc2c49e760Accrue Reward140797332024-05-24 5:12:012 hrs 5 mins ago0x8c0ec5772bd92d55edd1325d022ec07e54ae1b0e IN  Liquid CRO: LCRO Token0 CRO0.50015 5,001.5
0xf2e0834b57c6498eeb0e7e326e4feb7e6df24d302a0cc58389700f1b09388c5cUnbond140797262024-05-24 5:11:202 hrs 6 mins ago0x2de9fc2bccb7d7ab22bf82778fd32c85e35c78b7 IN  Liquid CRO: LCRO Token0 CRO0.83070480
0xd581485bea2cc775a26e5775716b63d7ca43d1c394c74a6ea82e430a4d5ca7e3Transfer140797152024-05-24 5:10:182 hrs 7 mins ago0x6630cddcdb6587cc496b63372c156e6f3c2c7651 IN  Liquid CRO: LCRO Token0 CRO0.2984019750
0xd138dfd683c42aec7de28c8721d9dce8427729a3f8872a33395e6e84ec431192Transfer140796352024-05-24 5:02:442 hrs 14 mins ago0xd04363cbbdaa09537482414e0b27cd611cfef176 IN  Liquid CRO: LCRO Token0 CRO0.5050
0x9240147d55a6ab65bbcba58366aa3812a57acae46be6dcc125a548d8f6b08738Stake140796312024-05-24 5:02:222 hrs 15 mins ago0x6842c6f7eb0f2cb337b8a00baed159ecfbc77d19 IN  Liquid CRO: LCRO Token28.49350431 CRO0.296662250
0x254db8fba092f1e18a3043cdad9dd2098c16d60c9ea4a968c3a6dab3b75309a3Approve140794692024-05-24 4:47:022 hrs 30 mins agoCronos ID Name 0766840452.cro IN  Liquid CRO: LCRO Token0 CRO0.257567247 5,001.5
0xb395b855b4d5e83bd79ca416742fbe9b26ce02659e069eaf51496d986b5d854fApprove140794202024-05-24 4:42:242 hrs 35 mins ago0xcfbf7c2d8d987f7827fdad567a71152a4330e5a7 IN  Liquid CRO: LCRO Token0 CRO0.25761488265 5,002.425
0xb42438358405bf1704349b795786fc597b3884e0dee416ac79011d196985986cTransfer140793742024-05-24 4:38:032 hrs 39 mins ago0x7b4e2c8fff860b35f6271e953a6bbfefa650bc8b IN  Liquid CRO: LCRO Token0 CRO0.2985837750
0x4f552847ea739e97ddcfdb18673c00bbdf70129ae83e570a87d6c2f8eeca681aTransfer140792862024-05-24 4:29:432 hrs 47 mins agoCronos ID Name alexleaver.cro IN  Liquid CRO: LCRO Token0 CRO0.5050
0xc47f7a6666db99d4a76df22699eb8b91d6ce2c6cea93450ccd16ea59dbfc7c33Unbond140792282024-05-24 4:24:142 hrs 53 mins ago0x9b45feeaae403d79a928ae9f9e0922b59f1d7b79 IN  Liquid CRO: LCRO Token0 CRO0.83070480
[ Download CSV Export 

OVERVIEW

$LCRO is the token receipt of liquid staked $CRO that users will receive after staking $CRO with Veno.$LCRO is an auto compounding yield-bearing token, where its internal exchange rate on Veno will increase over time when compared to $CRO based on $CRO staking yield on Crypto.org

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x29eb9c692b6b92003569d9bcf7610e46078a972d528a8e3440aa84b15beb13de140810002024-05-24 7:12:045 mins ago 0xf753035ad5ad3ae960f1b5de00a919b1a29fa214 Liquid CRO: LCRO Token0.15691111 CRO
0x3b621badc46a2e430380016bb864445864ab8138c0cc143b0ca314bc79ce4af2140809342024-05-24 7:05:4811 mins ago 0xf753035ad5ad3ae960f1b5de00a919b1a29fa214 Liquid CRO: LCRO Token0.1565411 CRO
0xd4bb3e8a45865be7ab52a9d98ab2fdedfc80bd592fb03c9c6be3f512f2326a63140808972024-05-24 7:02:1715 mins ago 0xf753035ad5ad3ae960f1b5de00a919b1a29fa214 Liquid CRO: LCRO Token0.15695155 CRO
0x0a2a2f2e8e9ff0b0065e429ce4b3cceb8f90ed7c2796cf78b60d83bc6cd59b93140808832024-05-24 7:00:5816 mins ago Liquid CRO: LCRO Token 0x6b1b50c2223eb31e0d4683b046ea9c6cb0d0ea4f65,271.1373615 CRO
0x940ffd2f0fdfc47f29aed15fab129b98791e8b39f42e0865d5115bf511ba5bfc140808012024-05-24 6:53:1224 mins ago 0xf753035ad5ad3ae960f1b5de00a919b1a29fa214 Liquid CRO: LCRO Token14,463 CRO
0x5c0903e2a9af83b013ea6295910785356841e5bd203ec5e46a015418ead5bc34140806962024-05-24 6:43:1534 mins ago Liquid CRO: LCRO Token0xe02aa84d800368e33f0af93c36b368c2a5782a6b43,234.096453403743915624 CRO
0x5c0903e2a9af83b013ea6295910785356841e5bd203ec5e46a015418ead5bc34140806962024-05-24 6:43:1534 mins ago Liquid CRO: LCRO Token0xc7b88708fd851223b79555251153669adc9e306d86.641475858524536905 CRO
0xda55566c87c5af103486288d3d0e27c642d64ed0e9ae171dc08432dbf359da54140806182024-05-24 6:35:5341 mins ago Liquid CRO: LCRO Token0x0e907722bebcad0064e299ad10704d138f16750a4,388.813642404854442796 CRO
0xda55566c87c5af103486288d3d0e27c642d64ed0e9ae171dc08432dbf359da54140806182024-05-24 6:35:5341 mins ago Liquid CRO: LCRO Token0xc7b88708fd851223b79555251153669adc9e306d8.795217720250209304 CRO
0x58ba98eb9fea1272cc96275c888969861d30046b6f040904e8ba58fa1f4f8668140805752024-05-24 6:31:4945 mins ago 0xf753035ad5ad3ae960f1b5de00a919b1a29fa214 Liquid CRO: LCRO Token50,405.40899731 CRO
0xb19287f27ec795fe63333e0379934a1cdfd2a4970e10888943f97e8ef72c00c6140804542024-05-24 6:20:2057 mins ago Liquid CRO: LCRO Token0xf7cd26304403b9e281bdb3a449d885aba733b240100,561.786335801866744241 CRO
0xb19287f27ec795fe63333e0379934a1cdfd2a4970e10888943f97e8ef72c00c6140804542024-05-24 6:20:2057 mins ago Liquid CRO: LCRO Token0xc7b88708fd851223b79555251153669adc9e306d201.526625923450634757 CRO
0xde42123314c34687c9dc361531d347c46e6acbdbd4af8e1244e3914fde7e409c140802502024-05-24 6:01:011 hr 16 mins ago Liquid CRO: LCRO Token 0x6b1b50c2223eb31e0d4683b046ea9c6cb0d0ea4f7,945.68121576 CRO
0x8cdeb9cf037f9a645bac17cc13f840ebab868855e235fd115383e4a0ee21995a140801422024-05-24 5:50:461 hr 26 mins ago 0xf753035ad5ad3ae960f1b5de00a919b1a29fa214 Liquid CRO: LCRO Token95 CRO
0x9fa2b5fa76383fd7c8717367b1e701db7b97cc1b761ca0a8522ee79fc1ce6055140799072024-05-24 5:28:301 hr 49 mins ago 0xf753035ad5ad3ae960f1b5de00a919b1a29fa214 Liquid CRO: LCRO Token890 CRO
0x85e0cc7ea6c28bcb6e1b3fda514961d8b981b70fab2ecb3d5c009f875b94de31140797952024-05-24 5:17:541 hr 59 mins ago 0xf753035ad5ad3ae960f1b5de00a919b1a29fa214 Liquid CRO: LCRO Token6,000 CRO
0xf2e0834b57c6498eeb0e7e326e4feb7e6df24d302a0cc58389700f1b09388c5c140797262024-05-24 5:11:202 hrs 6 mins ago Liquid CRO: LCRO Token0x2de9fc2bccb7d7ab22bf82778fd32c85e35c78b72,038.610408110286276784 CRO
0xf2e0834b57c6498eeb0e7e326e4feb7e6df24d302a0cc58389700f1b09388c5c140797262024-05-24 5:11:202 hrs 6 mins ago Liquid CRO: LCRO Token0xc7b88708fd851223b79555251153669adc9e306d4.085391599419411376 CRO
0x05f044bb5a1e2e53d258d812d788d5d6051d4101d1173021cfa74206299acd70140796632024-05-24 5:05:232 hrs 12 mins ago 0xf753035ad5ad3ae960f1b5de00a919b1a29fa214 Liquid CRO: LCRO Token19.1056791 CRO
0xc47f7a6666db99d4a76df22699eb8b91d6ce2c6cea93450ccd16ea59dbfc7c33140792282024-05-24 4:24:142 hrs 53 mins ago Liquid CRO: LCRO Token0x9b45feeaae403d79a928ae9f9e0922b59f1d7b795,254.157101126243215041 CRO
0xc47f7a6666db99d4a76df22699eb8b91d6ce2c6cea93450ccd16ea59dbfc7c33140792282024-05-24 4:24:142 hrs 53 mins ago Liquid CRO: LCRO Token0xc7b88708fd851223b79555251153669adc9e306d10.529372948148783998 CRO
0x8c1095da1e2c27344fd42bd2c3eb869be0e9e96069094c80c1e6db2f92fb1f66140789822024-05-24 4:00:583 hrs 16 mins ago Liquid CRO: LCRO Token 0x6b1b50c2223eb31e0d4683b046ea9c6cb0d0ea4f4,548.68167655 CRO
0xe58cb85bfd558ae5f214da69ad45785bc4d168fb48aa4bc07e5fc446c5aea379140789502024-05-24 3:57:573 hrs 19 mins ago 0xf753035ad5ad3ae960f1b5de00a919b1a29fa214 Liquid CRO: LCRO Token3,346.68167655 CRO
0x519834a4e634f828e5df9e7f2cb705e0eaf42ca35ccd2296b6e3cc9386170a58140789452024-05-24 3:57:283 hrs 20 mins ago 0xf753035ad5ad3ae960f1b5de00a919b1a29fa214 Liquid CRO: LCRO Token1 CRO
0x61260bea20bcdfb88280c1219f90173414a365fc86c9b7b4c2df20cbc2405f5e140786302024-05-24 3:27:403 hrs 49 mins ago 0xf753035ad5ad3ae960f1b5de00a919b1a29fa214 Liquid CRO: LCRO Token1 CRO
[ Download CSV Export 
Index Block
Loading

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

Contract Name:
ERC1967Proxy

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 7 : draft-IERC1822.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)

pragma solidity ^0.8.0;

/**
 * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified
 * proxy whose upgrades are fully controlled by the current implementation.
 */
interface IERC1822Proxiable {
    /**
     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation
     * address.
     *
     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks
     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this
     * function revert if invoked through a proxy.
     */
    function proxiableUUID() external view returns (bytes32);
}

File 2 of 7 : ERC1967Proxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (proxy/ERC1967/ERC1967Proxy.sol)

pragma solidity ^0.8.0;

import "../Proxy.sol";
import "./ERC1967Upgrade.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, 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 initializing the storage of the proxy like a Solidity constructor.
     */
    constructor(address _logic, bytes memory _data) payable {
        _upgradeToAndCall(_logic, _data, false);
    }

    /**
     * @dev Returns the current implementation address.
     */
    function _implementation() internal view virtual override returns (address impl) {
        return ERC1967Upgrade._getImplementation();
    }
}

File 3 of 7 : ERC1967Upgrade.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)

pragma solidity ^0.8.2;

import "../beacon/IBeacon.sol";
import "../../interfaces/draft-IERC1822.sol";
import "../../utils/Address.sol";
import "../../utils/StorageSlot.sol";

/**
 * @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 {
        _upgradeTo(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 _upgradeToAndCallUUPS(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        // Upgrades from old implementations will perform a rollback test. This test requires the new
        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing
        // this special case will break upgrade paths from old UUPS implementation to new ones.
        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {
            _setImplementation(newImplementation);
        } else {
            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {
                require(slot == _IMPLEMENTATION_SLOT, "ERC1967Upgrade: unsupported proxiableUUID");
            } catch {
                revert("ERC1967Upgrade: new implementation is not UUPS");
            }
            _upgradeToAndCall(newImplementation, data, forceCall);
        }
    }

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

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

File 4 of 7 : Proxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (proxy/Proxy.sol)

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 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 {
        _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 overridden should call `super._beforeFallback()`.
     */
    function _beforeFallback() internal virtual {}
}

File 5 of 7 : IBeacon.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (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 6 of 7 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @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
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 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");

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

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

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

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal 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
                /// @solidity memory-safe-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 7 of 7 : StorageSlot.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (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) {
        /// @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
        }
    }
}

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/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "solidity-datetime/=lib/solidity-datetime/",
    "solidity-datetime/contracts/=lib/solidity-datetime/contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {
    "src/libraries/NFTDescriptor.sol": {
      "NFTDescriptor": "0xbfd6ef07df5c5da0327c7988accf0ba100cf682b"
    }
  }
}

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

Deployed Bytecode

0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025e602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b60606001600160a01b0384163b6101305760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161014b919061020e565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b509150915061019b8282866101a5565b9695505050505050565b606083156101b457508161004e565b8251156101c45782518084602001fd5b8160405162461bcd60e51b8152600401610127919061022a565b60005b838110156101f95781810151838201526020016101e1565b83811115610208576000848401525b50505050565b600082516102208184602087016101de565b9190910192915050565b60208152600082518060208401526102498160408501602087016101de565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202cb0563ac7e228e7a7b0a334712a2bad6f4ddc9b6016fabaa4a4293c05279b8c64736f6c634300080f0033

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.