Contract 0x8198aD77845bA0F33151f13E6993E5Ff5C93b899 2

 
Txn Hash
Method
Block
From
To
Value
0xbc6afe0914de1aaaa85e085c20c57771fe2548bbd598a948f103b9eecdbb01a9Safe Transfer Fr...153548122022-08-16 21:38:459 hrs 40 mins ago0x3d3d3e1ff14b4f143c799c21b12facd9d7a43fb2 IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00099694 13.‍73852347
0x8d897405355341079828a9df13a95437e5322fdc7f2d4344efd89fd9c813a34fSet Approval For...153502542022-08-16 4:31:081 day 2 hrs ago0x2ac0922e3afe6bb156a361884a17385af571b612 IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00050828 9.‍90157393
0xd661be71c0803a439ec402583651ce7d5fe7f5fd4035dd6b883cd9554a7c7045Set Approval For...153480522022-08-15 20:13:031 day 11 hrs ago0xd01236cd714ab5b1e7ac0c7502dc431ba46364bc IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00096647 18.‍82709342
0xf3dd040b6bc2a330cba0917bff49b75f8192540718b1ce66de4c5934edaaf9e1Set Approval For...153395932022-08-14 11:50:582 days 19 hrs ago0xeb2970d0c7e275670dd94b1d3fc8029c44b1a231 IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00039789 7.‍7383948
0x43158825d97a93e901693fc133c9b0ed1af6f6d089e14ce639fba20aeb0f77e1Transfer From153380252022-08-14 6:02:553 days 1 hr agoENS Name cryptrow.eth IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00056276 8.‍65265633
0xa323965ce32f994fd6f807acc39f969ccfccf74335c9fb870a313db429f6f64aSet Approval For...153339942022-08-13 14:39:363 days 16 hrs agoENS Name dbok1.eth IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00055569 10.‍82511514
0x95d68857869763a7b80823521dddacb891610080c4b014af36ded9d32e8257ceTransfer From153327852022-08-13 10:08:523 days 21 hrs ago0x047705260fde6ab6aa483eb9a23aa404d309f26c IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00056599 10.‍73193649
0x49ab5127aa4ce3dcb2a1e77ad2d47501f9778b95224aca7555ebcfe640b4bf28Set Approval For...153318612022-08-13 6:38:454 days 40 mins ago0x8cfb67afe8bf0df0f6e39d6e4d8518e060aab183 IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00048913 9.‍52847102
0xd2b9df6a3a8623a4a38d831bac545ceeb4e9b917506907d7500665931b7a38c7Set Approval For...153308442022-08-13 2:51:314 days 4 hrs agoENS Name greatmek0.eth IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00071867 14
0x210b62f8a7a37d1d72495064d1ac4a9ead51dcc78a8de5ce3af6157e2fe1badaTransfer From153286162022-08-12 18:38:574 days 12 hrs ago0x38fcffcd0cd989978dc4f0232d45e7cec0cbcd1d IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00106503 15.‍24985752
0xb7f28e630ebb4a3730f637c74223d21163df28497ff38048385caafbac3b202bSet Approval For...153229752022-08-11 21:09:445 days 10 hrs agoENS Name nftqueenofficial.eth IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍0010292 20.‍04919576
0x56d966e477ca5529c86271c5b31f0872bf184b6e5cd7c819eb681f592814bdf8Transfer From153229712022-08-11 21:08:325 days 10 hrs ago0x1a3546838dc28a3e6f3eadf25c6c420bcf05a601 IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00121979 17.‍46579086
0xb1460bd70579721bfafc7bbdd88702511375aaa3af253d15f2a4e35d079ff7e8Set Approval For...153171452022-08-10 22:54:146 days 8 hrs agoENS Name polgar.eth IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00199321 38.‍82840369
0x023df735e4c3bb1d7c57e165629eadc57436bf2104a18fecfc368664660aa8beTransfer From153149402022-08-10 14:46:406 days 16 hrs ago0x0ac21ae4a0dbdacad418aa4f34381af373c3129c IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00306012 58.‍02391849
0xf9022cec1194cc273689471ff29d3e9aab24fc428d0e36380a33c75229f8bea5Transfer From153149372022-08-10 14:44:336 days 16 hrs ago0x0ac21ae4a0dbdacad418aa4f34381af373c3129c IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00218873 41.‍50117756
0x2e62144ec9cac264b990246e405fec0ecdba3152824a3be4aa1c2205dba223cdTransfer From153149282022-08-10 14:42:566 days 16 hrs ago0x0ac21ae4a0dbdacad418aa4f34381af373c3129c IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00225509 42.‍7595746
0x967ff13b39b9d59f3ee470f613dbd1c1dae4cab33cde9c77b10d2a8439c4d9eeTransfer From153149162022-08-10 14:40:126 days 16 hrs ago0x0ac21ae4a0dbdacad418aa4f34381af373c3129c IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00264786 50.‍20693247
0xe4614ab0644c6f037dcf4e9c93a6f13157c42fd6f9ab19d03ac7098d968011a6Transfer From153148592022-08-10 14:24:436 days 16 hrs ago0x0ac21ae4a0dbdacad418aa4f34381af373c3129c IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00235972 44.‍74343614
0x809bf2c50f1cab7e157c8f5a4bdb728f0cde898827de16141593592ed11d5681Set Approval For...153139152022-08-10 10:52:086 days 20 hrs ago0x8459f8a09854e4095a6b1adb6de0ea30e1465566 IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00039227 7.‍64162457
0x1801d6a08cb897e57d45246e24fdef628661cc0db22cc62bd36897c9be7b8fd5Transfer From153133282022-08-10 8:36:586 days 22 hrs ago0x047705260fde6ab6aa483eb9a23aa404d309f26c IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00058085 11.‍01635222
0xe9d1c244ff9c01e85d9363b8be58223a79c390a557b79ef444b54b85abe1d6feTransfer From153132902022-08-10 8:29:296 days 22 hrs ago0x047705260fde6ab6aa483eb9a23aa404d309f26c IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00072417 13.‍73130318
0xf32a44333159177f48dbffa21985ed5fed86a3b4f946c0ea572f2a549820465bSet Approval For...153123272022-08-10 4:42:007 days 2 hrs ago0xe7b70586145ab57d3c5039eb60025682d68423ba IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00054369 10.‍59130971
0x6993c06d7c4d6efbe6bb13f232009b12d3cf55ad60ad122695ca50087b674418Set Approval For...153096492022-08-09 18:52:117 days 12 hrs ago0x8f6663a1ac7a98c060280b562c814a84b79b3123 IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00136829 26.‍65468347
0xefa009c706389d64f6fa62096900023215644f952fa48aab2864be2970b3a216Set Approval For...153081792022-08-09 13:10:177 days 18 hrs agoENS Name hollanas.eth IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00071342 13.‍89770652
0xb091501452655b110e5153a057032cc1fb8061d213dbdcf7f4d9059fc47107d1Set Approval For...153033212022-08-08 19:05:378 days 12 hrs ago0x5df428b1e06d71e63f48e73bea5b3c63ffc21920 IN  0x8198ad77845ba0f33151f13e6993e5ff5c93b8990 Ether0.‍00147992 28.‍82932912
[ Download CSV Export 
Latest 2 internal transactions
Parent Txn Hash Block From To Value
0xd21a7eb3bb84d7463ecbd77478797eb65e728b8b97caaec3f312777fc453d750140927142022-01-28 7:05:06201 days 14 mins ago 0x8198ad77845ba0f33151f13e6993e5ff5c93b8990x49c3b2c79f093b14f5bcbd31730e817e5d907fe9282.‍71 Ether
0xde8c8e81b3cc5f0a1b9f93260ea64ce6d3eb369a7979d19c926a6687b890fdaf138988512021-12-29 7:20:41230 days 23 hrs ago 0x8198ad77845ba0f33151f13e6993e5ff5c93b8990x49c3b2c79f093b14f5bcbd31730e817e5d907fe90.‍3 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OptimizedTransparentUpgradeableProxy

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license
File 1 of 4 : Proxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.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 2 of 4 : UpgradeableProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.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) 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 3 of 4 : Address.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

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

File 4 of 4 : OptimizedTransparentUpgradeableProxy.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;

import "../openzeppelin/proxy/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 OptimizedTransparentUpgradeableProxy is UpgradeableProxy {
    address internal immutable _ADMIN;

    /**
     * @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 initialLogic,
        address initialAdmin,
        bytes memory _data
    ) payable UpgradeableProxy(initialLogic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        bytes32 slot = _ADMIN_SLOT;

        _ADMIN = initialAdmin;

        // still store it to work with EIP-1967
        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(slot, initialAdmin)
        }
    }

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

    /**
     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.
     */
    function _beforeFallback() internal virtual override {
        require(msg.sender != _admin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target");
        super._beforeFallback();
    }
}

Settings
{
  "evmVersion": "istanbul",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"initialLogic","type":"address"},{"internalType":"address","name":"initialAdmin","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"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":[],"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"}]

60a06040526040516108fc3803806108fc8339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b50604052508491508290506100ee826101e9565b8051156101a6576000826001600160a01b0316826040518082805190602001908083835b602083106101315780518252601f199092019160209182019101610112565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610191576040519150601f19603f3d011682016040523d82523d6000602084013e610196565b606091505b50509050806101a457600080fd5b505b506101ae9050565b506001600160601b0319606082901b166080527fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035550610297565b6101fc8161025b60201b6103581760201c565b6102375760405162461bcd60e51b81526004018080602001828103825260368152602001806108c66036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061028f57508115155b949350505050565b60805160601c6106126102b46000398061047352506106126000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461009a5780635c60da1b14610127578063f851a4401461016557610052565b366100525761005061017a565b005b61005061017a565b34801561006657600080fd5b506100506004803603602081101561007d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610194565b610050600480360360408110156100b057600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156100e857600080fd5b8201836020820111156100fa57600080fd5b8035906020019184600183028401116401000000008311171561011c57600080fd5b5090925090506101e8565b34801561013357600080fd5b5061013c6102bc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561017157600080fd5b5061013c610313565b610182610394565b61019261018d610428565b61044d565b565b61019c610471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156101dd576101d881610495565b6101e5565b6101e561017a565b50565b6101f0610471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102af5761022c83610495565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040518083838082843760405192019450600093509091505080830381855af49150503d8060008114610296576040519150601f19603f3d011682016040523d82523d6000602084013e61029b565b606091505b50509050806102a957600080fd5b506102b7565b6102b761017a565b505050565b60006102c6610471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561030857610301610428565b9050610310565b61031061017a565b90565b600061031d610471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561030857610301610471565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061038c57508115155b949350505050565b61039c610471565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604281526020018061059b6042913960600191505060405180910390fd5b610192610192565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561046c573d6000f35b3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000090565b61049e816104e2565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6104eb81610358565b610540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806105656036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe5570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a26469706673582212200f42fc9d1f991236ae26e240c8505def958528031655d7dd335d3988cc0c88f564736f6c634300070600335570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374000000000000000000000000d8b1718f4f18d929d52aee79bee3f17d70003e0d000000000000000000000000f13dd8057a4689904f05b5c59d8484ed91ec9de7000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a485a567d800000000000000000000000000000000000000000000000000000000000000208ca1997d6afc9ba9a5e721973a15d6fdaf1c49a1edd2cd594876ab342b15433000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000061cd04900000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d65347436545737457735576547725551664557775734746d6f6a357862644b54514c554a614c5152683165522f00000000000000000000000000000000000000000000000000000000000000000000000000000000000e535441585820496e7661646572730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005535441585800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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

000000000000000000000000d8b1718f4f18d929d52aee79bee3f17d70003e0d000000000000000000000000f13dd8057a4689904f05b5c59d8484ed91ec9de7000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a485a567d800000000000000000000000000000000000000000000000000000000000000208ca1997d6afc9ba9a5e721973a15d6fdaf1c49a1edd2cd594876ab342b15433000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000061cd04900000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d65347436545737457735576547725551664557775734746d6f6a357862644b54514c554a614c5152683165522f00000000000000000000000000000000000000000000000000000000000000000000000000000000000e535441585820496e7661646572730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005535441585800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : initialLogic (address): 0xd8b1718f4f18d929d52aee79bee3f17d70003e0d
Arg [1] : initialAdmin (address): 0xf13dd8057a4689904f05b5c59d8484ed91ec9de7
Arg [2] : _data (bytes): 0x85a567d800000000000000000000000000000000000000000000000000000000000000208ca1997d6afc9ba9a5e721973a15d6fdaf1c49a1edd2cd594876ab342b15433000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000061cd04900000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d65347436545737457735576547725551664557775734746d6f6a357862644b54514c554a614c5152683165522f00000000000000000000000000000000000000000000000000000000000000000000000000000000000e535441585820496e76616465727300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055354415858000000000000000000000000000000000000000000000000000000

-----Encoded View---------------
18 Constructor Arguments found :
Arg [0] : 000000000000000000000000d8b1718f4f18d929d52aee79bee3f17d70003e0d
Arg [1] : 000000000000000000000000f13dd8057a4689904f05b5c59d8484ed91ec9de7
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 00000000000000000000000000000000000000000000000000000000000001a4
Arg [4] : 85a567d800000000000000000000000000000000000000000000000000000000
Arg [5] : 000000208ca1997d6afc9ba9a5e721973a15d6fdaf1c49a1edd2cd594876ab34
Arg [6] : 2b15433000000000000000000000000000000000000000000000000000000000
Arg [7] : 000000a000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000010000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000014000000000000000000000000000000000000000000000000000000000
Arg [10] : 61cd049000000000000000000000000000000000000000000000000000000000
Arg [11] : 00000036697066733a2f2f516d65347436545737457735576547725551664557
Arg [12] : 775734746d6f6a357862644b54514c554a614c5152683165522f000000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [14] : 0000000e535441585820496e7661646572730000000000000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [16] : 0000000553544158580000000000000000000000000000000000000000000000
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000000


Block Transaction Difficulty Gas Used Reward
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.

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.