** Maintenance in progress, block data might not be up to date **

Contract 0xbc5609612b7c44bef426de600b5fd1379db2ecf1 2

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x93256e2e2e179a98e916b3843de6d0f1dc3b88b16c10c343550ef8163a49c54eTransfer145436862022-01-20 23:55:122 hrs 35 mins ago0x318bc5fad0e32a6b5d6c0e0358906898a849f11b IN  Chiliz: PSG Fan Token0 BNB0.000119115
0xbd173488abcab58c539a53ed464fb36302b45a04fead997ee6e07317e71c5bc8Approve145416522022-01-20 22:13:094 hrs 17 mins ago0xcc59dc896fa489c0782f7b4537162ae21deee382 IN  Chiliz: PSG Fan Token0 BNB0.00023576
0xba5362aa6b2ecfaa461fcdefd9f515dcb3890883f3f9de70f515f7d7d7750267Transfer145410942022-01-20 21:45:054 hrs 45 mins agoBinance: Hot Wallet 6 IN  Chiliz: PSG Fan Token0 BNB0.00053811
0xb575ac98d6d5abd0d7569c763957448e41822d7751f0bb2121f9b4377d0c5983Transfer145373412022-01-20 18:37:247 hrs 53 mins ago0xb6bfaeb3761678ab5c411fc65cdb3377a194bf7a IN  Chiliz: PSG Fan Token0 BNB0.000142938
0x85db5260abcc2296d232bf9adf6898bbdc43332f33ebc80520a2d613518ca452Transfer145372262022-01-20 18:31:397 hrs 59 mins agoBinance: Hot Wallet 7 IN  Chiliz: PSG Fan Token0 BNB0.00053823
0xbf7b6e61f05f7d2fc2e9be48722162da46b4207730885bdf74e1fa978b08b143Transfer145372062022-01-20 18:30:398 hrs ago0x5a5957a6c2739bf45ea93058bd154d63ab356e8f IN  Chiliz: PSG Fan Token0 BNB0.000119115
0xd03dc1b84fe30c6f36f33d8e91540a5a3e907edfa2cf84a12d613b1ae76b102cTransfer145358132022-01-20 17:20:559 hrs 9 mins ago0xb6bfaeb3761678ab5c411fc65cdb3377a194bf7a IN  Chiliz: PSG Fan Token0 BNB0.000142938
0x0ec7eb77f2559a853d1d69c3327470792f229386575fdfff4a98d9a5ab95f0e3Transfer145357792022-01-20 17:19:139 hrs 11 mins agoBinance: Hot Wallet 6 IN  Chiliz: PSG Fan Token0 BNB0.00053823
0xde2a7649e4480f0a40b2eabb33d2c118c82c9ca62f4a64a60f391e7311ccda39Transfer145356982022-01-20 17:15:109 hrs 15 mins agoBinance: Hot Wallet 7 IN  Chiliz: PSG Fan Token0 BNB0.00053823
0x116ab54936b94f1420d26313ade4cc7f7b08ba3cf48206e31b88785b64fd909dTransfer145355452022-01-20 17:07:309 hrs 23 mins ago0xb99c6c35f29b25563b0bfcd6bac8d5d506a57394 IN  Chiliz: PSG Fan Token0 BNB0.000194055
0xbbfe832262cdcf6859568fa04d4724962f466ef2fd83d611087bd326c23e8d11Transfer145348792022-01-20 16:34:049 hrs 56 mins ago0x6dea873d39f54aed83cacb25701a7ce67aaae0ae IN  Chiliz: PSG Fan Token0 BNB0.000194115
0x7b8eb86644ab3db08e58ba8b9ef1ad3fc2602941de3bc1135a2ca386f6c9e821Transfer145344312022-01-20 16:11:4010 hrs 19 mins ago0xb6bfaeb3761678ab5c411fc65cdb3377a194bf7a IN  Chiliz: PSG Fan Token0 BNB0.000142938
0x5b5db98ea5716e8df0ba5c34fa8c115bd5b894c619ecc35cb5ab770d4996ee54Transfer145343122022-01-20 16:05:4310 hrs 25 mins agoBinance: Hot Wallet 6 IN  Chiliz: PSG Fan Token0 BNB0.00053823
0x1f142e55665c1c66075da75b67ff63ecfaa1ca2eb84adf23be5025439b8791e2Transfer145338412022-01-20 15:42:1010 hrs 48 mins ago0xb6bfaeb3761678ab5c411fc65cdb3377a194bf7a IN  Chiliz: PSG Fan Token0 BNB0.000142938
0xc1e977454e3b6c1ed351d8a8e8e36520b1b872444d53f6fa51145d0f363504e7Transfer145337222022-01-20 15:36:1310 hrs 54 mins agoBinance: Hot Wallet 7 IN  Chiliz: PSG Fan Token0 BNB0.00053823
0x8b25289ce83a9d9055184155388c40070d1345f10ac4defa6bc58f2c8af65449Transfer145333662022-01-20 15:18:2411 hrs 12 mins ago0xb6bfaeb3761678ab5c411fc65cdb3377a194bf7a IN  Chiliz: PSG Fan Token0 BNB0.000142938
0xb6f92249d7c46bea3e42ee60b2c5943813e3f9cb8050a1bdbf00cfd9f14fdea3Transfer145332532022-01-20 15:12:4511 hrs 18 mins agoBinance: Hot Wallet 6 IN  Chiliz: PSG Fan Token0 BNB0.00053823
0x088cd594f2d6c5a1175739446539e47953da139866134592fc8772fa084cb714Transfer145327462022-01-20 14:47:2411 hrs 43 mins ago0xb6bfaeb3761678ab5c411fc65cdb3377a194bf7a IN  Chiliz: PSG Fan Token0 BNB0.000142938
0x46e43ce411317620f93d3949df0a6db722ad29bc20b995086139288e7004edcbTransfer145326302022-01-20 14:41:3611 hrs 49 mins agoBinance: Hot Wallet 7 IN  Chiliz: PSG Fan Token0 BNB0.00053823
0x8a957cbfbe193797eef3ff98894f79c24e2f12c44c5a9e47a71f2a4def5d2751Transfer145322902022-01-20 14:24:3612 hrs 6 mins ago0xb6bfaeb3761678ab5c411fc65cdb3377a194bf7a IN  Chiliz: PSG Fan Token0 BNB0.000142938
0xa824567a6630495e61318909f8b792c3301b008c6a5ec4b61a2b71f48e565398Transfer145321412022-01-20 14:17:0912 hrs 13 mins agoBinance: Hot Wallet 6 IN  Chiliz: PSG Fan Token0 BNB0.00053823
0x40ecbb3fb1efcdacdb03b871d297e9ac0b490be9a359ca75eec3ab80c6330f43Transfer145321332022-01-20 14:16:4512 hrs 14 mins agoBinance: Hot Wallet 7 IN  Chiliz: PSG Fan Token0 BNB0.00038823
0xecdb682bdcce46fbce1855e414cecb7697c60273f3684d472f5cc300dc842844Transfer145320422022-01-20 14:12:1212 hrs 18 mins ago0xc39b3f8df0fa89eaaa7dde7dcf6643f0164d125b IN  Chiliz: PSG Fan Token0 BNB0.000207897165
0x9ae28f26cd1d2fe3654d7a1fa629475cea128ec04f45aefecbd25548f993c02aTransfer145319612022-01-20 14:08:0912 hrs 22 mins agoBinance: Hot Wallet 6 IN  Chiliz: PSG Fan Token0 BNB0.00053823
0x80cc9059913a1ad63cff8ec70950c53ed60a6021e3117c65c6890b3a2ab4a2aaTransfer145304112022-01-20 12:50:1013 hrs 40 mins agoBinance: Hot Wallet 7 IN  Chiliz: PSG Fan Token0 BNB0.00053823
[ Download CSV Export 

OVERVIEW

Official Fan Token of Paris Saint-Germain

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xc7301e814fb9883b5fe631ecdfe5989391ec586fe662060aa15369f50a48536454713342021-03-07 11:59:39319 days 14 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x9604e53adcd92620aee92533077e458cf97a56ebb6bb9c2eb36c03213b82da8954712912021-03-07 11:57:30319 days 14 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x3ef6c4c195e28853f234ff1bc6f81184fe0ee8ca008bfb549476b7812210d8ff54712042021-03-07 11:53:09319 days 14 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x3ef6c4c195e28853f234ff1bc6f81184fe0ee8ca008bfb549476b7812210d8ff54712042021-03-07 11:53:09319 days 14 hrs ago PancakeSwap: PSG 2 Chiliz: PSG Fan Token0 BNB
0x3ef6c4c195e28853f234ff1bc6f81184fe0ee8ca008bfb549476b7812210d8ff54712042021-03-07 11:53:09319 days 14 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x3ef6c4c195e28853f234ff1bc6f81184fe0ee8ca008bfb549476b7812210d8ff54712042021-03-07 11:53:09319 days 14 hrs ago PancakeSwap: Router Chiliz: PSG Fan Token0 BNB
0x82f60f6bd8d385077a3f026ca55718d8eb61db9494645f42f9ea0dbdf4e9cf5154710532021-03-07 11:45:36319 days 14 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x82f60f6bd8d385077a3f026ca55718d8eb61db9494645f42f9ea0dbdf4e9cf5154710532021-03-07 11:45:36319 days 14 hrs ago PancakeSwap: PSG 2 Chiliz: PSG Fan Token0 BNB
0x82f60f6bd8d385077a3f026ca55718d8eb61db9494645f42f9ea0dbdf4e9cf5154710532021-03-07 11:45:36319 days 14 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x82f60f6bd8d385077a3f026ca55718d8eb61db9494645f42f9ea0dbdf4e9cf5154710532021-03-07 11:45:36319 days 14 hrs ago PancakeSwap: PSG 2 Chiliz: PSG Fan Token0 BNB
0x694736a70f68839d4b1d92f8c259f70b51e72d8ae340d5965317709ef283b03354709472021-03-07 11:40:18319 days 14 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x428862369eddaa57b21cddbe9f7ae1741d39ca60f114f1406c75ba74bd06f7de54707442021-03-07 11:30:09319 days 15 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x030068459824799c8d980a5678db8b661a986065dbd0de8677ba7b3fdf84f1e554706302021-03-07 11:24:27319 days 15 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x030068459824799c8d980a5678db8b661a986065dbd0de8677ba7b3fdf84f1e554706302021-03-07 11:24:27319 days 15 hrs ago PancakeSwap: PSG 2 Chiliz: PSG Fan Token0 BNB
0x030068459824799c8d980a5678db8b661a986065dbd0de8677ba7b3fdf84f1e554706302021-03-07 11:24:27319 days 15 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x030068459824799c8d980a5678db8b661a986065dbd0de8677ba7b3fdf84f1e554706302021-03-07 11:24:27319 days 15 hrs ago PancakeSwap: PSG 2 Chiliz: PSG Fan Token0 BNB
0x52959519d4864305ac54ea1aefa5f170950e27a56d5ed4cd680e7b5572b1330054706292021-03-07 11:24:24319 days 15 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x94621b210f1c06dba577010ffac33322e2cb16028a66744aa651bb919d1a28f354706282021-03-07 11:24:21319 days 15 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x94621b210f1c06dba577010ffac33322e2cb16028a66744aa651bb919d1a28f354706282021-03-07 11:24:21319 days 15 hrs ago PancakeSwap: PSG 2 Chiliz: PSG Fan Token0 BNB
0x94621b210f1c06dba577010ffac33322e2cb16028a66744aa651bb919d1a28f354706282021-03-07 11:24:21319 days 15 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x94621b210f1c06dba577010ffac33322e2cb16028a66744aa651bb919d1a28f354706282021-03-07 11:24:21319 days 15 hrs ago PancakeSwap: PSG 2 Chiliz: PSG Fan Token0 BNB
0x2b13a274d8c1865f4f586d82aa77b1ec92fac5ddfacff9b704daf1191c6eccdd54706282021-03-07 11:24:21319 days 15 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x2b13a274d8c1865f4f586d82aa77b1ec92fac5ddfacff9b704daf1191c6eccdd54706282021-03-07 11:24:21319 days 15 hrs ago PancakeSwap: PSG 2 Chiliz: PSG Fan Token0 BNB
0x2b13a274d8c1865f4f586d82aa77b1ec92fac5ddfacff9b704daf1191c6eccdd54706282021-03-07 11:24:21319 days 15 hrs ago Chiliz: PSG Fan Token 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c0 BNB
0x2b13a274d8c1865f4f586d82aa77b1ec92fac5ddfacff9b704daf1191c6eccdd54706282021-03-07 11:24:21319 days 15 hrs ago PancakeSwap: PSG 2 Chiliz: PSG Fan Token0 BNB
[ Download CSV Export 
Loading

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

Contract Name:
BEP20UpgradeableProxy

Compiler Version
v0.6.4+commit.1dca32f3

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license
/**
 *Submitted for verification at BscScan.com on 2020-10-28
*/

// File: openzeppelin-solidity/contracts/proxy/Proxy.sol



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-solidity/contracts/utils/Address.sol



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-solidity/contracts/proxy/UpgradeableProxy.sol



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-solidity/contracts/proxy/TransparentUpgradeableProxy.sol



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();
    }
}

// File: contracts/BEP20UpgradeableProxy.sol

pragma solidity ^0.6.0;


contract BEP20UpgradeableProxy is TransparentUpgradeableProxy {

    constructor(address logic, address admin, bytes memory data) TransparentUpgradeableProxy(logic, admin, data) public {

    }

}

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":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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"}]

608060405234801561001057600080fd5b506040516109b33803806109b38339818101604052606081101561003357600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005e57600080fd5b90830190602082018581111561007357600080fd5b825164010000000081118282018810171561008d57600080fd5b82525081516020918201929091019080838360005b838110156100ba5781810151838201526020016100a2565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b5060408181527f656970313936372e70726f78792e696d706c656d656e746174696f6e0000000082525190819003601c0190208693508592508491508390829060008051602061095d8339815191526000199091011461014357fe5b610155826001600160e01b0361027a16565b80511561020d576000826001600160a01b0316826040518082805190602001908083835b602083106101985780518252601f199092019160209182019101610179565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101f8576040519150601f19603f3d011682016040523d82523d6000602084013e6101fd565b606091505b505090508061020b57600080fd5b505b5050604080517f656970313936372e70726f78792e61646d696e000000000000000000000000008152905190819003601301902060008051602061093d8339815191526000199091011461025d57fe5b61026f826001600160e01b036102da16565b5050505050506102f2565b61028d816102ec60201b61054e1760201c565b6102c85760405162461bcd60e51b815260040180806020018281038252603681526020018061097d6036913960400191505060405180910390fd5b60008051602061095d83398151915255565b60008051602061093d83398151915255565b3b151590565b61063c806103016000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100985780635c60da1b146101185780638f28397014610149578063f851a4401461017c5761005d565b3661005d5761005b610191565b005b61005b610191565b34801561007157600080fd5b5061005b6004803603602081101561008857600080fd5b50356001600160a01b03166101ab565b61005b600480360360408110156100ae57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184600183028401116401000000008311171561010d57600080fd5b5090925090506101e5565b34801561012457600080fd5b5061012d610292565b604080516001600160a01b039092168252519081900360200190f35b34801561015557600080fd5b5061005b6004803603602081101561016c57600080fd5b50356001600160a01b03166102cf565b34801561018857600080fd5b5061012d610389565b6101996103b4565b6101a96101a4610414565b610439565b565b6101b361045d565b6001600160a01b0316336001600160a01b031614156101da576101d581610482565b6101e2565b6101e2610191565b50565b6101ed61045d565b6001600160a01b0316336001600160a01b031614156102855761020f83610482565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461026c576040519150601f19603f3d011682016040523d82523d6000602084013e610271565b606091505b505090508061027f57600080fd5b5061028d565b61028d610191565b505050565b600061029c61045d565b6001600160a01b0316336001600160a01b031614156102c4576102bd610414565b90506102cc565b6102cc610191565b90565b6102d761045d565b6001600160a01b0316336001600160a01b031614156101da576001600160a01b0381166103355760405162461bcd60e51b815260040180806020018281038252603a815260200180610555603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61035e61045d565b604080516001600160a01b03928316815291841660208301528051918290030190a16101d5816104c2565b600061039361045d565b6001600160a01b0316336001600160a01b031614156102c4576102bd61045d565b6103bc61045d565b6001600160a01b0316336001600160a01b0316141561040c5760405162461bcd60e51b81526004018080602001828103825260428152602001806105c56042913960600191505060405180910390fd5b6101a96101a9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610458573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61048b816104e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104ef8161054e565b61052a5760405162461bcd60e51b815260040180806020018281038252603681526020018061058f6036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f20616464726573735570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a2646970667358221220647a4fea61bb23cbda141d2cf5cadbd9ec022ccc2ffffaaa1b59b91259cfb8a164736f6c63430006040033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374000000000000000000000000ba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c000000000000000000000000ee9546e92e6876edf6a234effbd72d75360d91f0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

18728:202:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2907:11;:9;:11::i;:::-;18728:202;;2683:11;:9;:11::i;16927:111::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16927:111:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16927:111:0;-1:-1:-1;;;;;16927:111:0;;:::i;17424:299::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;17424:299:0;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;17424:299:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;17424: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;17424:299:0;;-1:-1:-1;17424:299:0;-1:-1:-1;17424:299:0;:::i;16193:104::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16193:104:0;;;:::i;:::-;;;;-1:-1:-1;;;;;16193:104:0;;;;;;;;;;;;;;16513:246;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16513:246:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16513:246:0;-1:-1:-1;;;;;16513:246:0;;:::i;15634:86::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15634:86:0;;;:::i;2335:105::-;2376:17;:15;:17::i;:::-;2404:28;2414:17;:15;:17::i;:::-;2404:9;:28::i;:::-;2335:105::o;16927:111::-;15090:8;:6;:8::i;:::-;-1:-1:-1;;;;;15076:22:0;:10;-1:-1:-1;;;;;15076:22:0;;15072:100;;;17001:29:::1;17012:17;17001:10;:29::i;:::-;15072:100:::0;;;15149:11;:9;:11::i;:::-;16927:111;:::o;17424:299::-;15090:8;:6;:8::i;:::-;-1:-1:-1;;;;;15076:22:0;:10;-1:-1:-1;;;;;15076:22:0;;15072:100;;;17534:29:::1;17545:17;17534:10;:29::i;:::-;17635:12;17652:17;-1:-1:-1::0;;;;;17652:30:0::1;17683:4;;17652:36;;;;;30:3:-1;22:6;14;1:33;17652:36:0;::::0;45:16:-1;::::1;::::0;-1:-1;17652:36:0::1;::::0;-1:-1:-1;17652:36:0;;-1:-1:-1;;17652: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;;17634:54:0;;;17707:7;17699:16;;12:1:-1;9::::0;2:12:::1;17699:16:0;15115:1;15072:100:::0;;;15149:11;:9;:11::i;:::-;17424:299;;;:::o;16193:104::-;16245:7;15090:8;:6;:8::i;:::-;-1:-1:-1;;;;;15076:22:0;:10;-1:-1:-1;;;;;15076:22:0;;15072:100;;;16272:17:::1;:15;:17::i;:::-;16265:24;;15072:100:::0;;;15149:11;:9;:11::i;:::-;16193:104;:::o;16513:246::-;15090:8;:6;:8::i;:::-;-1:-1:-1;;;;;15076:22:0;:10;-1:-1:-1;;;;;15076:22:0;;15072:100;;;-1:-1:-1;;;;;16588:22:0;::::1;16580:93;;;;-1:-1:-1::0;;;16580:93:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16689:32;16702:8;:6;:8::i;:::-;16689:32;::::0;;-1:-1:-1;;;;;16689:32:0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;16732:19;16742:8;16732:9;:19::i;15634:86::-:0;15677:7;15090:8;:6;:8::i;:::-;-1:-1:-1;;;;;15076:22:0;:10;-1:-1:-1;;;;;15076:22:0;;15072:100;;;15704:8:::1;:6;:8::i;18437:207::-:0;18523:8;:6;:8::i;:::-;-1:-1:-1;;;;;18509:22:0;:10;-1:-1:-1;;;;;18509:22:0;;;18501:101;;;;-1:-1:-1;;;18501:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18613:23;:21;:23::i;11325:248::-;11175:66;11544:11;;11521:45::o;935:907::-;1327:14;1324:1;1321;1308:34;1545:1;1542;1526:14;1523:1;1507:14;1500:5;1487:60;1624:16;1621:1;1618;1603:38;1664:6;1733:38;;;;1805:16;1802:1;1795:27;1733:38;1752:16;1749:1;1742:27;17789:219;14829:66;17979:11;;17957:44::o;11700:155::-;11767:37;11786:17;11767:18;:37::i;:::-;11820:27;;-1:-1:-1;;;;;11820:27:0;;;;;;;;11700:155;:::o;18095:216::-;14829:66;18271:22;18256:48::o;11951:369::-;12033:37;12052:17;12033:18;:37::i;:::-;12025:104;;;;-1:-1:-1;;;12025:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11175:66;12271:31;12256:57::o;4049:422::-;4416:20;4455:8;;;4049:422::o

Swarm Source

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