Contract 0x174fb5f3c31b865043f9eb5d6edcae2856710304

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0x5a6993e5c9f89c2ff435a485a29b01ad2d49f2cffe72238989ddac3591e7db7386023522021-06-25 10:39:323 hrs 9 mins ago0x8ca44f779cb197d18930824689b2f61fe018c9ae IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.00093842
0x9bf0b4e8d1278367c2506e00176d3bf3b6336d9f86bfddf747e205a9a7225d5185991552021-06-25 7:59:415 hrs 49 mins ago0x57f0b88ff444279c8c4d5efdf2162a16b80da9a8 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.00052062
0xc1e7c4973d2e2abd709b70e89636b67d4c7abd488c8a236785da4fb49fa9e82685991492021-06-25 7:59:235 hrs 49 mins ago0x57f0b88ff444279c8c4d5efdf2162a16b80da9a8 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.000444145
0x8b272f48e8627d30545ede5f2567b1de6c6825dbbdabd9c37fdbd825c1b98c3385920562021-06-25 2:04:0311 hrs 44 mins ago0x237d11c718dd9980c0f2ba95e4af94400500ba1d IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.00052062
0xc649e1806642547ed972d2bdbf305c0d5ad3fc177282f3eefe61de64a48e7b4985914142021-06-25 1:31:5312 hrs 16 mins ago0xeb7e9ceea2904905f794e3cd1a8ad3c8fab0d364 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.003872695
0xf2c431b7cd9fe823f7163ea82e3750919bca91a501b2b30fbc444fe04e6ada5c85841162021-06-24 19:25:4518 hrs 23 mins ago0xad794b9eff788c74ec000daf5f6a94c29f684fb2 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.00052062
0xcde03995c551c749e69803e3d1b5dc1990fd1c9ab41dc35932be4d6b3c8fea3b85830072021-06-24 18:30:1819 hrs 18 mins ago0xc0403071f23140f5bd022bb8597905d7a7cfde35 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.001545025
0x5f4f92dcbb83cec2fac1e3e8397daf3f11c859d0c4ff203fac8af09db1162a7885815512021-06-24 17:17:0420 hrs 31 mins ago0xcaa05775309348e227dd52248f90d696864a1ac5 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.001167735
0xa406422739c859f94be819f36fd9c3ebfc4150a64c4ed09fe2bd6ee5b1637f8c85813912021-06-24 17:09:0420 hrs 39 mins ago0x732260317f4d555b3d67084429b73b8b20cc7b50 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.0017778
0x0c7cdc59380ce8e5521b53bbdb9a399a4f7bab8925974fd93909c89aa851437f85813742021-06-24 17:08:1320 hrs 40 mins ago0x732260317f4d555b3d67084429b73b8b20cc7b50 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.00093842
0x17e9f3b5611d910dc6488fb917b8f7d1eee79b9a301eee22c9bf4d4a041aec1285813712021-06-24 17:08:0420 hrs 40 mins ago0x732260317f4d555b3d67084429b73b8b20cc7b50 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.000369145
0xa668983f951d7501d7edf460c1162155944798ef24393394a1fdfc5626f67e6485809372021-06-24 16:46:2121 hrs 2 mins ago0xe0b1c602792f353b28ea2b4abb197b008ea488f0 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.00198587
0xa2e553ec621fee99c2856388818de6b09e9abbb6871a2f2255a088f55a359bf385809232021-06-24 16:45:3921 hrs 3 mins ago0xe0b1c602792f353b28ea2b4abb197b008ea488f0 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.00388879
0x64f85b935128eed279f36d308bebfdd62a96c316ad7a05a90114b4d789627b5e85791532021-06-24 15:16:2522 hrs 32 mins ago0xfa5b805b59fdb7f376cbc8257adcc149be54e781 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.00052062
0x3546ae59014e2b4061ed3e3e32c310afe0b8e217964c300cc2809e98999b79d085790602021-06-24 15:11:4622 hrs 37 mins ago0xfa5b805b59fdb7f376cbc8257adcc149be54e781 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.000444145
0x67576eee249b6812abd6b673beabeee280893091ee3779c6fe9ad5f9d86429ba85783812021-06-24 14:37:4923 hrs 10 mins ago0x9bc86356d2672613674bd48282302df9eac37800 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.00052062
0xd54dff2713789d37acaf015cd4d3e91d39c17ec1d460d63a20867c3b64bf7a5f85783752021-06-24 14:37:3123 hrs 11 mins ago0x9bc86356d2672613674bd48282302df9eac37800 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.000369145
0x950cf1d98740401ec5d3dd478d87e2c81a86674b94b0bf1c5dd52caf91f1b0ce85757842021-06-24 12:27:581 day 1 hr ago0x26bd8029743c5cdaf74035373d88eb51e7aa1ebe IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.0007177332
0x75b10b9cc9528797ac12a0ef2a208c69bc1998dd5a2983d3e893057e01d763a085750422021-06-24 11:50:521 day 1 hr ago0xaae72c3d0467b6e142bee4154d7069e2ecc067a9 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.000624744
0x99d0fe26649439dcf32e6aa0b43202d6219b4d100af79edc46a7083e0c379de985750322021-06-24 11:50:221 day 1 hr ago0xaae72c3d0467b6e142bee4154d7069e2ecc067a9 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.000532974
0x8587ae2931789a6f78ed484299b97ea58a3c513616aef466c89b58053bc6df6e85737712021-06-24 10:47:161 day 3 hrs ago0xf9d8703ece238315916be0dc1ab79000f19dde82 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.000444145
0x7af498578385bbc3db9d1379a7a62e26af85159c866a836b3105527fc4b6f7c485671902021-06-24 5:17:511 day 8 hrs ago0x5e5812f4d1f43535d8acff50e90dd61a5558c812 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.000444145
0x2e8c3ff5b6ff4845bd1defa0af24aa609136e714d4e5af8260a44cba63451b9385629342021-06-24 1:44:001 day 12 hrs ago0x6ad4d51c57f5e329e8b651af58672508b8e302e1 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.00062866
0x9ccde1f708129ff50817161a0e9c63ea59ef6c0d515b410918e77d8631846ae385612272021-06-24 0:18:391 day 13 hrs ago0xc814ddda86dec634db770553c252aef75cf4830e IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.00093842
0x376c5c20c877f7dc5b3488a6446f7b8e630baa0c85b64a7f8c0607adaa058b7f85532592021-06-23 17:38:181 day 20 hrs ago0xffe54448b240a3aab719d051279cb71ca96ff982 IN  0x174fb5f3c31b865043f9eb5d6edcae28567103040 BNB0.000444145
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xe83db63f03ca8b45befdd53ea7135c0fd15a0c08d7b5d32be95930e56cfc4e5664057272021-04-09 4:59:3077 days 8 hrs ago 0xe9d116fad148ace99e4ae081c4fcac1e62f1dd9b  Contract Creation0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xe627f00D5a5bfcE0640E771Af573C41e9a278A20

Contract Name:
TransparentUpgradeableProxy

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 999999 runs

Other Settings:
istanbul EvmVersion, MIT license
/**
 *Submitted for verification at BscScan.com on 2020-12-29
*/

// File: @openzeppelin/contracts/proxy/Proxy.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.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: @openzeppelin/contracts/utils/Address.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.2;

/**
 * @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 in 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");
        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: @openzeppelin/contracts/proxy/UpgradeableProxy.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.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) public 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: @openzeppelin/contracts/proxy/TransparentUpgradeableProxy.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.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 _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) {
        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":"_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":"","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"}]

6080604052604051610b00380380610b008339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b5060408181527f656970313936372e70726f78792e696d706c656d656e746174696f6e0000000082525190819003601c019020869350849250600080516020610aaa83398151915260001990910114905061013157fe5b610143826001600160e01b0361026516565b8051156101fb576000826001600160a01b0316826040518082805190602001908083835b602083106101865780518252601f199092019160209182019101610167565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101e6576040519150601f19603f3d011682016040523d82523d6000602084013e6101eb565b606091505b50509050806101f957600080fd5b505b5050604080517f656970313936372e70726f78792e61646d696e0000000000000000000000000081529051908190036013019020600080516020610a8a8339815191526000199091011461024b57fe5b61025d826001600160e01b036102c516565b5050506102dd565b610278816102d760201b6106b01760201c565b6102b35760405162461bcd60e51b8152600401808060200182810382526036815260200180610aca6036913960400191505060405180910390fd5b600080516020610aaa83398151915255565b600080516020610a8a83398151915255565b3b151590565b61079e806102ec6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146101425780638f28397014610180578063f851a440146101c05761006d565b80633659cfe6146100755780634f1ef286146100b55761006d565b3661006d5761006b6101d5565b005b61006b6101d5565b34801561008157600080fd5b5061006b6004803603602081101561009857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101ef565b61006b600480360360408110156100cb57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561010357600080fd5b82018360208201111561011557600080fd5b8035906020019184600183028401116401000000008311171561013757600080fd5b509092509050610243565b34801561014e57600080fd5b50610157610317565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561018c57600080fd5b5061006b600480360360208110156101a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661036e565b3480156101cc57600080fd5b50610157610476565b6101dd6104bb565b6101ed6101e861054f565b610574565b565b6101f7610598565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023857610233816105bd565b610240565b6102406101d5565b50565b61024b610598565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561030a57610287836105bd565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102f1576040519150601f19603f3d011682016040523d82523d6000602084013e6102f6565b606091505b505090508061030457600080fd5b50610312565b6103126101d5565b505050565b6000610321610598565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103635761035c61054f565b905061036b565b61036b6101d5565b90565b610376610598565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102385773ffffffffffffffffffffffffffffffffffffffff8116610415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806106b7603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61043e610598565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301528051918290030190a16102338161060a565b6000610480610598565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103635761035c610598565b6104c3610598565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610547576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806107276042913960600191505060405180910390fd5b6101ed6101ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610593573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6105c68161062e565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b610637816106b0565b61068c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806106f16036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f20616464726573735570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a264697066735822122030b01b73d1df56d9f107275bce77392f83e91da0fd149d8232f1b7d156c0eb3f64736f6c63430006060033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374000000000000000000000000e7cfe6241b8c54fa439f7c48b494f15fe24df729000000000000000000000000a96a077d6b026c72a91d1b3e4bdce0c31acfc14200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

14010:4729:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2930:11;:9;:11::i;:::-;14010:4729;;2706:11;:9;:11::i;17019:111::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17019:111:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17019:111:0;;;;:::i;17516:299::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17516:299:0;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;17516:299:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;17516:299:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;17516:299:0;;-1:-1:-1;17516:299:0;-1:-1:-1;17516:299:0;:::i;16285:104::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16285:104:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16605:246;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16605:246:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16605:246:0;;;;:::i;15726:86::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15726:86:0;;;:::i;2358:105::-;2399:17;:15;:17::i;:::-;2427:28;2437:17;:15;:17::i;:::-;2427:9;:28::i;:::-;2358:105::o;17019:111::-;15182:8;:6;:8::i;:::-;15168:22;;:10;:22;;;15164:100;;;17093:29:::1;17104:17;17093:10;:29::i;:::-;15164:100:::0;;;15241:11;:9;:11::i;:::-;17019:111;:::o;17516:299::-;15182:8;:6;:8::i;:::-;15168:22;;:10;:22;;;15164:100;;;17626:29:::1;17637:17;17626:10;:29::i;:::-;17727:12;17744:17;:30;;17775:4;;17744:36;;;;;30:3:-1;22:6;14;1:33;17744:36:0;::::0;45:16:-1;::::1;::::0;-1:-1;17744:36:0::1;::::0;-1:-1:-1;17744:36:0;;-1:-1:-1;;17744:36:0;;::::1;::::0;;::::1;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;17726:54:0;;;17799:7;17791:16;;12:1:-1;9::::0;2:12:::1;17791:16:0;15207:1;15164:100:::0;;;15241:11;:9;:11::i;:::-;17516:299;;;:::o;16285:104::-;16337:7;15182:8;:6;:8::i;:::-;15168:22;;:10;:22;;;15164:100;;;16364:17:::1;:15;:17::i;:::-;16357:24;;15164:100:::0;;;15241:11;:9;:11::i;:::-;16285:104;:::o;16605:246::-;15182:8;:6;:8::i;:::-;15168:22;;:10;:22;;;15164:100;;;16680:22:::1;::::0;::::1;16672:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16781:32;16794:8;:6;:8::i;:::-;16781:32;::::0;;::::1;::::0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;16824:19;16834:8;16824:9;:19::i;15726:86::-:0;15769:7;15182:8;:6;:8::i;:::-;15168:22;;:10;:22;;;15164:100;;;15796:8:::1;:6;:8::i;18529:207::-:0;18615:8;:6;:8::i;:::-;18601:22;;:10;:22;;;;18593:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18705:23;:21;:23::i;11394:248::-;11244:66;11613:11;;11590:45::o;958:907::-;1350:14;1347:1;1344;1331:34;1568:1;1565;1549:14;1546:1;1530:14;1523:5;1510:60;1647:16;1644:1;1641;1626:38;1687:6;1756:38;;;;1828:16;1825:1;1818:27;1756:38;1775:16;1772:1;1765:27;17881:219;14921:66;18071:11;;18049:44::o;11769:155::-;11836:37;11855:17;11836:18;:37::i;:::-;11889:27;;;;;;;;;;;11769:155;:::o;18187:216::-;14921:66;18363:22;18348:48::o;12020:369::-;12102:37;12121:17;12102:18;:37::i;:::-;12094:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11244:66;12340:31;12325:57::o;4095:422::-;4462:20;4501:8;;;4095:422::o

Swarm Source

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