Contract 0x08adbaa6a215affd711f532ec219299ba1e5b9b7

 
Txn Hash
Block
From
To
Value [Txn Fee]
0xf04322b3b1e91896acc1a2b3553efee62d1002b863ef5813774d6e37278803da72179692021-05-07 15:55:231 day 22 hrs ago0x1794bb0396cc2acc68d1d30f6f764443d09c22c5 IN  Binance: BEP-20 Factory0 BNB0.00280039
0x0743d0da9425f2eab36d82dac4c9e04a382b98a2e869175462bbfd81f2422a5071086042021-05-03 19:03:065 days 19 hrs ago0xa026a69fe96ad21d3c62ff93ae76ce01493df171 IN  Binance: BEP-20 Factory0 BNB0.00280141
0x00ce4579ebee7af23c10f961eb85dadfb0c668ffc023b1fc3836dca8d524b71f70115542021-04-30 9:06:269 days 5 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.003360828
0xa5c3a1fb73e22b5ba085e6a9f0368be70ccd40d27cd6a42078b1943960314db865534482021-04-14 8:20:2525 days 6 hrs ago0x28fa655c09918afc1798f4c152013685b21507bb IN  Binance: BEP-20 Factory0 BNB0.00280063
0xd632094f2dfc6bb98cd35b90db35308ae0d6df383ad227cd220c0fde1f12fd7365435322021-04-14 0:04:3725 days 14 hrs ago0xfd9bde60868258323b4d70aa37158459ebeb35d4 IN  Binance: BEP-20 Factory0 BNB0.000105
0x0ea919bc4f70be45b62c6d1763f0f6504a648369193e486348d14d76abf83ace63278552021-04-06 9:56:1333 days 4 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560174
0xb18f906b525f064544ca466afb695b27e0b9228c2787399ee1f37baea40865bb63278312021-04-06 9:55:0133 days 4 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560078
0x4757913039e884d072d53349f0ca023d9c758113893b8d2adbdcac321075976663278102021-04-06 9:53:5833 days 4 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560102
0xfe2de0a50a3245028f7fe85a5263a94150a8c3d52987b6414a37ed5be20d694163277822021-04-06 9:52:3433 days 4 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560114
0x13f21be84283f69c88049e2a7832c7ae69be851466672f120fba4c417ba4976063277532021-04-06 9:51:0733 days 4 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560102
0xd825ae7c3ff8d99b800db14e41b3fd2d19832a8562aa31ffb8a691954ab5429b63277312021-04-06 9:50:0133 days 4 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560114
0x3e7d4956f9f84b96f945d97f71e51223187e96ed7c5c35a95e744380729d2a4a63277082021-04-06 9:48:5233 days 4 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560126
0x3cefbba04b106a8f2db1f693b6335369860efcb141d1cdb7c49dc3203018025d63276822021-04-06 9:47:3433 days 4 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560102
0x81b5cd10c6c36ea21376a3fece685831049c844923cb7638494127daa897cd2263276412021-04-06 9:45:3133 days 4 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560198
0x48cf51a0bf96fa2f5335935b9c439e9bcc8776f7c3c31efb27546f7ef567244463276132021-04-06 9:44:0733 days 4 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560246
0x4100ea10e24a168bb1ebd3167601eba7ed990d507b936901d4430ee0b197647963275822021-04-06 9:42:3433 days 4 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560054
0xce4eb2498ebc45f811d5449ae2ea425adc02a56c8de1d32d472f92f2013b011b63275542021-04-06 9:41:1033 days 4 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560066
0x4a10a6608d3cc927460e8eda384d0bb84497dfbf3c1f7b00b7d4ff9ca3dccc1863275222021-04-06 9:39:3433 days 4 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560078
0x9ab911e21c11971eff33e1dbcb14f6d2893789d801c41c40bcf6be2c5b86e0f463274982021-04-06 9:38:2233 days 4 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560162
0xa69f0423ea22c026c62469a7c654f75cf80d2329297d16ec872500e3e0e7af5063274582021-04-06 9:36:2233 days 5 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.0056021
0xea68ed564d8b6a0f9d2e82ad48d57057b02104601af51972d65ae294df50a91d63274232021-04-06 9:34:3733 days 5 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560102
0x2ce0dd2b6a3de3c9a6e5ddfee3b37c76cdfab77e40148ecdfaf6494cea32e33563053682021-04-05 14:50:0033 days 23 hrs ago0xff34a99e79596ea588b969cb25d1fd44900d9b89 IN  Binance: BEP-20 Factory0 BNB0.00560306
0x9587b61430dd73395c3908ede3ad69fc04963ecd808fb804659f7de236ff4fed59928752021-03-25 15:49:2844 days 22 hrs ago0x10f919f874db00239a1f891d96279ff999514b82 IN  Binance: BEP-20 Factory0 BNB0.0056015
0xaaf5b24b66be270c3437c914167c966d2d1b754fcb1e987700a28bf99a1931f958992142021-03-22 9:02:4848 days 5 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.00560042
0x61b97d060663a4de84c939272f03465b769a619ae617e9d041f096c7756e1f5058968322021-03-22 7:03:4148 days 7 hrs ago0xd4fb89a009cf22246b69d17a420dfb9fcd2a4014 IN  Binance: BEP-20 Factory0 BNB0.0056015
[ Download CSV Export 

OVERVIEW

The Github repository can be found here, https://github.com/binance-chain/canonical-upgradeable-bep20.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xf04322b3b1e91896acc1a2b3553efee62d1002b863ef5813774d6e37278803da72179692021-05-07 15:55:231 day 22 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x0743d0da9425f2eab36d82dac4c9e04a382b98a2e869175462bbfd81f2422a5071086042021-05-03 19:03:065 days 19 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x00ce4579ebee7af23c10f961eb85dadfb0c668ffc023b1fc3836dca8d524b71f70115542021-04-30 9:06:269 days 5 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0xa5c3a1fb73e22b5ba085e6a9f0368be70ccd40d27cd6a42078b1943960314db865534482021-04-14 8:20:2525 days 6 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x0ea919bc4f70be45b62c6d1763f0f6504a648369193e486348d14d76abf83ace63278552021-04-06 9:56:1333 days 4 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0xb18f906b525f064544ca466afb695b27e0b9228c2787399ee1f37baea40865bb63278312021-04-06 9:55:0133 days 4 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x4757913039e884d072d53349f0ca023d9c758113893b8d2adbdcac321075976663278102021-04-06 9:53:5833 days 4 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0xfe2de0a50a3245028f7fe85a5263a94150a8c3d52987b6414a37ed5be20d694163277822021-04-06 9:52:3433 days 4 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x13f21be84283f69c88049e2a7832c7ae69be851466672f120fba4c417ba4976063277532021-04-06 9:51:0733 days 4 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0xd825ae7c3ff8d99b800db14e41b3fd2d19832a8562aa31ffb8a691954ab5429b63277312021-04-06 9:50:0133 days 4 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x3e7d4956f9f84b96f945d97f71e51223187e96ed7c5c35a95e744380729d2a4a63277082021-04-06 9:48:5233 days 4 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x3cefbba04b106a8f2db1f693b6335369860efcb141d1cdb7c49dc3203018025d63276822021-04-06 9:47:3433 days 4 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x81b5cd10c6c36ea21376a3fece685831049c844923cb7638494127daa897cd2263276412021-04-06 9:45:3133 days 4 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x48cf51a0bf96fa2f5335935b9c439e9bcc8776f7c3c31efb27546f7ef567244463276132021-04-06 9:44:0733 days 4 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x4100ea10e24a168bb1ebd3167601eba7ed990d507b936901d4430ee0b197647963275822021-04-06 9:42:3433 days 4 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0xce4eb2498ebc45f811d5449ae2ea425adc02a56c8de1d32d472f92f2013b011b63275542021-04-06 9:41:1033 days 4 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x4a10a6608d3cc927460e8eda384d0bb84497dfbf3c1f7b00b7d4ff9ca3dccc1863275222021-04-06 9:39:3433 days 4 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x9ab911e21c11971eff33e1dbcb14f6d2893789d801c41c40bcf6be2c5b86e0f463274982021-04-06 9:38:2233 days 4 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0xa69f0423ea22c026c62469a7c654f75cf80d2329297d16ec872500e3e0e7af5063274582021-04-06 9:36:2233 days 5 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0xea68ed564d8b6a0f9d2e82ad48d57057b02104601af51972d65ae294df50a91d63274232021-04-06 9:34:3733 days 5 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x2ce0dd2b6a3de3c9a6e5ddfee3b37c76cdfab77e40148ecdfaf6494cea32e33563053682021-04-05 14:50:0033 days 23 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x9587b61430dd73395c3908ede3ad69fc04963ecd808fb804659f7de236ff4fed59928752021-03-25 15:49:2844 days 22 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0xaaf5b24b66be270c3437c914167c966d2d1b754fcb1e987700a28bf99a1931f958992142021-03-22 9:02:4848 days 5 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x61b97d060663a4de84c939272f03465b769a619ae617e9d041f096c7756e1f5058968322021-03-22 7:03:4148 days 7 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
0x3d2f0b1fbaa32c81fb1b8ddfdc026f041069f3317f29e50dc7128d029579298c58967892021-03-22 7:01:3248 days 7 hrs ago Binance: BEP-20 Factory  Contract Creation0 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BEP20TokenFactory

Compiler Version
v0.6.4+commit.1dca32f3

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-10-28
*/

// File: openzeppelin-solidity/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-solidity/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-solidity/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-solidity/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();
    }
}

// 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 {

    }

}

// File: contracts/IProxyInitialize.sol

pragma solidity ^0.6.0;

interface IProxyInitialize {
    function initialize(string calldata name, string calldata symbol, uint8 decimals, uint256 amount, bool mintable, address owner) external;
}

// File: openzeppelin-solidity/contracts/GSN/Context.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: openzeppelin-solidity/contracts/access/Ownable.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/BEP20TokenFactory.sol

pragma solidity ^0.6.0;




contract BEP20TokenFactory{

    address public logicImplement;

    event TokenCreated(address indexed token);

    constructor(address _logicImplement) public {
        logicImplement = _logicImplement;
    }

    function createBEP20Token(string calldata name, string calldata symbol, uint8 decimals, uint256 amount, bool mintable, address bep20Owner, address proxyAdmin) external returns (address) {
        BEP20UpgradeableProxy proxyToken = new BEP20UpgradeableProxy(logicImplement, proxyAdmin, "");

        IProxyInitialize token = IProxyInitialize(address(proxyToken));
        token.initialize(name, symbol, decimals, amount, mintable, bep20Owner);
        emit TokenCreated(address(token));
        return address(token);
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logicImplement","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"TokenCreated","type":"event"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"mintable","type":"bool"},{"internalType":"address","name":"bep20Owner","type":"address"},{"internalType":"address","name":"proxyAdmin","type":"address"}],"name":"createBEP20Token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"logicImplement","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051610d51380380610d518339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610cec806100656000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806357a2fe931461003b578063f3b74ac51461005f575b600080fd5b610043610149565b604080516001600160a01b039092168252519081900360200190f35b610043600480360360e081101561007557600080fd5b81019060208101813564010000000081111561009057600080fd5b8201836020820111156100a257600080fd5b803590602001918460018302840111640100000000831117156100c457600080fd5b9193909290916020810190356401000000008111156100e257600080fd5b8201836020820111156100f457600080fd5b8035906020019184600183028401116401000000008311171561011657600080fd5b919350915060ff8135169060208101359060408101351515906001600160a01b0360608201358116916080013516610158565b6000546001600160a01b031681565b6000805460405182916001600160a01b0316908490610176906102f6565b6001600160a01b03928316815291166020820152606060408083018290526000918301829052519182900360a0019190f0801580156101b9573d6000803e3d6000fd5b5090506000819050806001600160a01b031663ef3ebcb88d8d8d8d8d8d8d8d6040518963ffffffff1660e01b81526004018080602001806020018760ff1660ff16815260200186815260200185151515158152602001846001600160a01b03166001600160a01b0316815260200183810383528b8b82818152602001925080828437600083820152601f01601f191690910184810383528981526020019050898980828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b15801561029b57600080fd5b505af11580156102af573d6000803e3d6000fd5b50506040516001600160a01b03841692507f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9150600090a29b9a5050505050505050505050565b6109b3806103048339019056fe608060405234801561001057600080fd5b506040516109b33803806109b38339818101604052606081101561003357600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005e57600080fd5b90830190602082018581111561007357600080fd5b825164010000000081118282018810171561008d57600080fd5b82525081516020918201929091019080838360005b838110156100ba5781810151838201526020016100a2565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b5060408181527f656970313936372e70726f78792e696d706c656d656e746174696f6e0000000082525190819003601c0190208693508592508491508390829060008051602061095d8339815191526000199091011461014357fe5b610155826001600160e01b0361027a16565b80511561020d576000826001600160a01b0316826040518082805190602001908083835b602083106101985780518252601f199092019160209182019101610179565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101f8576040519150601f19603f3d011682016040523d82523d6000602084013e6101fd565b606091505b505090508061020b57600080fd5b505b5050604080517f656970313936372e70726f78792e61646d696e000000000000000000000000008152905190819003601301902060008051602061093d8339815191526000199091011461025d57fe5b61026f826001600160e01b036102da16565b5050505050506102f2565b61028d816102ec60201b61054e1760201c565b6102c85760405162461bcd60e51b815260040180806020018281038252603681526020018061097d6036913960400191505060405180910390fd5b60008051602061095d83398151915255565b60008051602061093d83398151915255565b3b151590565b61063c806103016000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100985780635c60da1b146101185780638f28397014610149578063f851a4401461017c5761005d565b3661005d5761005b610191565b005b61005b610191565b34801561007157600080fd5b5061005b6004803603602081101561008857600080fd5b50356001600160a01b03166101ab565b61005b600480360360408110156100ae57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184600183028401116401000000008311171561010d57600080fd5b5090925090506101e5565b34801561012457600080fd5b5061012d610292565b604080516001600160a01b039092168252519081900360200190f35b34801561015557600080fd5b5061005b6004803603602081101561016c57600080fd5b50356001600160a01b03166102cf565b34801561018857600080fd5b5061012d610389565b6101996103b4565b6101a96101a4610414565b610439565b565b6101b361045d565b6001600160a01b0316336001600160a01b031614156101da576101d581610482565b6101e2565b6101e2610191565b50565b6101ed61045d565b6001600160a01b0316336001600160a01b031614156102855761020f83610482565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461026c576040519150601f19603f3d011682016040523d82523d6000602084013e610271565b606091505b505090508061027f57600080fd5b5061028d565b61028d610191565b505050565b600061029c61045d565b6001600160a01b0316336001600160a01b031614156102c4576102bd610414565b90506102cc565b6102cc610191565b90565b6102d761045d565b6001600160a01b0316336001600160a01b031614156101da576001600160a01b0381166103355760405162461bcd60e51b815260040180806020018281038252603a815260200180610555603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61035e61045d565b604080516001600160a01b03928316815291841660208301528051918290030190a16101d5816104c2565b600061039361045d565b6001600160a01b0316336001600160a01b031614156102c4576102bd61045d565b6103bc61045d565b6001600160a01b0316336001600160a01b0316141561040c5760405162461bcd60e51b81526004018080602001828103825260428152602001806105c56042913960600191505060405180910390fd5b6101a96101a9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610458573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61048b816104e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104ef8161054e565b61052a5760405162461bcd60e51b815260040180806020018281038252603681526020018061058f6036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f20616464726573735570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a2646970667358221220647a4fea61bb23cbda141d2cf5cadbd9ec022ccc2ffffaaa1b59b91259cfb8a164736f6c63430006040033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374a2646970667358221220507ac036c2a5f2f3e14c8abd6df58a3c3e0af6f0fc7ccac186c39b0a64de562764736f6c63430006040033000000000000000000000000ba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c

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

000000000000000000000000ba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c


Deployed ByteCode Sourcemap

22731:758:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22731:758:0;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;22766:29:0;;;:::i;:::-;;;;-1:-1:-1;;;;;22766:29:0;;;;;;;;;;;;;;22957:529;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;22957:529:0;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;22957:529:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;22957:529: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;22957:529:0;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;22957:529:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;22957:529: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;22957:529:0;;-1:-1:-1;22957:529:0;-1:-1:-1;22957:529:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22957:529:0;;;;;;;;;;;;:::i;22766:29::-;;;-1:-1:-1;;;;;22766:29:0;;:::o;22957:529::-;23134:7;23215:14;;23189:57;;23134:7;;-1:-1:-1;;;;;23215:14:0;;23231:10;;23189:57;;;:::i;:::-;-1:-1:-1;;;;;23189:57:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;23189:57:0;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23189:57:0;23154:92;;23259:22;23309:10;23259:62;;23332:5;-1:-1:-1;;;;;23332:16:0;;23349:4;;23355:6;;23363:8;23373:6;23381:8;23391:10;23332:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23332:70:0;-1:-1:-1;;;;;23332:70:0;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;23332:70:0;;;;;;;;;;;-1:-1:-1;23332:70:0;;;;;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;23332:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23332:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;23418:28:0;;-1:-1:-1;;;;;23418:28:0;;;-1:-1:-1;23418:28:0;;-1:-1:-1;23418:28:0;;;23472:5;22957:529;-1:-1:-1;;;;;;;;;;;22957:529:0:o;22731:758::-;;;;;;;;:::o

Swarm Source

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