Contract 0x9d50518de14f89836f2b9b9ac05f177de7bf521a

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x3efe4895e3483f48350c8eb3a05dc6130123a2caaf5dce0ae24b91dc82f4537bMigrate147885302022-01-29 12:27:501 min ago0xb14580c524df48d903050e8cd271cac5bfee3370 IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
0xfd6b3362a0f6c41e8dd71c53086d5cc40198df290b7208cc413a7abb615000afMigrate147885302022-01-29 12:27:501 min ago0x3bad75ac5c04459c0ce77a6782acf3fb0f236d84 IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
0xcc21ba340549ca732b96f52c607884c325b5f6e37f9290e6d12c44d7497df255Migrate147885292022-01-29 12:27:471 min ago0x55b4e0486208861be516724c2214002d265ff66a IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720551
0x82852b9a1fff5e045e43570d04b78b007b0d2ca7a9cd1d6ac2f782100eb40fe2Migrate147885272022-01-29 12:27:411 min ago0x6ac8abb90c55fd74fb5e9e879e22068256277fcd IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00713027
0xf271f550c31aa299234be80b60597139fa2cbae9aaf0f282f295889efb9cf0cfMigrate147885232022-01-29 12:27:292 mins ago0x4f5d24392d6e8962e8ae1b240e3f8745e0b5d155 IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
0xffeae710d40d77ef7e69f0b93c62aad6cdc9015cd4bef753c9734f0d91349c5aMigrate147885032022-01-29 12:26:293 mins ago0x8840bd51faff2dc45f28bdaad8f2afe188f264bc IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720551
0x6f80bae9028a185e5f85cf77dbb81629298f242444671724714c70a90d12eddaMigrate147884972022-01-29 12:26:113 mins ago0x4a86ec2e836f55da3abc3a7f2124ceef3ec114bb IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.001952349
0x5c02629bba7853e971496e62629e048b4bb8ccc9216efaa49543b12e9259c038Migrate147884962022-01-29 12:26:083 mins ago0xaa8def2d0d9d79a3e48d63c5de7883ef8606b27d IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00718427
0x18211def4b294abacb594668487bc6f26f2c9a0a39767851a25db4d2716abeeeMigrate147884952022-01-29 12:26:053 mins ago0x4a86ec2e836f55da3abc3a7f2124ceef3ec114bb IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.010087714
0xa0fda56f70ca148f46311947bc7ba2db9fb6f071b43c7bfbc8ea38085b4b916cMigrate147884742022-01-29 12:25:024 mins ago0xf7e9c425c2c7076d33ccac202afc62e64a527f17 IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
0xa5c03fd79ac5e97937884205068b1ae49019b4049889bb6ef84f6b2963bdc0acMigrate147884732022-01-29 12:24:594 mins ago0x6ac8abb90c55fd74fb5e9e879e22068256277fcd IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720551
0x550b9431a27bbbc0dade538f0a615f6b07e6af29fd488cafc11da8a2e56831c1Migrate147884722022-01-29 12:24:564 mins ago0xe89b22013f91b7bec51b84c12bcd525cb5bd7bf0 IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
0xd181ee564d9095d6290d50984e9043dd376a863103bdc4921405bfb8f052ce0fMigrate147884582022-01-29 12:24:145 mins ago0x3243f6816c86d6f27b5e8053a809919725cffd9b IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
0x79e41f833b2f8c84cba1f7fa16f00651ac234fc9d20e86ab471e73840834fbaeMigrate147884572022-01-29 12:24:115 mins ago0x840d60d6a395c07b5d164856861c9b1de1921b75 IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
0x44f11f50229faa4fe2cef0d54ff37f2a8dfb2ac05a7e9547f9a183c224e36ae4Migrate147884452022-01-29 12:23:356 mins ago0xae900ae5879a28f5641047ec81ca8f524d3a9ae1 IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
0x7801dad03eb3a7f8d64b6858c9399ed3e785a0044dec9234dd07d8c4697b3037Migrate147884402022-01-29 12:23:206 mins ago0x80dbee7199428bbdd2a6b1125b5627cd75a837fa IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720551
0xd2385ed9313750b442b2b0b64d660aaaa20dd0190d3843ef749a09c177695382Migrate147884342022-01-29 12:23:026 mins ago0xb9aa85655d9b236c7e656ad3c06db81ca78771b4 IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
0xe5d9c31be0decbb97afcde9e719c36fd1eb76fb62172b20b04410adc51263a20Migrate147883982022-01-29 12:21:148 mins ago0x444b04ed0414a367d9a090c58692bada11d69e14 IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
0x16535ecc6da0977ad625752c106e3ffe5b782ccc40b2d851c0b34d7b59afcbe4Migrate147883722022-01-29 12:19:569 mins ago0x458c753756a963b02fe211a0a93690d85d109da4 IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
0x833d97240ca396e33f80410bc4cbb4055f450882668135329c6ce2687ea180c8Migrate147883682022-01-29 12:19:449 mins ago0xa780e08cf7623f55be5da2356259eb4e97528442 IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
0x6186ff15f4f80324a1e57bfceb73e0c2960d90f0a82876339a4b499c2d619aacMigrate147883642022-01-29 12:19:3210 mins ago0x78c48080f28d06d83a3f8604c40bcf5cda6707df IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
0xa87166dd98434526e1ec727ae10d96c8591a1606373ec0274d123c93728b5e24Migrate147883362022-01-29 12:18:0811 mins ago0x9a6a46ec7bf8bbfa5fc92e239319ad051d3ca103 IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720551
0xb1c5465cb33a4f71278ae0a733772b90ac35b1efdf4996c0fa53f7c02a8280efMigrate147883302022-01-29 12:17:5011 mins ago0xc601dbdd6dbf97fc12a22ce6144099bab7682e9f IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
0xdde041d37109947efcff3e6463a0c37538545e8b779d2b198529f0f8b57b094eMigrate147883052022-01-29 12:16:3513 mins ago0x2a7c42248e2a9f6e112564cf2c86ce32d1f42d95 IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720551
0xe7ba466b249fe9ca6ba620c98a229521dc4e31b8870d9490bd5167d212d92630Migrate147882492022-01-29 12:13:4715 mins ago0x590b443197ac2a32e2a9a1dc8626f197f68ab6b9 IN  0x9d50518de14f89836f2b9b9ac05f177de7bf521a0 BNB0.00720545
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

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

Contract Name:
TransparentUpgradeableProxy

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at BscScan.com on 2021-11-26
*/

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
 * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
 * be specified by overriding the virtual {_implementation} function.
 *
 * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
 * different contract through the {_delegate} function.
 *
 * The success and return data of the delegated call will be returned back to the caller of the proxy.
 */
abstract contract Proxy {
    /**
     * @dev Delegates the current call to `implementation`.
     *
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        // solhint-disable-next-line no-inline-assembly
        assembly {
        // Copy msg.data. We take full control of memory in this inline assembly
        // block because it will not return to Solidity code. We overwrite the
        // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

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

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

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

    /**
     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function
     * and {_fallback} should delegate.
     */
    function _implementation() internal view virtual returns (address);

    /**
     * @dev Delegates the current call to the address returned by `_implementation()`.
     *
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _fallback() internal virtual {
        _beforeFallback();
        _delegate(_implementation());
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
     * function in the contract matches the call data.
     */
    fallback () external payable virtual {
        _fallback();
    }

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

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




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

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

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

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

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

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

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

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

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

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



/**
 * @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) public payable {
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        _setImplementation(_logic);
        if(_data.length > 0) {
            Address.functionDelegateCall(_logic, _data);
        }
    }

    /**
     * @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 view virtual override 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 virtual {
        _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)
        }
    }
}



/**
 * @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 interface 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 _logic, address admin_, bytes memory _data) public payable UpgradeableProxy(_logic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        _setAdmin(admin_);
    }

    /**
     * @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 admin_) {
        admin_ = _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 implementation_) {
        implementation_ = _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 virtual 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 virtual 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 virtual ifAdmin {
        _upgradeTo(newImplementation);
        Address.functionDelegateCall(newImplementation, data);
    }

    /**
     * @dev Returns the current admin.
     */
    function _admin() internal view virtual 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 virtual override {
        require(msg.sender != _admin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target");
        super._beforeFallback();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","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":"admin_","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":"implementation_","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"}]

608060405260405162000c7e38038062000c7e833981810160405260608110156200002957600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200005557600080fd5b9083019060208201858111156200006b57600080fd5b82516401000000008111828201881017156200008657600080fd5b82525081516020918201929091019080838360005b83811015620000b55781810151838201526020016200009b565b50505050905090810190601f168015620000e35780820380516001836020036101000a031916815260200191505b5060405250849150829050620000f98262000137565b8051156200011a57620001188282620001ae60201b620003841760201c565b505b50620001239050565b6200012e82620001dd565b505050620003bf565b6200014d816200020160201b620003b01760201c565b6200018a5760405162461bcd60e51b815260040180806020018281038252603681526020018062000c226036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6060620001d6838360405180606001604052806027815260200162000bfb6027913962000207565b9392505050565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b3b151590565b6060620002148462000201565b620002515760405162461bcd60e51b815260040180806020018281038252602681526020018062000c586026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b60208310620002915780518252601f19909201916020918201910162000270565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114620002f3576040519150601f19603f3d011682016040523d82523d6000602084013e620002f8565b606091505b5090925090506200030b82828662000315565b9695505050505050565b6060831562000326575081620001d6565b825115620003375782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200038357818101518382015260200162000369565b50505050905090810190601f168015620003b15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b61082c80620003cf6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100985780635c60da1b146101185780638f28397014610149578063f851a4401461017c5761005d565b3661005d5761005b610191565b005b61005b610191565b34801561007157600080fd5b5061005b6004803603602081101561008857600080fd5b50356001600160a01b03166101ab565b61005b600480360360408110156100ae57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184600183028401116401000000008311171561010d57600080fd5b5090925090506101e5565b34801561012457600080fd5b5061012d610262565b604080516001600160a01b039092168252519081900360200190f35b34801561015557600080fd5b5061005b6004803603602081101561016c57600080fd5b50356001600160a01b031661029f565b34801561018857600080fd5b5061012d610359565b6101996103b6565b6101a96101a4610416565b61043b565b565b6101b361045f565b6001600160a01b0316336001600160a01b031614156101da576101d581610484565b6101e2565b6101e2610191565b50565b6101ed61045f565b6001600160a01b0316336001600160a01b031614156102555761020f83610484565b61024f8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061038492505050565b5061025d565b61025d610191565b505050565b600061026c61045f565b6001600160a01b0316336001600160a01b031614156102945761028d610416565b905061029c565b61029c610191565b90565b6102a761045f565b6001600160a01b0316336001600160a01b031614156101da576001600160a01b0381166103055760405162461bcd60e51b815260040180806020018281038252603a8152602001806106f8603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61032e61045f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101d5816104c4565b600061036361045f565b6001600160a01b0316336001600160a01b031614156102945761028d61045f565b60606103a98383604051806060016040528060278152602001610732602791396104e8565b9392505050565b3b151590565b6103be61045f565b6001600160a01b0316336001600160a01b0316141561040e5760405162461bcd60e51b81526004018080602001828103825260428152602001806107b56042913960600191505060405180910390fd5b6101a96101a9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561045a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61048d816105eb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b60606104f3846103b0565b61052e5760405162461bcd60e51b815260040180806020018281038252602681526020018061078f6026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b6020831061056c5780518252601f19909201916020918201910161054d565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146105cc576040519150601f19603f3d011682016040523d82523d6000602084013e6105d1565b606091505b50915091506105e1828286610653565b9695505050505050565b6105f4816103b0565b61062f5760405162461bcd60e51b81526004018080602001828103825260368152602001806107596036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b606083156106625750816103a9565b8251156106725782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106bc5781810151838201526020016106a4565b50505050905090810190601f1680156106e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f2061646472657373416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a2646970667358221220b4cad05fe750bc9b6fbefd24767f1d78b58cc5e6bddec50b8aa263989552b66564736f6c634300060c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e74726163740000000000000000000000005372742418790c12476852513225e08bb3f63797000000000000000000000000a6f662994bf46627f12c023b22a28618eb7ce89300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024c4d66de800000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e00000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

15459:4701:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2855:11;:9;:11::i;:::-;15459:4701;;2623:11;:9;:11::i;18505:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18505:119:0;-1:-1:-1;;;;;18505:119:0;;:::i;19009:219::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19009:219:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19009:219:0;;-1:-1:-1;19009:219:0;-1:-1:-1;19009:219:0;:::i;17739:131::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;17739:131:0;;;;;;;;;;;;;;18084:254;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18084:254:0;-1:-1:-1;;;;;18084:254:0;;:::i;17173:95::-;;;;;;;;;;;;;:::i;2259:113::-;2308:17;:15;:17::i;:::-;2336:28;2346:17;:15;:17::i;:::-;2336:9;:28::i;:::-;2259:113::o;18505:119::-;16631:8;:6;:8::i;:::-;-1:-1:-1;;;;;16617:22:0;:10;-1:-1:-1;;;;;16617:22:0;;16613:100;;;18587:29:::1;18598:17;18587:10;:29::i;:::-;16613:100:::0;;;16690:11;:9;:11::i;:::-;18505:119;:::o;19009:219::-;16631:8;:6;:8::i;:::-;-1:-1:-1;;;;;16617:22:0;:10;-1:-1:-1;;;;;16617:22:0;;16613:100;;;19127:29:::1;19138:17;19127:10;:29::i;:::-;19167:53;19196:17;19215:4;;19167:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;19167:28:0::1;::::0;-1:-1:-1;;;19167:53:0:i:1;:::-;;16613:100:::0;;;16690:11;:9;:11::i;:::-;19009:219;;;:::o;17739:131::-;17791:23;16631:8;:6;:8::i;:::-;-1:-1:-1;;;;;16617:22:0;:10;-1:-1:-1;;;;;16617:22:0;;16613:100;;;17845:17:::1;:15;:17::i;:::-;17827:35;;16613:100:::0;;;16690:11;:9;:11::i;:::-;17739:131;:::o;18084:254::-;16631:8;:6;:8::i;:::-;-1:-1:-1;;;;;16617:22:0;:10;-1:-1:-1;;;;;16617:22:0;;16613:100;;;-1:-1:-1;;;;;18167:22:0;::::1;18159:93;;;;-1:-1:-1::0;;;18159:93:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18268:32;18281:8;:6;:8::i;:::-;18268:32;::::0;;-1:-1:-1;;;;;18268:32:0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;18311:19;18321:8;18311:9;:19::i;17173:95::-:0;17216:14;16631:8;:6;:8::i;:::-;-1:-1:-1;;;;;16617:22:0;:10;-1:-1:-1;;;;;16617:22:0;;16613:100;;;17252:8:::1;:6;:8::i;9596:200::-:0;9679:12;9711:77;9732:6;9740:4;9711:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;9704:84;9596:200;-1:-1:-1;;;9596:200:0:o;3909:422::-;4276:20;4315:8;;;3909:422::o;19950:207::-;20036:8;:6;:8::i;:::-;-1:-1:-1;;;;;20022:22:0;:10;-1:-1:-1;;;;;20022:22:0;;;20014:101;;;;-1:-1:-1;;;20014:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20126:23;:21;:23::i;12965:256::-;12815:66;13192:11;;13169:45::o;876:891::-;1264:14;1261:1;1258;1245:34;1474:1;1471;1455:14;1452:1;1436:14;1429:5;1416:60;1549:16;1546:1;1543;1528:38;1589:6;1658:38;;;;1730:16;1727:1;1720:27;1658:38;1677:16;1674:1;1667:27;19294:227;16370:66;19492:11;;19470:44::o;13347:163::-;13422:37;13441:17;13422:18;:37::i;:::-;13475:27;;-1:-1:-1;;;;;13475:27:0;;;;;;;;13347:163;:::o;19608:216::-;16370:66;19784:22;19769:48::o;9990:423::-;10101:12;10134:18;10145:6;10134:10;:18::i;:::-;10126:69;;;;-1:-1:-1;;;10126:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10269:12;10283:23;10310:6;-1:-1:-1;;;;;10310:19:0;10330:4;10310:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10310:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10268:67;;;;10353:52;10371:7;10380:10;10392:12;10353:17;:52::i;:::-;10346:59;9990:423;-1:-1:-1;;;;;;9990:423:0:o;13606:369::-;13688:37;13707:17;13688:18;:37::i;:::-;13680:104;;;;-1:-1:-1;;;13680:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12815:66;13926:31;13911:57::o;10421:742::-;10536:12;10565:7;10561:595;;;-1:-1:-1;10596:10:0;10589:17;;10561:595;10710:17;;:21;10706:439;;10973:10;10967:17;11034:15;11021:10;11017:2;11013:19;11006:44;10921:148;11116:12;11109:20;;-1:-1:-1;;;11109:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://b4cad05fe750bc9b6fbefd24767f1d78b58cc5e6bddec50b8aa263989552b665
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.