Contract 0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa 5

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x54f0bc61cb9116f424a759c5ba07af0e90caaadb283edf574f4c152146ecfebdApprove390494692023-02-08 8:05:3322 hrs 45 mins ago0x8f76cbc01e3864877996ce4854aa4db1498840e9 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.012780467063 199.345942473
0xec823f8a90b68de9912e8b86c6ca689f5521b166394bf1f7d4ae3597bf4228deApprove389700872023-02-06 7:21:002 days 23 hrs ago0x4b659f4ee9d0b76ab738dcfc60fd83fb7b7f78fa IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.010036836568 155.735423421
0x1a5f36fcb574e10f4f6627465512b87db31a8914c9276f561dad3cb151356bcbApprove389604572023-02-06 1:19:393 days 5 hrs ago0xb779daead6031ef189cad4ac438c991efe7635a7 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.007724128906 120.501230985
0x6c62cfd1c504ecf1e8f92e106e277c07c2e259a13a1a82215c36d3791bd6de94Approve389493092023-02-05 18:19:433 days 12 hrs ago0x84803a43edb2eee7cf0f4e7d95adb4271c751233 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.01014779112 157.457037
0x56070584b6835ddd2c61a4f42bb1af4d919f788df52492283b7fdb6bbebe0c2bApprove388115752023-02-02 5:50:367 days 1 hr ago0x3058a0d5e8e1a7b15dbf13eb3d411ee3efea70d9 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.00902272140
0xba565598a7a79c48d0c4ecb9c6aea10a66ed43c3fc85e2fdb2cf649eccfdde3cApprove387422412023-01-31 11:42:588 days 19 hrs ago0x5ed0c67d8a4e3880af5a701ffa413661b554eb2d IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.007159671364 111.092219538
0x65c36e87105f9cd0a9315569ce317fb2c5bce54adc3b4e3a5ed8399bfd591f76Approve386819792023-01-29 22:56:0610 days 7 hrs ago0x86b2b341c5a3e13ef1a39d7a0ecccc4faad98589 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.004819900355 74.787431032
0xf7961bfa9f20bed6f05b54959b7c7f1fc1a239462dac054abfb31ec71912361fApprove386585822023-01-29 8:52:4210 days 21 hrs ago0x169134b23855d41a9e0d9bc23df27a5ef3ef8dd0 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.00233599933752.43780501
0x761f6ca0849d41993213cfd999ebae8d0411fec16c43a3a3ba04e9bdfec08f35Approve386585812023-01-29 8:52:3810 days 21 hrs ago0x169134b23855d41a9e0d9bc23df27a5ef3ef8dd0 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.00314042525648.728048296
0x8fe4a1e08816aaf0c96a39a926b8cf31aceb05afcd9c1705671caea969866576Approve385925362023-01-27 15:55:3712 days 14 hrs ago0x539ead6ccfc5b2988566ddc7c9a36f0449210c4f IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.012153050933 188.571420887
0x2b6206b61c1cab3fea6369c529c104112b08c0db1a63eab6d2ff91e50b8ba776Approve385444202023-01-26 10:03:3013 days 20 hrs ago0x390348a5739b689fac59de9bd5b3508e3960545e IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.004182938423 64.904084271
0x0f146ce8d066f8119f0e6f42bb2ffd165f295e3b879f8139e2c0923cfbb5bf85Approve385424422023-01-26 8:51:5913 days 21 hrs ago0x795170e6c4c561e146f2ac583bddc090fdb2384a IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.004315041738 66.953850207
0xfe47fe6779b59d77a5b5fc14fed0971043d0a7c5135da4b62f90d627f82dd57dApprove385403392023-01-26 7:36:2213 days 23 hrs ago0x028a93785cd4586ef5fbf01637ca7b810686ac61 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.003129264955 48.554880771
0x937c6e11f41f7c47a2fc3414f1f0601732f6d72947850d14dc2c6ad73a50b4d7Approve384942742023-01-25 3:47:3515 days 3 hrs ago0x6c05f3c373a5aad871902a56bdf0a608baf6c354 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.002832010523 43.942566462
0x777ba92e729ba8c5ef03c67a6cf2ccf84f9cef6fae47936ab75d727a2787ec46Approve384747512023-01-24 15:57:5715 days 14 hrs ago0x2c6fac039e6a6638c51e5f5e38db65a86e5f2162 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.002362794215 56.03818934
0x6293e3df5f63102d6b4ff9b1820658340622ac3941c0e6143def3f1763c298fbApprove384707952023-01-24 13:33:0015 days 17 hrs ago0x120507a3e75b59188270b271614fa4987743e184 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.004294005882 66.627449764
0x8879770620dddd01498db6051bde47ca87a862f39620d2673e70b1dd2a8b2310Approve383909922023-01-22 13:44:3317 days 17 hrs ago0x1b359dce27cc9fb076f0ce9703bf667cbfe617a3 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.005930575456 92.021093858
0x9c0b365db5814fd51eecbe36c6ddd5b73c440016162ce3b122bbf0419fd00681Approve383902312023-01-22 13:16:3117 days 17 hrs ago0xaf50fe741a52ab8f710fdd23f9326e1bc5da6b10 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.003167208111 75.116405254
0x831be4d5aef0fc93d4105f94ca6ee5d1cedbcf8fd4d9f846ecb6fe2a9087bee5Approve383833932023-01-22 9:09:0917 days 21 hrs ago0x0eaa21f9f87f78f64f2fb93d99c91beeb275e8f3 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.003433715011 53.278845137
0x593318961c8843ba5254551ccccba4cb93bd9aec4ef4efaaf78141f9f4233c9aApprove383678572023-01-21 23:53:1118 days 6 hrs ago0xc2031ea96d828669c1544fad0415af21e2628055 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.002150503218 48.273844355
0x3fea6b6a9d09d9ff75be31696a87c07826398a7fe8db7d77700641c5f8ecb39bApprove383678572023-01-21 23:53:1118 days 6 hrs ago0xc2031ea96d828669c1544fad0415af21e2628055 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.003033914885 47.075392344
0xb9e4b39e5d55f086de67cd90f42b1623e5301c90ce8ea955c92c739f72ba7e16Approve383543022023-01-21 15:31:3418 days 15 hrs ago0xf27b49e1c225eceabc34db9dfc1bd6bd8617b64b IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.004327465892 67.146628172
0x4a34172b96961ce5512bd959be00fc2c0b78d903a0aed5f16292f1f597fe65f9Approve383517972023-01-21 14:02:5218 days 16 hrs ago0x585003042c7ca64b0cc9705ff672d3c0aeb66ae0 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.004671200169 72.480141657
0x62f9e581aababed6cd460fe879684197e1041d1b191b96da125f6030f46524c3Approve383438832023-01-21 9:14:5918 days 21 hrs ago0x90cc16a0f660796deaf35abdc05ceb829a3d84c8 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.00346462388853.75843919
0x8786af2b63787e6236d5f43cf8827bdcc50bd3fdfdac05185a0743fe6e55848bApprove383435352023-01-21 9:02:0718 days 21 hrs ago0x7ca4951bf70b1dac507c5e78bfdd407abcefede0 IN  0x1ddcaa4ed761428ae348befc6718bcb12e63bfaa0 MATIC0.003814054086 59.180332769
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x9163e8ad038331f73b6e6e2f105ec119eb956cc89412a6382d7dd096e469b71d241620642022-01-25 22:15:32379 days 8 hrs ago 0x8244d6ffe0695b30b2bad424683ee3bc534ea464  Contract Creation0 MATIC
[ Download CSV Export 
Loading

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

Contract Name:
DeBridgeTokenProxy

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 7 : DeBridgeTokenProxy.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.7;

import "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol";

/// @dev This contract implements a proxy that gets the implementation address for each call
/// from DeBridgeTokenDeployer. It's deployed by DeBridgeTokenDeployer.
/// Implementation is DeBridgeToken.
contract DeBridgeTokenProxy is BeaconProxy {
    constructor(address beacon, bytes memory data) BeaconProxy(beacon, data) {

    }
}

File 2 of 7 : BeaconProxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (proxy/beacon/BeaconProxy.sol)

pragma solidity ^0.8.0;

import "./IBeacon.sol";
import "../Proxy.sol";
import "../ERC1967/ERC1967Upgrade.sol";

/**
 * @dev This contract implements a proxy that gets the implementation address for each call from a {UpgradeableBeacon}.
 *
 * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't
 * conflict with the storage layout of the implementation behind the proxy.
 *
 * _Available since v3.4._
 */
contract BeaconProxy is Proxy, ERC1967Upgrade {
    /**
     * @dev Initializes the proxy with `beacon`.
     *
     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This
     * will typically be an encoded function call, and allows initializating the storage of the proxy like a Solidity
     * constructor.
     *
     * Requirements:
     *
     * - `beacon` must be a contract with the interface {IBeacon}.
     */
    constructor(address beacon, bytes memory data) payable {
        assert(_BEACON_SLOT == bytes32(uint256(keccak256("eip1967.proxy.beacon")) - 1));
        _upgradeBeaconToAndCall(beacon, data, false);
    }

    /**
     * @dev Returns the current beacon address.
     */
    function _beacon() internal view virtual returns (address) {
        return _getBeacon();
    }

    /**
     * @dev Returns the current implementation address of the associated beacon.
     */
    function _implementation() internal view virtual override returns (address) {
        return IBeacon(_getBeacon()).implementation();
    }

    /**
     * @dev Changes the proxy to use a new beacon. Deprecated: see {_upgradeBeaconToAndCall}.
     *
     * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon.
     *
     * Requirements:
     *
     * - `beacon` must be a contract.
     * - The implementation returned by `beacon` must be a contract.
     */
    function _setBeacon(address beacon, bytes memory data) internal virtual {
        _upgradeBeaconToAndCall(beacon, data, false);
    }
}

File 3 of 7 : IBeacon.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (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 4 of 7 : Proxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.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 internall 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 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 5 of 7 : ERC1967Upgrade.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (proxy/ERC1967/ERC1967Upgrade.sol)

pragma solidity ^0.8.2;

import "../beacon/IBeacon.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 _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
            _upgradeTo(newImplementation);
        }
    }

    /**
     * @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 6 of 7 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Address.sol)

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        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");

        (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

                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 v4.4.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) {
        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
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"beacon","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","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"}]

608060405234801561001057600080fd5b506040516109a43803806109a483398101604081905261002f91610481565b818161005c60017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51610590565b60008051602061095d83398151915214610078576100786105e1565b6100848282600061008d565b5050505061060d565b61009683610167565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a26000825111806100d75750805b1561016257610160836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561011857600080fd5b505afa15801561012c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101509190610466565b8361030760201b6100291760201c565b505b505050565b61017a8161033360201b6100551760201c565b6101d95760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b61025c816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561021557600080fd5b505afa158015610229573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024d9190610466565b61033360201b6100551760201c565b6102c15760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b60648201526084016101d0565b806102e660008051602061095d83398151915260001b61033960201b61005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606061032c838360405180606001604052806027815260200161097d6027913961033c565b9392505050565b3b151590565b90565b6060833b61039b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101d0565b600080856001600160a01b0316856040516103b69190610541565b600060405180830381855af49150503d80600081146103f1576040519150601f19603f3d011682016040523d82523d6000602084013e6103f6565b606091505b509092509050610407828286610411565b9695505050505050565b6060831561042057508161032c565b8251156104305782518084602001fd5b8160405162461bcd60e51b81526004016101d0919061055d565b80516001600160a01b038116811461046157600080fd5b919050565b60006020828403121561047857600080fd5b61032c8261044a565b6000806040838503121561049457600080fd5b61049d8361044a565b60208401519092506001600160401b03808211156104ba57600080fd5b818501915085601f8301126104ce57600080fd5b8151818111156104e0576104e06105f7565b604051601f8201601f19908116603f01168101908382118183101715610508576105086105f7565b8160405282815288602084870101111561052157600080fd5b6105328360208301602088016105b5565b80955050505050509250929050565b600082516105538184602087016105b5565b9190910192915050565b602081526000825180602084015261057c8160408501602087016105b5565b601f01601f19169190910160400192915050565b6000828210156105b057634e487b7160e01b600052601160045260246000fd5b500390565b60005b838110156105d05781810151838201526020016105b8565b838111156101605750506000910152565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6103418061061c6000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610106565b565b606061004e83836040518060600160405280602781526020016102e56027913961012a565b9392505050565b3b151590565b90565b60006100917fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100c957600080fd5b505afa1580156100dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610101919061023c565b905090565b3660008037600080366000845af43d6000803e808015610125573d6000f35b3d6000fd5b6060833b61018e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101a99190610265565b600060405180830381855af49150503d80600081146101e4576040519150601f19603f3d011682016040523d82523d6000602084013e6101e9565b606091505b50915091506101f9828286610203565b9695505050505050565b6060831561021257508161004e565b8251156102225782518084602001fd5b8160405162461bcd60e51b81526004016101859190610281565b60006020828403121561024e57600080fd5b81516001600160a01b038116811461004e57600080fd5b600082516102778184602087016102b4565b9190910192915050565b60208152600082518060208401526102a08160408501602087016102b4565b601f01601f19169190910160400192915050565b60005b838110156102cf5781810151838201526020016102b7565b838111156102de576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a18bc50c5921af59a712c442ad6d4685a72cd510277d71c9dd1b938b2513d65864736f6c63430008070033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000008244d6ffe0695b30b2bad424683ee3bc534ea464000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001645471a50400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000a52842cd43fa8c4b6660e443194769531d45b26500000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000005457468657200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034554480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000043de2d77bf8027e25dbd179b491e8d64f38398aa00000000000000000000000000000000000000000000000000000000

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
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.