Contract 0x3C3f2049cc17C136a604bE23cF7E42745edf3b91

 
Txn Hash
Block
From
To
Value [Txn Fee]
0x6eb2892be9bebef0b1be1bb9148fb6a9ab1b8bf6bd5b74e6ceec384d3931eec052393902021-02-27 9:02:237 secs ago0x0ae2348d33cd0a1e0fc6cd89abf93323eada0919 IN  PancakeSwap: Lottery0 BNB0.00479333
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago0xb44b43eb608b311b3153ea8b4a6e36f40b4a7d81 IN  PancakeSwap: Lottery0 BNB0.19868744
0x5280d7840018e06b33dcde0caaef393be399023e76e2294a4fbd85a95ea6c4e452393802021-02-27 9:01:5337 secs ago0x2ccda15519bfbb056382ebe30aa082b0e9eea143 IN  PancakeSwap: Lottery0 BNB0.00464333
0x4940ef9bc333fda2269c2f26827d14e27dbd32eabde77ef64a82d80d49fdeb4752393632021-02-27 9:01:021 min ago0x31433c53d7a34fdfaaadd1997f452ccab8d8da03 IN  PancakeSwap: Lottery0 BNB0.20078144
0x8b2bad13d714ed0ad2d61b553378f3e757c21517abc073ba8eb4d23b4ff6501152393582021-02-27 9:00:471 min ago0xb44b43eb608b311b3153ea8b4a6e36f40b4a7d81 IN  PancakeSwap: Lottery0 BNB0.20126744
0x13186191a27afae96fe1e7571f13c657b43792cdfa464adc29e0ab1fea98d35052393512021-02-27 9:00:262 mins ago0xca698b569691efd63420bab593862ee876277059 IN  PancakeSwap: Lottery0 BNB0.00530148
0x60b8544602ec5773269f001593df98b00ee59cb40178154561c1aa13cacf582552393402021-02-27 8:59:532 mins ago0xb44b43eb608b311b3153ea8b4a6e36f40b4a7d81 IN  PancakeSwap: Lottery0 BNB0.20477744
0x0987644bb0dff6e160abb87d18ce9ed9372c96955742d9fcb93423b1d1a457ba52393342021-02-27 8:59:352 mins ago0x908dc86191c54a0ae92b3c2a5272f2ebb9b8735d IN  PancakeSwap: Lottery0 BNB0.00494333
0x0e4c102bec439814975b5440d4610ace923634a9966cc6ef27ccbf939b923a5a52393252021-02-27 8:59:083 mins ago0xc7d119d6e5611c75ef7a8354012ebd30a0045bd6 IN  PancakeSwap: Lottery0 BNB0.00494333
0x89c85d7616d2cd26fefc5c96963f51ec546e77b9774d9be65dfdbb56b5bd360452393242021-02-27 8:59:053 mins ago0xb44b43eb608b311b3153ea8b4a6e36f40b4a7d81 IN  PancakeSwap: Lottery0 BNB0.20180144
0x2f47203a48e334646325f479518cbbdc79f051b1c47bb02ae596104ac6200b9652393202021-02-27 8:58:533 mins ago0x926673ccfd593f5fa4091433430e08f3ebafb3f4 IN  PancakeSwap: Lottery0 BNB0.00475133
0x886cb0e0609c7ac4a6b764f8d163f3f2eceaa0e16b9d5085fa83c6d3755b1ab952393202021-02-27 8:58:533 mins ago0x61a06c3d45a9e5a087b83a0211c01ed2d6f0f43f IN  PancakeSwap: Lottery0 BNB0.00494333
0xf73b07ffc842d7615099f6932f346b770d5e4cf74c690df62e6289aec96b6c6a52392982021-02-27 8:57:474 mins ago0x525fe0ccfbc52a8f9f4afe8b328500c352031147 IN  PancakeSwap: Lottery0 BNB0.00530148
0x354f4b8514082622ce930bf99d4e93774b6c90fdffd7c2d8a3afd709d391b58252392962021-02-27 8:57:414 mins ago0xd169ef638ae395d27fb8bc806727e2095e41f85d IN  PancakeSwap: Lottery0 BNB0.0211234
0x996b9902fd6815d7c50c32be79c7ab355f1ed938b68cc31a760ef5d65357c42852392932021-02-27 8:57:324 mins ago0x42fc9a390b8fb229ea19f0371dc3d41dba0b3a49 IN  PancakeSwap: Lottery0 BNB0.00490133
0x803dd70d3f933fc05dd718286ec784af9f79b5c54af4c12a96af4ba277b52df552392932021-02-27 8:57:324 mins ago0xb44b43eb608b311b3153ea8b4a6e36f40b4a7d81 IN  PancakeSwap: Lottery0 BNB0.20308544
0xb27ef86eb3a7fddbb385976d862d7e09866a6f72173ae6b5dd0d904167dc0fec52392892021-02-27 8:57:205 mins ago0x0e71caac97141e7107905d6ac332783b818fccb2 IN  PancakeSwap: Lottery0 BNB0.00464333
0xb57a42f209675b7043ecf67d16aef80e97aa1dbcddcd0b92c3c7e0d29c15199852392842021-02-27 8:57:055 mins ago0x31433c53d7a34fdfaaadd1997f452ccab8d8da03 IN  PancakeSwap: Lottery0 BNB0.20042744
0x0f5409e65064af8c21a1cd8899ff151701ed8e6dc199bb29809ca9fad1cad80852392802021-02-27 8:56:535 mins ago0x59a4c5f06b442dedc6dad79ae8835b99496b8f07 IN  PancakeSwap: Lottery0 BNB0.18399944
0x4b29cd2bf186edc9985f2c32949482aa242554b60ef87dcbcb083063aba1eb4052392762021-02-27 8:56:415 mins ago0x6dbb9d989289bdd2f11ae7b65783ba8cac6027d0 IN  PancakeSwap: Lottery0 BNB0.04074664
0x70ed9e20f1cf21cfd0621827b3a4749842914bf1f0a908db188800a0de80e12352392742021-02-27 8:56:355 mins ago0x711dd51173725e36ada8014544bb542250b21d31 IN  PancakeSwap: Lottery0 BNB0.03314521
0xd7667ce074f12660b262df1b8faa016b47ed806161871316848f362a96ed825552392722021-02-27 8:56:296 mins ago0xb44b43eb608b311b3153ea8b4a6e36f40b4a7d81 IN  PancakeSwap: Lottery0 BNB0.20313344
0x05b77e31c910079e913fed542cd18c59d0ef842016f214ad6568d0ee2da5063e52392622021-02-27 8:55:596 mins ago0x4d924a746aca6e6e8f22282ec7e4d11cf814a361 IN  PancakeSwap: Lottery0 BNB0.00933624
0xe1542d3cef2a734981ed6dc472c85b3eb7d718ca1a6ce101edcab502d2c93c3252392582021-02-27 8:55:476 mins ago0x31ad30005687c540f9b4bbd71e098fa51146c1e8 IN  PancakeSwap: Lottery0 BNB0.00494333
0xdf68d032bf8feb115ae358640384bd97126c24231f61e186f0c18cd7ac6c780652392442021-02-27 8:55:057 mins ago0x5c0d22c581a701bd829523324cb90e9fa870b79b IN  PancakeSwap: Lottery0 BNB0.00509333
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: CAKE Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
0x129ec2e287449a75b43f3d070b9b4b1f93a1dcdc7c632c6d561bd789163d5f7d52393842021-02-27 9:02:0525 secs ago PancakeSwap: Lottery PancakeSwap: PLT Token0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LotteryUpgradeProxy

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

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

// File: @openzeppelin/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/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/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/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/LotteryUpgradeProxy.sol

pragma solidity 0.6.12;


contract LotteryUpgradeProxy is TransparentUpgradeableProxy {

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

    }

}

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"}]

608060405234801561001057600080fd5b506040516108ef3803806108ef8339818101604052606081101561003357600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005e57600080fd5b90830190602082018581111561007357600080fd5b825164010000000081118282018810171561008d57600080fd5b82525081516020918201929091019080838360005b838110156100ba5781810151838201526020016100a2565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b50604052508491508390508282816100fe826101d2565b8051156101b6576000826001600160a01b0316826040518082805190602001908083835b602083106101415780518252601f199092019160209182019101610122565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101a1576040519150601f19603f3d011682016040523d82523d6000602084013e6101a6565b606091505b50509050806101b457600080fd5b505b506101be9050565b6101c782610244565b50505050505061026e565b6101e58161026860201b6103b41760201c565b6102205760405162461bcd60e51b81526004018080602001828103825260368152602001806108b96036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b3b151590565b61063c8061027d6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100985780635c60da1b146101185780638f28397014610149578063f851a4401461017c5761005d565b3661005d5761005b610191565b005b61005b610191565b34801561007157600080fd5b5061005b6004803603602081101561008857600080fd5b50356001600160a01b03166101ab565b61005b600480360360408110156100ae57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184600183028401116401000000008311171561010d57600080fd5b5090925090506101e5565b34801561012457600080fd5b5061012d610292565b604080516001600160a01b039092168252519081900360200190f35b34801561015557600080fd5b5061005b6004803603602081101561016c57600080fd5b50356001600160a01b03166102cf565b34801561018857600080fd5b5061012d610389565b6101996103ba565b6101a96101a461041a565b61043f565b565b6101b3610463565b6001600160a01b0316336001600160a01b031614156101da576101d581610488565b6101e2565b6101e2610191565b50565b6101ed610463565b6001600160a01b0316336001600160a01b031614156102855761020f83610488565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461026c576040519150601f19603f3d011682016040523d82523d6000602084013e610271565b606091505b505090508061027f57600080fd5b5061028d565b61028d610191565b505050565b600061029c610463565b6001600160a01b0316336001600160a01b031614156102c4576102bd61041a565b90506102cc565b6102cc610191565b90565b6102d7610463565b6001600160a01b0316336001600160a01b031614156101da576001600160a01b0381166103355760405162461bcd60e51b815260040180806020018281038252603a815260200180610555603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61035e610463565b604080516001600160a01b03928316815291841660208301528051918290030190a16101d5816104c8565b6000610393610463565b6001600160a01b0316336001600160a01b031614156102c4576102bd610463565b3b151590565b6103c2610463565b6001600160a01b0316336001600160a01b031614156104125760405162461bcd60e51b81526004018080602001828103825260428152602001806105c56042913960600191505060405180910390fd5b6101a96101a9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b610491816104ec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104f5816103b4565b6105305760405162461bcd60e51b815260040180806020018281038252603681526020018061058f6036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f20616464726573735570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a2646970667358221220149292ab74d5e0161b0fadc77032911278923460adcff7b0187c35731ea8ca3764736f6c634300060c00335570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374000000000000000000000000b1cc7661b99ee1874dc45dc34cd8403683167cc30000000000000000000000000f9399fc81dac77908a2dde54bb87ee2d17a3373000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c411e420650000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce820000000000000000000000005e74094cd416f55179dbd0e45b1a8ed030e396a10000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000b9fa21a62fc96cb2ac635a051061e2e50d964051000000000000000000000000b9fa21a62fc96cb2ac635a051061e2e50d96405100000000000000000000000000000000000000000000000000000000

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

000000000000000000000000b1cc7661b99ee1874dc45dc34cd8403683167cc30000000000000000000000000f9399fc81dac77908a2dde54bb87ee2d17a3373000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c411e420650000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a19e81ce820000000000000000000000005e74094cd416f55179dbd0e45b1a8ed030e396a10000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000b9fa21a62fc96cb2ac635a051061e2e50d964051000000000000000000000000b9fa21a62fc96cb2ac635a051061e2e50d96405100000000000000000000000000000000000000000000000000000000

-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 000000000000000000000000b1cc7661b99ee1874dc45dc34cd8403683167cc3
Arg [1] : 0000000000000000000000000f9399fc81dac77908a2dde54bb87ee2d17a3373
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000c4
Arg [4] : 11e420650000000000000000000000000e09fabb73bd3ade0a17ecc321fd13a1
Arg [5] : 9e81ce820000000000000000000000005e74094cd416f55179dbd0e45b1a8ed0
Arg [6] : 30e396a10000000000000000000000000000000000000000000000008ac72304
Arg [7] : 89e8000000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000a000000000000000000000000b9fa21a62fc96cb2ac635a051061e2e5
Arg [9] : 0d964051000000000000000000000000b9fa21a62fc96cb2ac635a051061e2e5
Arg [10] : 0d96405100000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

18686:200:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2897:11;:9;:11::i;:::-;18686:200;;2673:11;:9;:11::i;16887:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16887:111:0;-1:-1:-1;;;;;16887:111:0;;:::i;17384:299::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17384:299:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17384:299:0;;-1:-1:-1;17384:299:0;-1:-1:-1;17384:299:0;:::i;16153:104::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;16153:104:0;;;;;;;;;;;;;;16473:246;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16473:246:0;-1:-1:-1;;;;;16473:246:0;;:::i;15594:86::-;;;;;;;;;;;;;:::i;2325:105::-;2366:17;:15;:17::i;:::-;2394:28;2404:17;:15;:17::i;:::-;2394:9;:28::i;:::-;2325:105::o;16887:111::-;15050:8;:6;:8::i;:::-;-1:-1:-1;;;;;15036:22:0;:10;-1:-1:-1;;;;;15036:22:0;;15032:100;;;16961:29:::1;16972:17;16961:10;:29::i;:::-;15032:100:::0;;;15109:11;:9;:11::i;:::-;16887:111;:::o;17384:299::-;15050:8;:6;:8::i;:::-;-1:-1:-1;;;;;15036:22:0;:10;-1:-1:-1;;;;;15036:22:0;;15032:100;;;17494:29:::1;17505:17;17494:10;:29::i;:::-;17595:12;17612:17;-1:-1:-1::0;;;;;17612:30:0::1;17643:4;;17612:36;;;;;;;;;;::::0;;::::1;::::0;-1:-1:-1;17612:36:0::1;::::0;-1:-1:-1;17612:36:0;;-1:-1:-1;;17612:36:0;;::::1;::::0;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17594:54;;;17667:7;17659:16;;;::::0;::::1;;15075:1;15032:100:::0;;;15109:11;:9;:11::i;:::-;17384:299;;;:::o;16153:104::-;16205:7;15050:8;:6;:8::i;:::-;-1:-1:-1;;;;;15036:22:0;:10;-1:-1:-1;;;;;15036:22:0;;15032:100;;;16232:17:::1;:15;:17::i;:::-;16225:24;;15032:100:::0;;;15109:11;:9;:11::i;:::-;16153:104;:::o;16473:246::-;15050:8;:6;:8::i;:::-;-1:-1:-1;;;;;15036:22:0;:10;-1:-1:-1;;;;;15036:22:0;;15032:100;;;-1:-1:-1;;;;;16548:22:0;::::1;16540:93;;;;-1:-1:-1::0;;;16540:93:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16649:32;16662:8;:6;:8::i;:::-;16649:32;::::0;;-1:-1:-1;;;;;16649:32:0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;16692:19;16702:8;16692:9;:19::i;15594:86::-:0;15637:7;15050:8;:6;:8::i;:::-;-1:-1:-1;;;;;15036:22:0;:10;-1:-1:-1;;;;;15036:22:0;;15032:100;;;15664:8:::1;:6;:8::i;4029:422::-:0;4396:20;4435:8;;;4029:422::o;18397:207::-;18483:8;:6;:8::i;:::-;-1:-1:-1;;;;;18469:22:0;:10;-1:-1:-1;;;;;18469:22:0;;;18461:101;;;;-1:-1:-1;;;18461:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18573:23;:21;:23::i;11295:248::-;11145:66;11514:11;;11491:45::o;925:907::-;1317:14;1314:1;1311;1298:34;1535:1;1532;1516:14;1513:1;1497:14;1490:5;1477:60;1614:16;1611:1;1608;1593:38;1654:6;1723:38;;;;1795:16;1792:1;1785:27;1723:38;1742:16;1739:1;1732:27;17749:219;14789:66;17939:11;;17917:44::o;11670:155::-;11737:37;11756:17;11737:18;:37::i;:::-;11790:27;;-1:-1:-1;;;;;11790:27:0;;;;;;;;11670:155;:::o;18055:216::-;14789:66;18231:22;18216:48::o;11921:369::-;12003:37;12022:17;12003:18;:37::i;:::-;11995:104;;;;-1:-1:-1;;;11995:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11145:66;12241:31;12226:57::o

Swarm Source

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