Contract 0x01d9918ac9015bd0477ddf83319e06e7bc117528 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x7331b25567c3cef718b09137b7aea4479e619c28e7f536aa6d37e9ffaad0857aHarvest96245352021-07-31 7:24:45120 days 7 hrs ago0xd34ad3e050c6294647b7d8e23bfeb9b563c241d9 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000372635
0x468a950973fa8f23c543359d8287e54b052d1e5ac8cbe3ef2cde63d6e67e6565Harvest96244502021-07-31 7:20:29120 days 7 hrs ago0xd34ad3e050c6294647b7d8e23bfeb9b563c241d9 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000372635
0x5588d88b13e76934a35fedcac9c34926f01afadd8dd1c23486d702f68801d505Harvest91669572021-07-15 3:13:09136 days 11 hrs ago0xf88a77451d63f2265e30855fe80fac43ce24c475 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000372635
0xeab3747266462843769175755639240610f63d7fd817c54ee4c508b3c3dc3a28Harvest91668462021-07-15 3:07:36136 days 11 hrs ago0xf88a77451d63f2265e30855fe80fac43ce24c475 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000372635
0x413fa78ba3cefec66e5086c267f2090bb19df12bb90aa81b0235f65c99592df1Harvest91665542021-07-15 2:53:00136 days 11 hrs ago0xf88a77451d63f2265e30855fe80fac43ce24c475 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000372635
0x736c7f38d2ee207ee3a7d26f7e81e8c2de1118cf7d5c51da78143d6efc76f363Harvest91665342021-07-15 2:52:00136 days 11 hrs ago0xf88a77451d63f2265e30855fe80fac43ce24c475 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000372635
0xc9af62d586d2b39d13bcc462e3a20c49a84f9962a57d36f1a03dfd21043dad85Harvest91664792021-07-15 2:49:15136 days 11 hrs ago0xf88a77451d63f2265e30855fe80fac43ce24c475 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000372635
0x21fd993716ee2cd6960b07f33ff8a036e81512bd24c3d8d035322cf2e5e42c9aHarvest91664652021-07-15 2:48:33136 days 11 hrs ago0xf88a77451d63f2265e30855fe80fac43ce24c475 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000372635
0x6f591715ebb882c6e2e8f5663f8cbb59fa1a826a007a91c229def13185e65ae5Final Withdraw91060082021-07-13 0:24:27138 days 14 hrs ago0x87500968b83f3f7091b85ea58daabc815935b553 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.00028933
0xec1b1990e14bbac7b3e85864bd9d1c58dc4afa525fa720888f5f69b6d815ecabFinal Withdraw91059722021-07-13 0:22:39138 days 14 hrs ago0x87500968b83f3f7091b85ea58daabc815935b553 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.00036433
0xb380eea4b621b237fd078f3476b9c101311e0a876e35d83a36597a1fce73ab37Harvest88161672021-07-02 22:04:49148 days 16 hrs ago0x8ff3fb1292066d7fea02b22b532b8a0fe5b444a9 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000565715
0x2162592f212438162e8f0bb1825faf4743ba8bad599e6d878756c4ee372277e0Harvest87852822021-07-01 20:01:06149 days 18 hrs ago0x29c5115ffbd83b1bdf2ce35451ff399ed4cff2e9 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000565715
0x3fcacd326a06771acbd856b531b14e9b980b75dd459907686c051204a7e046a4Harvest87250892021-06-29 17:24:44151 days 21 hrs ago0xacb52b15e97107cd10c8a0f78dbbed55032c5292 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000565715
0xabd03cc83879f27bbf54c93ac3f18fd7ede7aeb04edb083bb77424736bf07187Harvest87236762021-06-29 16:13:58151 days 22 hrs ago0xce105ff0ffc911cfc5534d21304b8af91dee2bcf IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000565715
0xb592f1f0745f465c09a043000bcce6e32f85fcdd6768032418fd6c08b9c7dcbeHarvest85935332021-06-25 3:17:58156 days 11 hrs ago0x977546536c80be9f1a3be98d91fe4df147328ff2 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000490715
0x1b24b2eeb04324d0362fb1da1a7a28a7d99d5ba6e31c0386ba462a8df7db0362Harvest85238222021-06-22 16:58:38158 days 21 hrs ago0x1a19abb0cdf79f0e4a773fd1fe312815927c105b IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000565715
0x9c5acfa4d382c9ac1b3465070f7f8e7ab42be26c4d924bd95b48de4bc25f8c6eHarvest84781142021-06-21 2:41:50160 days 12 hrs ago0x00a61edead7ef9a5e665bff359ade1dfa2927cd6 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000565715
0xea3b28a069767f86d50554332d2425619669284992de8ff00cb70741de1c667dHarvest84673972021-06-20 17:45:56160 days 20 hrs ago0x71ed49c965658d2431ff0bc564a21237b6bb1c3d IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000565715
0xb247a317933834fe86de31f3321cf620ca39f7b0b20d50e3e4ff840e33193ebaHarvest84101722021-06-18 17:46:40162 days 20 hrs ago0x5c051044f6b277523302cc7ea8dc9b581745a8f3 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000565715
0x53944a093789a764df77c7c360b44dbb5024eedcfa6dbef2bbe50baef3d48741Harvest84029902021-06-18 11:44:44163 days 3 hrs ago0x6d3273df2b6392a35acf898d1e097bd3a417be47 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000565715
0x4f8ee3a60aa7541c718c812c00feb274631a05417e583da5e085896ad4b12a26Harvest83915512021-06-18 2:08:24163 days 12 hrs ago0x6291d63cd523f8696a1422b5b4add8e571f6e535 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000565715
0x3c3cbdddc2a2e96e14117056282625a68d9c5afe041adb9600689baab4215a46Harvest83867182021-06-17 22:03:14163 days 16 hrs ago0x2b391d0c0f1fc5bb7280366ab0d5963f40f373ff IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000565715
0x7abbd6f4ae0a5c8f7381d728cf650724a41c7503277b5bbd75fab0291bd37674Harvest83852742021-06-17 20:50:23163 days 17 hrs ago0x7b52e9f980463aa8e53e6c3c6ab86f584b0cacbe IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000565715
0xc68f8fab13dde9e0746578021067a40a60be312b4d9a58ca5786ff38ae0e7b0aHarvest83543222021-06-16 18:50:49164 days 19 hrs ago0x76990e17c096ee27aaf2834be4a8da866d2b4dd9 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000565715
0xa35aae6bea62bf11496571779218e09f3a9fc9a7f2f11ca0f1984d7514bd330cHarvest83468972021-06-16 12:37:11165 days 2 hrs ago0x6c328d90b64820e33eb803cb200c82ca2ccfd374 IN  0x01d9918ac9015bd0477ddf83319e06e7bc1175280 BNB0.000565715
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
IFOUpgradeProxy

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 5 : IFOUpgradeProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

import "@ricefarm/rice-lib/contracts/proxy/TransparentUpgradeableProxy.sol";

/**
 * @dev RiceFarm: Initial Farm Offering
 *
  * Website: https://ricefarm.fi
 * Dex: https://swap.ricefarm.fi
 * Twitter: https://twitter.com/BobaGroup
 * Twitter: https://twitter.com/TeslaSafe
 * Telegram: https://t.me/tesla_safe
 *
 */
contract IFOUpgradeProxy is TransparentUpgradeableProxy {

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

    }

}

File 2 of 5 : 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 3 of 5 : TransparentUpgradeableProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

import "./UpgradeableProxy.sol";

/**
 * @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 4 of 5 : UpgradeableProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

import "./Proxy.sol";
import "../utils/Address.sol";

/**
 * @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 5 of 5 : 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) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @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);
            }
        }
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"address","name":"logic","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"}]

608060405234801561001057600080fd5b5060405161095b38038061095b8339818101604052606081101561003357600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005e57600080fd5b90830190602082018581111561007357600080fd5b825164010000000081118282018810171561008d57600080fd5b82525081516020918201929091019080838360005b838110156100ba5781810151838201526020016100a2565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b50604052508391508490508282816100fe826101d2565b8051156101b6576000826001600160a01b0316826040518082805190602001908083835b602083106101415780518252601f199092019160209182019101610122565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146101a1576040519150601f19603f3d011682016040523d82523d6000602084013e6101a6565b606091505b50509050806101b457600080fd5b505b506101be9050565b6101c782610244565b5050505050506102a4565b6101e58161026860201b6103b41760201c565b6102205760405162461bcd60e51b81526004018080602001828103825260368152602001806109256036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061029c57508115155b949350505050565b610672806102b36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100985780635c60da1b146101185780638f28397014610149578063f851a4401461017c5761005d565b3661005d5761005b610191565b005b61005b610191565b34801561007157600080fd5b5061005b6004803603602081101561008857600080fd5b50356001600160a01b03166101ab565b61005b600480360360408110156100ae57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184600183028401116401000000008311171561010d57600080fd5b5090925090506101e5565b34801561012457600080fd5b5061012d610292565b604080516001600160a01b039092168252519081900360200190f35b34801561015557600080fd5b5061005b6004803603602081101561016c57600080fd5b50356001600160a01b03166102cf565b34801561018857600080fd5b5061012d610389565b6101996103f0565b6101a96101a4610450565b610475565b565b6101b3610499565b6001600160a01b0316336001600160a01b031614156101da576101d5816104be565b6101e2565b6101e2610191565b50565b6101ed610499565b6001600160a01b0316336001600160a01b031614156102855761020f836104be565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461026c576040519150601f19603f3d011682016040523d82523d6000602084013e610271565b606091505b505090508061027f57600080fd5b5061028d565b61028d610191565b505050565b600061029c610499565b6001600160a01b0316336001600160a01b031614156102c4576102bd610450565b90506102cc565b6102cc610191565b90565b6102d7610499565b6001600160a01b0316336001600160a01b031614156101da576001600160a01b0381166103355760405162461bcd60e51b815260040180806020018281038252603a81526020018061058b603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61035e610499565b604080516001600160a01b03928316815291841660208301528051918290030190a16101d5816104fe565b6000610393610499565b6001600160a01b0316336001600160a01b031614156102c4576102bd610499565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906103e857508115155b949350505050565b6103f8610499565b6001600160a01b0316336001600160a01b031614156104485760405162461bcd60e51b81526004018080602001828103825260428152602001806105fb6042913960600191505060405180910390fd5b6101a96101a9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610494573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6104c781610522565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b61052b816103b4565b6105665760405162461bcd60e51b81526004018080602001828103825260368152602001806105c56036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f20616464726573735570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a26469706673582212207f7eb9f00074627ca67624674b9c2dc2f1a02f4db01d7ae0e22fd4acf95da00c64736f6c634300060c00335570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163740000000000000000000000008ba9dc38b005e7fb96f59d22358d088078c5d87f0000000000000000000000007e68dbb5fd349ad0384198d328656888ef8c5393000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e483a5041c000000000000000000000000d0fda937c512083091ba6e6193e421e6f125043f000000000000000000000000c4eeff5aab678c3ff32362d80946a3f5de4a186100000000000000000000000000000000000000000000000000000000007c757f00000000000000000000000000000000000000000000000000000000007dc7380000000000000000000000000000000000000000000845951614014880000000000000000000000000000000000000000000000000000a968163f0a57b00000000000000000000000000000087500968b83f3f7091b85ea58daabc815935b55300000000000000000000000000000000000000000000000000000000

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

0000000000000000000000008ba9dc38b005e7fb96f59d22358d088078c5d87f0000000000000000000000007e68dbb5fd349ad0384198d328656888ef8c5393000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e483a5041c000000000000000000000000d0fda937c512083091ba6e6193e421e6f125043f000000000000000000000000c4eeff5aab678c3ff32362d80946a3f5de4a186100000000000000000000000000000000000000000000000000000000007c757f00000000000000000000000000000000000000000000000000000000007dc7380000000000000000000000000000000000000000000845951614014880000000000000000000000000000000000000000000000000000a968163f0a57b00000000000000000000000000000087500968b83f3f7091b85ea58daabc815935b55300000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : admin (address): 0x8ba9dc38b005e7fb96f59d22358d088078c5d87f
Arg [1] : logic (address): 0x7e68dbb5fd349ad0384198d328656888ef8c5393
Arg [2] : data (bytes): 0x83a5041c000000000000000000000000d0fda937c512083091ba6e6193e421e6f125043f000000000000000000000000c4eeff5aab678c3ff32362d80946a3f5de4a186100000000000000000000000000000000000000000000000000000000007c757f00000000000000000000000000000000000000000000000000000000007dc7380000000000000000000000000000000000000000000845951614014880000000000000000000000000000000000000000000000000000a968163f0a57b00000000000000000000000000000087500968b83f3f7091b85ea58daabc815935b553

-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000008ba9dc38b005e7fb96f59d22358d088078c5d87f
Arg [1] : 0000000000000000000000007e68dbb5fd349ad0384198d328656888ef8c5393
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000e4
Arg [4] : 83a5041c000000000000000000000000d0fda937c512083091ba6e6193e421e6
Arg [5] : f125043f000000000000000000000000c4eeff5aab678c3ff32362d80946a3f5
Arg [6] : de4a186100000000000000000000000000000000000000000000000000000000
Arg [7] : 007c757f00000000000000000000000000000000000000000000000000000000
Arg [8] : 007dc73800000000000000000000000000000000000000000008459516140148
Arg [9] : 80000000000000000000000000000000000000000000000000000a968163f0a5
Arg [10] : 7b00000000000000000000000000000087500968b83f3f7091b85ea58daabc81
Arg [11] : 5935b55300000000000000000000000000000000000000000000000000000000


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.