Contract 0xE27BFf97CE92C3e1Ff7AA9f86781FDd6D48F5eE9 5

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xc1568cf4d3a8d5fbe7334f54e0a6932080a45e7185e5a713c9d7206ab4e6ee22Mint And Swap34951182022-07-01 23:46:472 hrs 48 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.6851571216630
0xa7c70b3c94f2408e9807c66be2b7d6f0ece331e79d5996432bbebb1f3c9bf677Mint And Swap34948532022-07-01 23:21:423 hrs 13 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.7648160398570
0x7975c104e75b79520d2d732f962e721d735884ca2e1638380c8cbef5b8466e2fMint And Swap34948502022-07-01 23:21:253 hrs 13 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.6851739966830
0xc7525909fb672160eb6845d51a800b5630ae6a7766a8f08b587607db384eeb0dMint And Swap34948452022-07-01 23:20:573 hrs 14 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.7650816763810
0x24dc5a110df017a1c20140d8b64b7282e4c5825b20466729e44b80b6dd545d54Mint And Swap34948372022-07-01 23:20:113 hrs 14 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.7649592710170
0x2c1898ddfc33d38eb4458d1d987fdf74e842f896901b2c71691a0dfdc47636d7Mint And Swap34948342022-07-01 23:19:543 hrs 15 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.685057015310
0x354192485ae31696795838d83fe3f311c511040c410d017619db5dfb583b9d59Mint And Swap34948012022-07-01 23:16:433 hrs 18 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.7649606615010
0x42afe3db60aa7cb8f7cb84e59c6662202c2a52d5f3bec4a66d85dc3943f5f242Mint And Swap34927312022-07-01 19:59:196 hrs 35 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.7985103433940
0xe83e03c76bda5eee7bf5f2e5c7f1023a9cda9d0020a7be96ff1e29ecf6968730Mint And Swap34926442022-07-01 19:51:016 hrs 44 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.7187365494290
0x8d86c585770328e1b484e9c7a649d10b4c75049e91db3a0d43419b827ceea5e9Mint And Swap34924282022-07-01 19:30:197 hrs 4 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.7273018567390
0xca96a4b7d065bf0b6a3b64c65fa7063b04a55a8d0c1317c9dd6138b5f477a755Mint And Swap34923762022-07-01 19:25:227 hrs 9 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.7985151022050
0xbbd1407c1d844b45a239d764eb0bec150d2fa9d8f4103627dd2b86c15ff44fd3Mint And Swap34922762022-07-01 19:15:387 hrs 19 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.7021266154440
0xf3921b2dab10907076bba20313db83eb45f84a6f993d3bb465d3c34e7147adbbMint And Swap34921502022-07-01 19:03:337 hrs 31 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.6851307642150
0x38145342b22f5be1ac5750faefea3586732fb1a67e03e2909f25ae9824573c65Mint And Swap34920092022-07-01 18:50:107 hrs 44 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.6851963892560
0x08876d32fcd02891bcba37568e0d3dd3d7fc9b8874e5dd0d9ac74143e2cdf7a7Mint And Swap34919942022-07-01 18:48:447 hrs 46 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.6850689261550
0x9353379d48ff2ebacecdff7072da706b414ab6ed2012e50eaa579ba5fff31b34Mint And Swap34919462022-07-01 18:44:107 hrs 50 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.7649725195850
0x2dfc265b4d5c4b60263d9ae909cdee22253cb89e4b83e4462b87feb2ff90479cMint And Swap34919272022-07-01 18:42:227 hrs 52 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.6851973263780
0x0d487f803679b3080cd08202712aa054ff9ad418752a26a994e10a56d4154211Mint And Swap34919012022-07-01 18:39:547 hrs 55 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.7649731420110
0x2c2523504e57f88185c8a174848dc8619c7a79f04369d877567979abb57d9276Mint And Swap34916722022-07-01 18:18:078 hrs 16 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.6854558990520
0xd9efb93fdfc98b06768cf68d5ad1add4c1281c0572bd99153edb9a45bcb78689Mint And Swap34916492022-07-01 18:15:538 hrs 19 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.7651041282520
0xcaee6e3437cb6a944901b990994d326f267d675d59f73eed37e48e6b7f1ef7a6Mint And Swap34915992022-07-01 18:11:098 hrs 23 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.6852015109310
0x851e111a6520d68954a92d9dd0e3b7e209a6a8b4c8774dd375cdefb1afd86734Mint And Swap34914962022-07-01 18:01:188 hrs 33 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.6854581032470
0x9579212d44e85fc86cbce3c0dc0072d3841684d030083ce261ecb0502f13cf9bMint And Swap34913672022-07-01 17:48:598 hrs 46 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.7566728818950
0x5d0ff942db9780f6ec737bd40114e2310126481d3cfa9bc6d8d5b203d31e3db6Mint And Swap34912412022-07-01 17:36:528 hrs 58 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.6771539010750
0xd732e0d189abe37234360a248286331f69ea5eb5021fa4228f283c57b97133a5Mint And Swap34910162022-07-01 17:15:089 hrs 19 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee90 CRO1.6769013848020
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TransparentUpgradeableProxy

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at cronoscan.com on 2022-02-26
*/

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

// File contracts/proxy/Proxy.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.7.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 {
        // solhint-disable-next-line no-inline-assembly
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

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

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

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

    /**
     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function
     * and {_fallback} should delegate.
     */
    function _implementation() internal virtual view 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 {
        _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 () payable external {
        _fallback();
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
     * is empty.
     */
    receive () payable external {
        _fallback();
    }

    /**
     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`
     * call, or as part of the Solidity `fallback` or `receive` functions.
     * 
     * If overriden should call `super._beforeFallback()`.
     */
    function _beforeFallback() internal virtual {
    }
}


// File contracts/utils/Address.sol



pragma solidity ^0.7.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) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


// File contracts/proxy/UpgradeableProxy.sol



pragma solidity ^0.7.0;


/**
 * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
 * implementation address that can be changed. This address is stored in storage in the location specified by
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the
 * implementation behind the proxy.
 * 
 * Upgradeability is only provided internally through {_upgradeTo}. For an externally upgradeable proxy see
 * {TransparentUpgradeableProxy}.
 */
contract UpgradeableProxy is Proxy {
    /**
     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.
     * 
     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded
     * function call, and allows initializating the storage of the proxy like a Solidity constructor.
     */
    constructor(address _logic, bytes memory _data) payable {
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        _setImplementation(_logic);
        if(_data.length > 0) {
            // solhint-disable-next-line avoid-low-level-calls
            (bool success,) = _logic.delegatecall(_data);
            require(success);
        }
    }

    /**
     * @dev Emitted when the implementation is upgraded.
     */
    event Upgraded(address indexed implementation);

    /**
     * @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 private constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @dev Returns the current implementation address.
     */
    function _implementation() internal override view returns (address impl) {
        bytes32 slot = _IMPLEMENTATION_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            impl := sload(slot)
        }
    }

    /**
     * @dev Upgrades the proxy to a new implementation.
     * 
     * Emits an {Upgraded} event.
     */
    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Stores a new address in the EIP1967 implementation slot.
     */
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "UpgradeableProxy: new implementation is not a contract");

        bytes32 slot = _IMPLEMENTATION_SLOT;

        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(slot, newImplementation)
        }
    }
}


// File contracts/proxy/TransparentUpgradeableProxy.sol



pragma solidity ^0.7.0;

/**
 * @dev This contract implements a proxy that is upgradeable by an admin.
 * 
 * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector
 * clashing], which can potentially be used in an attack, this contract uses the
 * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two
 * things that go hand in hand:
 * 
 * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if
 * that call matches one of the admin functions exposed by the proxy itself.
 * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the
 * implementation. If the admin tries to call a function on the implementation it will fail with an error that says
 * "admin cannot fallback to proxy target".
 * 
 * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing
 * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due
 * to sudden errors when trying to call a function from the proxy implementation.
 * 
 * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,
 * you should think of the `ProxyAdmin` instance as the real administrative inerface of your proxy.
 */
contract TransparentUpgradeableProxy is UpgradeableProxy {
    /**
     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and
     * optionally initialized with `_data` as explained in {UpgradeableProxy-constructor}.
     */
    constructor(address initialLogic, address initialAdmin, bytes memory _data) payable UpgradeableProxy(initialLogic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        _setAdmin(initialAdmin);
    }

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

    /**
     * @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 private constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /**
     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.
     */
    modifier ifAdmin() {
        if (msg.sender == _admin()) {
            _;
        } else {
            _fallback();
        }
    }

    /**
     * @dev Returns the current admin.
     * 
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.
     * 
     * 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 admin() external ifAdmin returns (address) {
        return _admin();
    }

    /**
     * @dev Returns the current implementation.
     * 
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.
     * 
     * 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() external ifAdmin returns (address) {
        return _implementation();
    }

    /**
     * @dev Changes the admin of the proxy.
     * 
     * Emits an {AdminChanged} event.
     * 
     * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.
     */
    function changeAdmin(address newAdmin) external ifAdmin {
        require(newAdmin != address(0), "TransparentUpgradeableProxy: new admin is the zero address");
        emit AdminChanged(_admin(), newAdmin);
        _setAdmin(newAdmin);
    }

    /**
     * @dev Upgrade the implementation of the proxy.
     * 
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.
     */
    function upgradeTo(address newImplementation) external ifAdmin {
        _upgradeTo(newImplementation);
    }

    /**
     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified
     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the
     * proxied contract.
     * 
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.
     */
    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {
        _upgradeTo(newImplementation);
        // solhint-disable-next-line avoid-low-level-calls
        (bool success,) = newImplementation.delegatecall(data);
        require(success);
    }

    /**
     * @dev Returns the current admin.
     */
    function _admin() internal view returns (address adm) {
        bytes32 slot = _ADMIN_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            adm := sload(slot)
        }
    }

    /**
     * @dev Stores a new address in the EIP1967 admin slot.
     */
    function _setAdmin(address newAdmin) private {
        bytes32 slot = _ADMIN_SLOT;

        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(slot, newAdmin)
        }
    }

    /**
     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.
     */
    function _beforeFallback() internal override virtual {
        require(msg.sender != _admin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target");
        super._beforeFallback();
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"initialLogic","type":"address"},{"internalType":"address","name":"initialAdmin","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052604051610aaa380380610aaa8339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b50604052508491508290506100ee826101bf565b8051156101a6576000826001600160a01b0316826040518082805190602001908083835b602083106101315780518252601f199092019160209182019101610112565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610191576040519150601f19603f3d011682016040523d82523d6000602084013e610196565b606091505b50509050806101a457600080fd5b505b506101ae9050565b6101b782610231565b505050610291565b6101d28161025560201b6104bb1760201c565b61020d5760405162461bcd60e51b8152600401808060200182810382526036815260200180610a746036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061028957508115155b949350505050565b6107d4806102a06000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146101425780638f28397014610180578063f851a440146101c05761006d565b80633659cfe6146100755780634f1ef286146100b55761006d565b3661006d5761006b6101d5565b005b61006b6101d5565b34801561008157600080fd5b5061006b6004803603602081101561009857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101ef565b61006b600480360360408110156100cb57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561010357600080fd5b82018360208201111561011557600080fd5b8035906020019184600183028401116401000000008311171561013757600080fd5b509092509050610243565b34801561014e57600080fd5b50610157610317565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561018c57600080fd5b5061006b600480360360208110156101a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661036e565b3480156101cc57600080fd5b50610157610476565b6101dd6104f7565b6101ed6101e861058b565b6105b0565b565b6101f76105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023857610233816105f9565b610240565b6102406101d5565b50565b61024b6105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561030a57610287836105f9565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102f1576040519150601f19603f3d011682016040523d82523d6000602084013e6102f6565b606091505b505090508061030457600080fd5b50610312565b6103126101d5565b505050565b60006103216105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103635761035c61058b565b905061036b565b61036b6101d5565b90565b6103766105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102385773ffffffffffffffffffffffffffffffffffffffff8116610415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806106ed603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61043e6105d4565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301528051918290030190a161023381610646565b60006104806105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103635761035c6105d4565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906104ef57508115155b949350505050565b6104ff6105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604281526020018061075d6042913960600191505060405180910390fd5b6101ed6101ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156105cf573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6106028161066a565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b610673816104bb565b6106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806107276036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f20616464726573735570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a2646970667358221220b141ef72de179b8b56cef31601d40ff2875391088197e73cac39eba1ddcd0fdd64736f6c634300070600335570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374000000000000000000000000432036208d2717394d2614d6697c46df3ed69540000000000000000000000000a67b7147dce20d6f25fd9abfbcb1c3ca74e11f0b00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

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

000000000000000000000000432036208d2717394d2614d6697c46df3ed69540000000000000000000000000a67b7147dce20d6f25fd9abfbcb1c3ca74e11f0b00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : initialLogic (address): 0x432036208d2717394d2614d6697c46df3ed69540
Arg [1] : initialAdmin (address): 0xa67b7147dce20d6f25fd9abfbcb1c3ca74e11f0b
Arg [2] : _data (bytes): 0x

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000432036208d2717394d2614d6697c46df3ed69540
Arg [1] : 000000000000000000000000a67b7147dce20d6f25fd9abfbcb1c3ca74e11f0b
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

14113:4746:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2979:11;:9;:11::i;:::-;14113:4746;;2755:11;:9;:11::i;17139:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17139:111:0;;;;:::i;17636:299::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17636:299:0;;-1:-1:-1;17636:299:0;-1:-1:-1;17636:299:0;:::i;16405:104::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16725:246;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16725:246:0;;;;:::i;15846:86::-;;;;;;;;;;;;;:::i;2407:105::-;2448:17;:15;:17::i;:::-;2476:28;2486:17;:15;:17::i;:::-;2476:9;:28::i;:::-;2407:105::o;17139:111::-;15302:8;:6;:8::i;:::-;15288:22;;:10;:22;;;15284:100;;;17213:29:::1;17224:17;17213:10;:29::i;:::-;15284:100:::0;;;15361:11;:9;:11::i;:::-;17139:111;:::o;17636:299::-;15302:8;:6;:8::i;:::-;15288:22;;:10;:22;;;15284:100;;;17746:29:::1;17757:17;17746:10;:29::i;:::-;17847:12;17864:17;:30;;17895:4;;17864:36;;;;;;;;;;::::0;;::::1;::::0;-1:-1:-1;17864:36:0::1;::::0;-1:-1:-1;17864:36:0;;-1:-1:-1;;17864:36:0;;::::1;::::0;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17846:54;;;17919:7;17911:16;;;::::0;::::1;;15327:1;15284:100:::0;;;15361:11;:9;:11::i;:::-;17636:299;;;:::o;16405:104::-;16457:7;15302:8;:6;:8::i;:::-;15288:22;;:10;:22;;;15284:100;;;16484:17:::1;:15;:17::i;:::-;16477:24;;15284:100:::0;;;15361:11;:9;:11::i;:::-;16405:104;:::o;16725:246::-;15302:8;:6;:8::i;:::-;15288:22;;:10;:22;;;15284:100;;;16800:22:::1;::::0;::::1;16792:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16901:32;16914:8;:6;:8::i;:::-;16901:32;::::0;;::::1;::::0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;16944:19;16954:8;16944:9;:19::i;15846:86::-:0;15889:7;15302:8;:6;:8::i;:::-;15288:22;;:10;:22;;;15284:100;;;15916:8:::1;:6;:8::i;4100:619::-:0;4160:4;4628:20;;4471:66;4668:23;;;;;;:42;;-1:-1:-1;4695:15:0;;;4668:42;4660:51;4100:619;-1:-1:-1;;;;4100:619:0:o;18649:207::-;18735:8;:6;:8::i;:::-;18721:22;;:10;:22;;;;18713:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18825:23;:21;:23::i;11543:248::-;11393:66;11762:11;;11739:45::o;1007:907::-;1399:14;1396:1;1393;1380:34;1617:1;1614;1598:14;1595:1;1579:14;1572:5;1559:60;1696:16;1693:1;1690;1675:38;1736:6;1805:38;;;;1877:16;1874:1;1867:27;1805:38;1824:16;1821:1;1814:27;18001:219;15041:66;18191:11;;18169:44::o;11918:155::-;11985:37;12004:17;11985:18;:37::i;:::-;12038:27;;;;;;;;;;;11918:155;:::o;18307:216::-;15041:66;18483:22;18468:48::o;12169:369::-;12251:37;12270:17;12251:18;:37::i;:::-;12243:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11393:66;12489:31;12474:57::o

Swarm Source

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