Contract 0xaee24d5296444c007a532696aada9de5ce6cafd0

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x747f49a4d96ac718f60db163ab914943970d15ecbeab640ca84f41b62886f9e2Transfer405042972023-03-18 21:44:2312 days 9 hrs ago0xe19f29188a917ed04c14cc6b8349b5d2cbfa46f7 IN  SW DAO: SWD Token0 MATIC0.004760014448 78.120108464
0xa749436162e162603119d3bf3901c2ff1a11e7a3f3eae065e3a35019fb20a953Transfer404991682023-03-18 18:34:0812 days 12 hrs ago0x820f92c1b3ad8e962e6c6d9d7caf2a550aec46fb IN  SW DAO: SWD Token0 MATIC0.01808746571372.10882386
0x64e8058873009983117d3e16c6a3d50245a165c7a681dd9051a68c29dfd3a287Transfer396139932023-02-23 7:31:0635 days 23 hrs ago0x222eef670389407353f536662aea3c4eafd7b0a5 IN  SW DAO: SWD Token0 MATIC0.008867394544 202.193418116
0x0358b67587be68eafaf8a7b2c5dac2d0801b3bf66d3b74edee20fc28d5d3a038Transfer393647752023-02-16 16:51:3342 days 14 hrs ago0xeaa80a8443cf37afa63fd335a6489f9473559509 IN  SW DAO: SWD Token0 MATIC0.019064824 314
0x7a169170ae0ba22d049ba5ba14fd261830e43d4c01cda890c91585b37b08aa84Transfer386548972023-01-29 6:35:4861 days 44 mins ago0x820f92c1b3ad8e962e6c6d9d7caf2a550aec46fb IN  SW DAO: SWD Token0 MATIC0.00572063957487.02975073
0x2c10375293cd3d7a7d8fbf20f130b4ee5c53b8349d4d461f3caa79a7a40e2865Transfer383829292023-01-22 8:52:0267 days 22 hrs ago0x8a651f5315671a873291a98dfb20d782e39ce101 IN  SW DAO: SWD Token0 MATIC0.00371685261
0x0e45b39b0a6a0133c6d768b13e5e1ef1241a7a64cb0e5d8f4df315d7c9898db5Approve382201982023-01-18 5:51:5972 days 1 hr ago0x9e3154cb7aee37a3add33790564f22d93537d756 IN  SW DAO: SWD Token0 MATIC0.001197839258 37.921906426
0x9ad1076c13a8ed7ad8a7ff00f3f240a531a468a619d6dc614e1f96fa06f51ec9Transfer382042342023-01-17 20:00:5072 days 11 hrs ago0x820f92c1b3ad8e962e6c6d9d7caf2a550aec46fb IN  SW DAO: SWD Token0 MATIC0.004101545984.338417103
0xecf56ff17b194c2546597f73ddbd9e89d6319e9f6fb8ae00adbc0ad5aa1910a7Approve381806252023-01-17 5:49:1973 days 1 hr ago0x1e0da7531eb34133235e7220c6806dd1ae2b1833 IN  SW DAO: SWD Token0 MATIC0.002679274877 49.735012847
0xff12f253db29e55c26b0cf271f8a53b450094a1b00d74d8b8b4880e3168c0529Approve381544182023-01-16 14:30:5973 days 16 hrs ago nostalgicorder.crypto  IN  SW DAO: SWD Token0 MATIC0.002504901729 59.948825614
0x705a6774f5a9114f134881c9cfe3af6a5072eeb3d172ad8a9b2ec8027cd9b057Transfer377501142023-01-06 17:23:5083 days 13 hrs ago0x820f92c1b3ad8e962e6c6d9d7caf2a550aec46fb IN  SW DAO: SWD Token0 MATIC0.00395281075481.280036898
0x2903fb126f7a314f2fdd84f91d198d49fd802217b1d7bd2fce5d70f06f425b0aTransfer374721502022-12-30 19:25:5990 days 11 hrs ago0x820f92c1b3ad8e962e6c6d9d7caf2a550aec46fb IN  SW DAO: SWD Token0 MATIC0.00555715666384.542637731
0x10d657af4a2ad28ee23bd88504fca6cda17edf49e03c2eb2faff8d4817650140Transfer373966792022-12-28 23:02:3892 days 8 hrs ago0x2577865a9f7dd93e09ec9cc63f560ccdd7d91102 IN  SW DAO: SWD Token0 MATIC0.002637252826 60.134367621
0x41fae95122c0114228c219063d00c86e05374c088883ed8c26d2f644db33e727Transfer369445672022-12-17 15:50:06103 days 15 hrs ago0x45d3aca54d1425e672fc5b39b0bba64f6a5dfc11 IN  SW DAO: SWD Token0 MATIC0.00524015286
0x1ef7424edc99b9ade7412e98af7280052590e626f458e72e5be78dc103fb83f6Approve367071752022-12-11 17:02:46109 days 14 hrs ago0x25e7aafa7af80f32e24a0487135282c8a1c7533a IN  SW DAO: SWD Token0 MATIC0.0015793550
0x7a2a9f3c2270d9fd2d67fc7b657ca7641444896762c6c1004b3978c944406bc2Approve361599392022-11-28 5:14:40123 days 2 hrs ago0xf6672e14424de03409ef7d2a03d1f8b21b0de278 IN  SW DAO: SWD Token0 MATIC0.003178389001 59.000000024
0x6e70c0bf807dc43133b1f5b133aa8758c3034cd850b37af09a35981bcb140a1aApprove360896912022-11-26 11:59:24124 days 19 hrs ago0x3e0765196ab970f0b42af9e930d17d1340d7160d IN  SW DAO: SWD Token0 MATIC0.000947610003 30.000000124
0x9a184f4925358fc902b8a40889c6d5c2b05c018d37d027f37d0d02a04bb03f0dTransfer359041202022-11-21 23:59:46129 days 7 hrs ago0x820f92c1b3ad8e962e6c6d9d7caf2a550aec46fb IN  SW DAO: SWD Token0 MATIC0.0029179260.000000012
0x0bc494fe5861cae536ef863f41f1ff749b9451b21e443de1d49eb09f4f6d9708Transfer358436052022-11-20 12:44:04130 days 18 hrs ago0x820f92c1b3ad8e962e6c6d9d7caf2a550aec46fb IN  SW DAO: SWD Token0 MATIC0.00394513409660.007515458
0x4256ae8be3f2f944415ee27dbd077f1a7d69f08e34d7b8988cc59ef7f577e1f2Approve356407552022-11-15 14:34:34135 days 16 hrs ago0xeec842613ae048fb9e8f29d036a65b6a65f588c3 IN  SW DAO: SWD Token0 MATIC0.002584821947 47.981696049
0x547b19cd875698efe5df03a1b08f212789b6ea74b9ab80eb83f55c86ea2aad58Transfer356406912022-11-15 14:32:22135 days 16 hrs ago0x820f92c1b3ad8e962e6c6d9d7caf2a550aec46fb IN  SW DAO: SWD Token0 MATIC0.00481864539673.307451413
0x7120f6b584c4073189f2fd66c026460d0a230f858c755ad6c3d5080c82073050Transfer356220222022-11-15 3:33:14136 days 3 hrs ago0x820f92c1b3ad8e962e6c6d9d7caf2a550aec46fb IN  SW DAO: SWD Token0 MATIC0.00313436577164.4665934
0x0da6667f0f25faf4bb74f27aafa15f0c6bf3fa4eb27327bf0030cad9ee5b4058Transfer356044932022-11-14 17:24:08136 days 13 hrs ago0x820f92c1b3ad8e962e6c6d9d7caf2a550aec46fb IN  SW DAO: SWD Token0 MATIC0.00400863617160.984545908
0xa10067f45025ab210882304156a5ad835ac61d8201211ed6a55de538281f3643Transfer354583152022-11-11 0:48:57140 days 6 hrs ago0x4b1729faf2f5c3d20b0600277c07872f651dbd59 IN  SW DAO: SWD Token0 MATIC0.004996944973 114.033431623
0xaf204cfd1ce6e323dfd70988c67fea20f0adf902bce505e21e5a017825a3136eTransfer354583052022-11-11 0:48:37140 days 6 hrs ago0xf0a133b0b0b2b200e90c7de25cf5bc8895df585f IN  SW DAO: SWD Token0 MATIC0.004612038701 105.192014902
[ Download CSV Export 

OVERVIEW

SW DAO offers a range of strategic DeFi investment products which allocate capital based on Machine Learning and quantitative methods.

Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x0f4ba3d09fdb88087bf892cbc8ada71f896a3924c2beadd2e83591dfa7f0a315236794972022-01-13 17:42:27441 days 13 hrs ago 0xf9ac9365a23d837f97078dad50638a12c9e256c8  Contract Creation0 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TransparentUpgradeableProxy

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at polygonscan.com on 2022-04-17
*/

// Sources flattened with hardhat v2.5.0 https://hardhat.org

// File @openzeppelin/contracts/proxy/Proxy.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.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 virtual {
        // 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 view virtual 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 virtual {
        _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 () external payable virtual {
        _fallback();
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
     * is empty.
     */
    receive () external payable virtual {
        _fallback();
    }

    /**
     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`
     * call, or as part of the Solidity `fallback` or `receive` functions.
     *
     * If overriden should call `super._beforeFallback()`.
     */
    function _beforeFallback() internal virtual {
    }
}


// File @openzeppelin/contracts/utils/Address.sol


pragma solidity >=0.6.2 <0.8.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) {
        // This method relies on 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");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


// File @openzeppelin/contracts/proxy/UpgradeableProxy.sol


pragma solidity >=0.6.0 <0.8.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) {
            Address.functionDelegateCall(_logic, _data);
        }
    }

    /**
     * @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 view virtual override 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 virtual {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Stores a new address in the EIP1967 implementation slot.
     */
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "UpgradeableProxy: new implementation is not a contract");

        bytes32 slot = _IMPLEMENTATION_SLOT;

        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(slot, newImplementation)
        }
    }
}


// File @openzeppelin/contracts/proxy/TransparentUpgradeableProxy.sol


pragma solidity >=0.6.0 <0.8.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 interface 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 admin_) {
        admin_ = _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 implementation_) {
        implementation_ = _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 virtual 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 virtual 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 virtual ifAdmin {
        _upgradeTo(newImplementation);
        Address.functionDelegateCall(newImplementation, data);
    }

    /**
     * @dev Returns the current admin.
     */
    function _admin() internal view virtual 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 virtual override {
        require(msg.sender != _admin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target");
        super._beforeFallback();
    }
}

Contract Security Audit

Contract ABI

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

608060405260405162000c7e38038062000c7e833981810160405260608110156200002957600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200005557600080fd5b9083019060208201858111156200006b57600080fd5b82516401000000008111828201881017156200008657600080fd5b82525081516020918201929091019080838360005b83811015620000b55781810151838201526020016200009b565b50505050905090810190601f168015620000e35780820380516001836020036101000a031916815260200191505b5060405250849150829050620000f98262000137565b8051156200011a57620001188282620001ae60201b620003841760201c565b505b50620001239050565b6200012e82620001dd565b505050620003bf565b6200014d816200020160201b620003b01760201c565b6200018a5760405162461bcd60e51b815260040180806020018281038252603681526020018062000c226036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6060620001d6838360405180606001604052806027815260200162000bfb6027913962000207565b9392505050565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b3b151590565b6060620002148462000201565b620002515760405162461bcd60e51b815260040180806020018281038252602681526020018062000c586026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b60208310620002915780518252601f19909201916020918201910162000270565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114620002f3576040519150601f19603f3d011682016040523d82523d6000602084013e620002f8565b606091505b5090925090506200030b82828662000315565b9695505050505050565b6060831562000326575081620001d6565b825115620003375782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200038357818101518382015260200162000369565b50505050905090810190601f168015620003b15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b61082c80620003cf6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100985780635c60da1b146101185780638f28397014610149578063f851a4401461017c5761005d565b3661005d5761005b610191565b005b61005b610191565b34801561007157600080fd5b5061005b6004803603602081101561008857600080fd5b50356001600160a01b03166101ab565b61005b600480360360408110156100ae57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184600183028401116401000000008311171561010d57600080fd5b5090925090506101e5565b34801561012457600080fd5b5061012d610262565b604080516001600160a01b039092168252519081900360200190f35b34801561015557600080fd5b5061005b6004803603602081101561016c57600080fd5b50356001600160a01b031661029f565b34801561018857600080fd5b5061012d610359565b6101996103b6565b6101a96101a4610416565b61043b565b565b6101b361045f565b6001600160a01b0316336001600160a01b031614156101da576101d581610484565b6101e2565b6101e2610191565b50565b6101ed61045f565b6001600160a01b0316336001600160a01b031614156102555761020f83610484565b61024f8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061038492505050565b5061025d565b61025d610191565b505050565b600061026c61045f565b6001600160a01b0316336001600160a01b031614156102945761028d610416565b905061029c565b61029c610191565b90565b6102a761045f565b6001600160a01b0316336001600160a01b031614156101da576001600160a01b0381166103055760405162461bcd60e51b815260040180806020018281038252603a8152602001806106f8603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61032e61045f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101d5816104c4565b600061036361045f565b6001600160a01b0316336001600160a01b031614156102945761028d61045f565b60606103a98383604051806060016040528060278152602001610732602791396104e8565b9392505050565b3b151590565b6103be61045f565b6001600160a01b0316336001600160a01b0316141561040e5760405162461bcd60e51b81526004018080602001828103825260428152602001806107b56042913960600191505060405180910390fd5b6101a96101a9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561045a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61048d816105eb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b60606104f3846103b0565b61052e5760405162461bcd60e51b815260040180806020018281038252602681526020018061078f6026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b6020831061056c5780518252601f19909201916020918201910161054d565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146105cc576040519150601f19603f3d011682016040523d82523d6000602084013e6105d1565b606091505b50915091506105e1828286610653565b9695505050505050565b6105f4816103b0565b61062f5760405162461bcd60e51b81526004018080602001828103825260368152602001806107596036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b606083156106625750816103a9565b8251156106725782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106bc5781810151838201526020016106a4565b50505050905090810190601f1680156106e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f2061646472657373416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a26469706673582212206c7d9f9210050a2a3b139e9018b711bee78264b2de59dd83f2d515ee541efbf564736f6c634300060c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e74726163740000000000000000000000002cd90158baae285010a5ed7c549c2e5b4c0715f40000000000000000000000002861f4fcadeb5be5ca47d306d139ec97439fc35c00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104de7ea79d000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000071d57ee5471b720642a129621ea694da8f949621000000000000000000000000000000000000000000000000000000000000001953572044414f205b76696120436861696e506f72742e696f5d000000000000000000000000000000000000000000000000000000000000000000000000000003535744000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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

0000000000000000000000002cd90158baae285010a5ed7c549c2e5b4c0715f40000000000000000000000002861f4fcadeb5be5ca47d306d139ec97439fc35c00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104de7ea79d000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000071d57ee5471b720642a129621ea694da8f949621000000000000000000000000000000000000000000000000000000000000001953572044414f205b76696120436861696e506f72742e696f5d000000000000000000000000000000000000000000000000000000000000000000000000000003535744000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _logic (address): 0x2cd90158baae285010a5ed7c549c2e5b4c0715f4
Arg [1] : admin_ (address): 0x2861f4fcadeb5be5ca47d306d139ec97439fc35c
Arg [2] : _data (bytes): 0xde7ea79d000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000071d57ee5471b720642a129621ea694da8f949621000000000000000000000000000000000000000000000000000000000000001953572044414f205b76696120436861696e506f72742e696f5d0000000000000000000000000000000000000000000000000000000000000000000000000000035357440000000000000000000000000000000000000000000000000000000000

-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 0000000000000000000000002cd90158baae285010a5ed7c549c2e5b4c0715f4
Arg [1] : 0000000000000000000000002861f4fcadeb5be5ca47d306d139ec97439fc35c
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000104
Arg [4] : de7ea79d00000000000000000000000000000000000000000000000000000000
Arg [5] : 0000008000000000000000000000000000000000000000000000000000000000
Arg [6] : 000000c000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000001200000000000000000000000071d57ee5471b720642a129621ea694da
Arg [8] : 8f94962100000000000000000000000000000000000000000000000000000000
Arg [9] : 0000001953572044414f205b76696120436861696e506f72742e696f5d000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [11] : 0000000353574400000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

15902:4701:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3005:11;:9;:11::i;:::-;15902:4701;;2773:11;:9;:11::i;18948:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18948:119:0;-1:-1:-1;;;;;18948:119:0;;:::i;19452:219::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19452:219:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19452:219:0;;-1:-1:-1;19452:219:0;-1:-1:-1;19452:219:0;:::i;18182:131::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;18182:131:0;;;;;;;;;;;;;;18527:254;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18527:254:0;-1:-1:-1;;;;;18527:254:0;;:::i;17616:95::-;;;;;;;;;;;;;:::i;2409:113::-;2458:17;:15;:17::i;:::-;2486:28;2496:17;:15;:17::i;:::-;2486:9;:28::i;:::-;2409:113::o;18948:119::-;17074:8;:6;:8::i;:::-;-1:-1:-1;;;;;17060:22:0;:10;-1:-1:-1;;;;;17060:22:0;;17056:100;;;19030:29:::1;19041:17;19030:10;:29::i;:::-;17056:100:::0;;;17133:11;:9;:11::i;:::-;18948:119;:::o;19452:219::-;17074:8;:6;:8::i;:::-;-1:-1:-1;;;;;17060:22:0;:10;-1:-1:-1;;;;;17060:22:0;;17056:100;;;19570:29:::1;19581:17;19570:10;:29::i;:::-;19610:53;19639:17;19658:4;;19610:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;19610:28:0::1;::::0;-1:-1:-1;;;19610:53:0:i:1;:::-;;17056:100:::0;;;17133:11;:9;:11::i;:::-;19452:219;;;:::o;18182:131::-;18234:23;17074:8;:6;:8::i;:::-;-1:-1:-1;;;;;17060:22:0;:10;-1:-1:-1;;;;;17060:22:0;;17056:100;;;18288:17:::1;:15;:17::i;:::-;18270:35;;17056:100:::0;;;17133:11;:9;:11::i;:::-;18182:131;:::o;18527:254::-;17074:8;:6;:8::i;:::-;-1:-1:-1;;;;;17060:22:0;:10;-1:-1:-1;;;;;17060:22:0;;17056:100;;;-1:-1:-1;;;;;18610:22:0;::::1;18602:93;;;;-1:-1:-1::0;;;18602:93:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18711:32;18724:8;:6;:8::i;:::-;18711:32;::::0;;-1:-1:-1;;;;;18711:32:0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;18754:19;18764:8;18754:9;:19::i;17616:95::-:0;17659:14;17074:8;:6;:8::i;:::-;-1:-1:-1;;;;;17060:22:0;:10;-1:-1:-1;;;;;17060:22:0;;17056:100;;;17695:8:::1;:6;:8::i;9832:200::-:0;9915:12;9947:77;9968:6;9976:4;9947:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;9940:84;9832:200;-1:-1:-1;;;9832:200:0:o;4145:422::-;4512:20;4551:8;;;4145:422::o;20393:207::-;20479:8;:6;:8::i;:::-;-1:-1:-1;;;;;20465:22:0;:10;-1:-1:-1;;;;;20465:22:0;;;20457:101;;;;-1:-1:-1;;;20457:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20569:23;:21;:23::i;13300:256::-;13150:66;13527:11;;13504:45::o;1026:891::-;1414:14;1411:1;1408;1395:34;1624:1;1621;1605:14;1602:1;1586:14;1579:5;1566:60;1699:16;1696:1;1693;1678:38;1739:6;1808:38;;;;1880:16;1877:1;1870:27;1808:38;1827:16;1824:1;1817:27;19737:227;16813:66;19935:11;;19913:44::o;13682:163::-;13757:37;13776:17;13757:18;:37::i;:::-;13810:27;;-1:-1:-1;;;;;13810:27:0;;;;;;;;13682:163;:::o;20051:216::-;16813:66;20227:22;20212:48::o;10226:423::-;10337:12;10370:18;10381:6;10370:10;:18::i;:::-;10362:69;;;;-1:-1:-1;;;10362:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10505:12;10519:23;10546:6;-1:-1:-1;;;;;10546:19:0;10566:4;10546:25;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10546:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10504:67;;;;10589:52;10607:7;10616:10;10628:12;10589:17;:52::i;:::-;10582:59;10226:423;-1:-1:-1;;;;;;10226:423:0:o;13941:369::-;14023:37;14042:17;14023:18;:37::i;:::-;14015:104;;;;-1:-1:-1;;;14015:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13150:66;14261:31;14246:57::o;10657:742::-;10772:12;10801:7;10797:595;;;-1:-1:-1;10832:10:0;10825:17;;10797:595;10946:17;;:21;10942:439;;11209:10;11203:17;11270:15;11257:10;11253:2;11249:19;11242:44;11157:148;11352:12;11345:20;;-1:-1:-1;;;11345:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://6c7d9f9210050a2a3b139e9018b711bee78264b2de59dd83f2d515ee541efbf5
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.