Contract 0x4127f84f2b9f922259a10bfb8d32c56428a4e885 2

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x8ce80bae852b44b00b764bf30c94e711cd0f3a64ac5c472873d40623aca75603Unstake130512722021-11-29 13:49:341 hr 42 mins ago0x89deb87e6a3d179efbe494b43692c43cd92fa501 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000431544
0x7e71958d68ff47ce8ef3f919d295aa57d9c11e04cf3ea6b104f134fca7a89b3fUnstake130474032021-11-29 10:05:425 hrs 25 mins ago0x1033836a07ff68f4b221e2478d311f605aacbb1e IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000542505
0xbd4fb89322985c6082512aa982a8769fe7dc8c753162752d750f2159c58ce0e3Stake130377592021-11-29 1:11:1114 hrs 20 mins ago0xa0b2ac650fbcea9114bbdd0b616d0fa6f894a574 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000518142
0x09d4e85452139005f27e6a3e72502c738be597431dd8f61c99f447f210832cf6Unstake130351722021-11-28 22:52:3916 hrs 38 mins ago0x2a5f4d26a02099add722466658727c4457790c35 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000542505
0x62e22adb9e3266eef29e05fef4c8e42a819b26c228f5954fd79fd53b67a8b00dUnstake130333452021-11-28 21:16:0418 hrs 15 mins ago0x45c253f2cc734d9556e356dd6766efe4dc7c99e5 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.00035968
0xa961cdf82c2f0c4bfedc4e048020594bb94a264d83ba8f01d51d0d38c30d5822Stake130333442021-11-28 21:15:5918 hrs 15 mins ago0x45c253f2cc734d9556e356dd6766efe4dc7c99e5 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000431785
0x2a76ae1caacf0914a3604b5c5a75be14bfb9f502609463b2c338e34655668923Unstake130310802021-11-28 19:11:5420 hrs 19 mins ago0x80a01f1ac8448f5358abe539013ba309df074918 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.00035956
0xb370c93a3f8c4ecb120b033c1ec19299fcb7bcd49f80294e28f79131399cc0e0Stake130310692021-11-28 19:11:2120 hrs 20 mins ago0x80a01f1ac8448f5358abe539013ba309df074918 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000506785
0x9554a22ef0a94bb9b8cd737ef895224ade42d30128b4e441525a259ad223407aUnstake130267132021-11-28 15:16:261 day 15 mins ago0x8048d027d841a9253e9fd3f6a5bdf792cc166c12 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.00035962
0x7486fe9d46abdfb11dab0d2c82a313fd7dd19fc41845d03d23db18bb008ba3a5Stake130266962021-11-28 15:15:291 day 16 mins ago0x8048d027d841a9253e9fd3f6a5bdf792cc166c12 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000431785
0xad6900c4daf6279efd7e0feeff91a10af413b2b488f7921d29535b1b5ae2d212Unstake130240092021-11-28 12:47:141 day 2 hrs ago0x77af9189699c83ec02e7193c9571cd46e4109c29 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000542505
0x432823de1a32f3640312db713dfaf0ec7c7c7107fe80cbf177c6235a4dc81e21Stake130236782021-11-28 12:29:521 day 3 hrs ago0xbcab60e2df17adca4b81483f728419d61109bcf2 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000690856
0x18a17e72d388d91cc3be41a4b5edcabbfd197476458b3db59374b9fd4a14d8b5Stake130233462021-11-28 12:11:131 day 3 hrs ago0x2be4098e701461759be8e129204de70473c92679 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000431785
0xcc9471989f35d9b5b2182b37fb9e70485481780339cd563df407ac4a2910cc2eUnstake130214222021-11-28 10:29:091 day 5 hrs ago0xd628ff9601ffd071eef6e256b1477ec1d3c77cf1 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000542445
0xe77c9b87526fdc0ad413f2f5ba894ffc42f5f4f94584693a2b1ec98080646a18Unstake130172822021-11-28 6:50:501 day 8 hrs ago0xf6e7c47891ce0906610ede09063b2d6af9413e23 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000542445
0xec6849c306df808ec2b14481d9b15d2e1ba15196af646d172fcdc4d4056477c7Unstake130169672021-11-28 6:34:131 day 8 hrs ago0x259cf4843e4a0035b56221bcc0af0de4ae293f73 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000542505
0x95dc89ad7b12922421670108936a7675e528cc400e41467b1de5071d2c44ad9bUnstake130086222021-11-27 23:05:431 day 16 hrs ago0x30597404e30cc4634f5b96fc33a1b8ac7834f48c IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000542385
0x42a303935b60e968551e7eed4e611b438cad993d2038be23c1b3d915101af410Unstake130052072021-11-27 20:07:121 day 19 hrs ago0xa708c4bb354c41b07e4dfbf870ca91ad044ee87d IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000542505
0x35eb8a45c2b864f95a57e4d619c41cfc014debcd324a205c8f812104c4443867Unstake130045712021-11-27 19:34:101 day 19 hrs ago0x2ad720dd0541a97c13fbebe796b46fadf9ed1f13 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.00035968
0xdb34aa061d3f785194fda24615fcd6299c4c34745fa2572ef382e86c1a2ad802Stake130045522021-11-27 19:33:071 day 19 hrs ago0x2ad720dd0541a97c13fbebe796b46fadf9ed1f13 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000431785
0x8daea2f2ac00aa1106055291d8c5381c1468562208aa7fd4db6f2a1f039f27b6Unstake130000022021-11-27 15:26:432 days 4 mins ago0xa902067d3ee209b23c71a7f9925da44f6c909c9d IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000467505
0xa6660ef8fda0ac2e8ed3409372ea1d6056bdbecc75544a75b739aded092d0abdUnstake129996362021-11-27 15:07:122 days 24 mins ago0x8f610859dab39321388be8d4199e92459d81c715 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000651006
0x46d144213059a25635a20cfabef75f30e950fa9cdfb329dc4d732efeefc98182Unstake129951682021-11-27 11:07:042 days 4 hrs ago0xac5edd97697145f00a3c1dd5eb5c6d2f2f9c56c7 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000542505
0x57b43195b76da513d1adc27e560434f021c842544723cfff18281d1b81164873Unstake129921892021-11-27 8:26:152 days 7 hrs ago0xfbbd281f7c2297d2310a3a73758d9269d52c2f35 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.00035962
0xbd13ce6e0d4ee79b037af8961ceff73551f703e53cf433e95725b703ebb3535cStake129921492021-11-27 8:23:392 days 7 hrs ago0xfbbd281f7c2297d2310a3a73758d9269d52c2f35 IN  0x4127f84f2b9f922259a10bfb8d32c56428a4e8850 BNB0.000431785
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xe2aed1281073d1e44d68c085009e2c912298f5c7bbd5f96335b6480d5d01f30e66038362021-04-16 2:22:33227 days 13 hrs ago 0x1307c3c5e28d41cc1e8ff977fb9146b419a6dd9c  Contract Creation0 BNB
[ Download CSV Export 
Loading

Similar Match Source Code
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 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":"","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.