Contract 0xb9a9bb6cc39387548baa7185fbff51d47eef8771

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x21755c5f485c24efcf918d7bec290d79dcbb2031c2c69a7627235f57bd004456Swap Exact Token...188238222022-08-19 0:39:272 hrs 23 mins ago0x726d4dc7a6dfd57f64996b83d081dee0ea84781e IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍0041858525
0xe2796f1a4295bccbd2eab172b47e252243f34511680e0d69f81fccc4c822bb30Swap Exact Token...188212622022-08-18 23:13:403 hrs 49 mins ago0x7bbdc43bbb8e92cab0ab810e0bc8e4125169774e IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍004437319 26.‍5
0xfd451d1c68f9b3dd6e4fb73bde542d0768f184314a7ee663e386b8913dad236aSwap Exact Token...188202302022-08-18 22:38:354 hrs 24 mins ago0x79def31fc8c37e221c5cc864447a3fd5971fb278 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍0034845115 26.‍5
0xb04a0ee0fd34c63b3cd3dfc8d642edd0c81b362ca9ccff4e6893a23435c0a9e3Swap Exact Token...188180342022-08-18 21:23:315 hrs 39 mins ago0x355be36d50df9284200a096a620a9b3983dcc353 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍0039376615 26.‍5
0x0352e57f2834c555c06be52a90999622ba81ce5b9f5a20fca081936805d4f594Swap Exact Token...188170022022-08-18 20:48:286 hrs 14 mins ago0x7ce91e30957386379751c6a3d75b7ef36603bfb3 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍005300954 26.‍5
0xa232d19d820b9d86d727291690df7ceab6ad5f3572393c9a567411ffb82bc67fAdd Liquidity188142202022-08-18 19:13:507 hrs 49 mins ago0x0dc5d653fc39e69b9e09bffa4a22e06d0b7cde25 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍005362967527.‍5
0x00decf7dcaf57288054bf25168de7d4cc1ecc54c4ae67240f71766ff5fe7b0e6Swap Exact ETH F...188141542022-08-18 19:11:327 hrs 51 mins ago0x0dc5d653fc39e69b9e09bffa4a22e06d0b7cde25 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87712.‍623 AVAX0.‍0065697527.‍5
0x50ce8dd562ee0e98c4e1d6acf668d0eaf7f4bf58afbb822bafe9aa8ab4ae0776Swap Exact ETH F...188141032022-08-18 19:09:507 hrs 53 mins ago0x0dc5d653fc39e69b9e09bffa4a22e06d0b7cde25 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87712.‍623 AVAX0.‍00413660527.‍5
0x605442fc79718b7fc16f82573d114f75b4a57ea669149962700330587b9f24aeAdd Liquidity188123192022-08-18 18:08:378 hrs 54 mins ago0x29fc16f42007ccb6aa6a0c6d30441f3c0084ecc2 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍0051739925 26.‍5
0x45a425a3265f5d9bbb2c051f874389566c2f848e88828b6bea9fe65c94b472beSwap Exact Token...188122502022-08-18 18:06:148 hrs 56 mins ago0x29fc16f42007ccb6aa6a0c6d30441f3c0084ecc2 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍0040183275 26.‍5
0x0dc0e1a3c4bab90ba9bca68ba312dfcec4f8c0d4f938c95bd8cc0bedadc1c21fSwap Exact Token...188121742022-08-18 18:03:428 hrs 59 mins ago0x29fc16f42007ccb6aa6a0c6d30441f3c0084ecc2 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍003504458936 27.‍06125
0xe98d0fda5d902e8339c66801cda959276103b99b7406ffd4d48211304b459977Remove Liquidity188121402022-08-18 18:02:319 hrs ago0x29fc16f42007ccb6aa6a0c6d30441f3c0084ecc2 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍00532137731 26.‍41
0x0088374eb2f2dea5b2a2962d7f0c360e2da0a3ce53995e5b029a3661521caa24Swap Exact ETH F...188054872022-08-18 14:13:5712 hrs 49 mins ago0x423d71ddd9dfb4fab1606a6ba97bd3ed70ea8175 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710.‍1 AVAX0.‍004551163 26.‍5
0x58dbbecff0c8e1b073673474416808fd175957eb38319efde4c63ff457e4badcAdd Liquidity188041392022-08-18 13:27:2413 hrs 35 mins ago0xf1fbfb310cb3a2208653b789a82eab2589f18a2d IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍0051737275 26.‍5
0x2de4fdff9b2f2822a7a643e9baf7ecacb60b8e78fbfb54f969fec430fbf966ecSwap Exact Token...188040532022-08-18 13:24:3213 hrs 38 mins ago0xf1fbfb310cb3a2208653b789a82eab2589f18a2d IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍0035641175 26.‍5
0x1cd695ea9695d429719fd0151a123d841ff39ae5ffc1829bd62ccac8183683ccSwap Exact Token...188038262022-08-18 13:16:4913 hrs 46 mins ago0x0ba4ce4c62ca30176be186e11bdb2b57ef108edb IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍0034838755 26.‍5
0x36c0a0e8e97e8e38559b3716cda006fde856e3682eecdab76442bfd8008323a8Add Liquidity ET...187948782022-08-18 8:10:4118 hrs 52 mins ago0x2f6e6e9adcd564f8aa4204284df6880b33799268 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87716.‍543530415756479 AVAX0.‍005633450126.‍1
0xd2956f6875960cafe8f4ef5b4d44898ffdc03700c08e740cb7c865f706edbb3aAdd Liquidity187947682022-08-18 8:06:5818 hrs 56 mins ago0x2f6e6e9adcd564f8aa4204284df6880b33799268 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍005102158526.‍1
0xbc458b2d31e1b31477b9ce078da52da1389473c0d78e280f83171b3bd6aa802aSwap Exact ETH F...187947322022-08-18 8:05:4618 hrs 57 mins ago0x2f6e6e9adcd564f8aa4204284df6880b33799268 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87714 AVAX0.‍006235603226.‍1
0xb95eed9a257b8806fa4394d473d9283ccb1044d505f4cf58f9a69fa73d6a2945Add Liquidity187946362022-08-18 8:02:2719 hrs ago0x2f6e6e9adcd564f8aa4204284df6880b33799268 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710 AVAX0.‍005084775926.‍1
0x9158f3a1313b97eb430d953235a6c82367b2f2b658a68f666ae9477ec2bcc30fSwap Exact ETH F...187946032022-08-18 8:01:2119 hrs 1 min ago0x2f6e6e9adcd564f8aa4204284df6880b33799268 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710.‍8 AVAX0.‍005895833426.‍1
0x68e72dc8840985e9a99898ea30b143f75a412d551dc82935d01214518528719dSwap Exact ETH F...187945922022-08-18 8:00:5919 hrs 2 mins ago0x2f6e6e9adcd564f8aa4204284df6880b33799268 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710.‍8 AVAX0.‍005895833426.‍1
0x90a6e4af513625601780076453c971076e9340424e2c6f6a760a8bac83372ac3Swap Exact ETH F...187945812022-08-18 8:00:3719 hrs 2 mins ago0x2f6e6e9adcd564f8aa4204284df6880b33799268 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87710.‍9 AVAX0.‍0057889826.‍1
0x18f0523a7e10592b596d4916e7bdf9b07d760cced5ca805da8291a4f670bcf38Swap Exact ETH F...187945632022-08-18 8:00:0119 hrs 3 mins ago0x2f6e6e9adcd564f8aa4204284df6880b33799268 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87711 AVAX0.‍0062352926.‍1
0xac6ee0af18edd734ce450d66de16f7c47dc911931a51a426b619f7cb5506ff5dSwap Exact ETH F...187945382022-08-18 7:59:1119 hrs 4 mins ago0x2f6e6e9adcd564f8aa4204284df6880b33799268 IN  0xb9a9bb6cc39387548baa7185fbff51d47eef87714 AVAX0.‍003926327426.‍1
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x21755c5f485c24efcf918d7bec290d79dcbb2031c2c69a7627235f57bd004456188238222022-08-19 0:39:272 hrs 23 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef87710x726d4dc7a6dfd57f64996b83d081dee0ea84781e0.‍403978866675137721 AVAX
0x21755c5f485c24efcf918d7bec290d79dcbb2031c2c69a7627235f57bd004456188238222022-08-19 0:39:272 hrs 23 mins ago Wrapped AVAX 0xb9a9bb6cc39387548baa7185fbff51d47eef87710.‍403978866675137721 AVAX
0xe2796f1a4295bccbd2eab172b47e252243f34511680e0d69f81fccc4c822bb30188212622022-08-18 23:13:403 hrs 49 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef87710x7bbdc43bbb8e92cab0ab810e0bc8e4125169774e8.‍401840896197033429 AVAX
0xe2796f1a4295bccbd2eab172b47e252243f34511680e0d69f81fccc4c822bb30188212622022-08-18 23:13:403 hrs 49 mins ago Wrapped AVAX 0xb9a9bb6cc39387548baa7185fbff51d47eef87718.‍401840896197033429 AVAX
0x00decf7dcaf57288054bf25168de7d4cc1ecc54c4ae67240f71766ff5fe7b0e6188141542022-08-18 19:11:327 hrs 51 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX2.‍623 AVAX
0x50ce8dd562ee0e98c4e1d6acf668d0eaf7f4bf58afbb822bafe9aa8ab4ae0776188141032022-08-18 19:09:507 hrs 53 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX2.‍623 AVAX
0x0088374eb2f2dea5b2a2962d7f0c360e2da0a3ce53995e5b029a3661521caa24188054872022-08-18 14:13:5712 hrs 49 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX0.‍1 AVAX
0x36c0a0e8e97e8e38559b3716cda006fde856e3682eecdab76442bfd8008323a8187948782022-08-18 8:10:4118 hrs 52 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX6.‍543530415756479563 AVAX
0xbc458b2d31e1b31477b9ce078da52da1389473c0d78e280f83171b3bd6aa802a187947322022-08-18 8:05:4618 hrs 57 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX4 AVAX
0x9158f3a1313b97eb430d953235a6c82367b2f2b658a68f666ae9477ec2bcc30f187946032022-08-18 8:01:2119 hrs 1 min ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX0.‍8 AVAX
0x68e72dc8840985e9a99898ea30b143f75a412d551dc82935d01214518528719d187945922022-08-18 8:00:5919 hrs 2 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX0.‍8 AVAX
0x90a6e4af513625601780076453c971076e9340424e2c6f6a760a8bac83372ac3187945812022-08-18 8:00:3719 hrs 2 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX0.‍9 AVAX
0x18f0523a7e10592b596d4916e7bdf9b07d760cced5ca805da8291a4f670bcf38187945632022-08-18 8:00:0119 hrs 3 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX1 AVAX
0xac6ee0af18edd734ce450d66de16f7c47dc911931a51a426b619f7cb5506ff5d187945382022-08-18 7:59:1119 hrs 4 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX4 AVAX
0xee87b362add03db85ebf7a7df66fcef60f277a9df80f87325be7e5f6efc363ff187945232022-08-18 7:58:4119 hrs 4 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX10 AVAX
0xf14d0dffc1e82e6e4fa3bf0ecbb31c2a7cd43ad5fa9d6c38439b1c673f808398187907552022-08-18 5:49:5021 hrs 13 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX5.‍5075 AVAX
0x50307682c2cc201eb3b9750ac0de0325b3fcf138b1b9c119616cc91aae062fc1187906732022-08-18 5:47:0021 hrs 16 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX4.‍485 AVAX
0x4dee0e2d22cfaacd88ce144c992d158bd944a48725d5ffc1ede44bb94319ded4187905992022-08-18 5:44:2621 hrs 18 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX0.‍15 AVAX
0x9a7d2c8581b21c19486b30803f6c1a997b1426a4201d38b32d3f8736e8e9e4df187905362022-08-18 5:42:2021 hrs 20 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX0.‍05 AVAX
0x7ca57bd6d24a23bb380e4c6fb39a0d122337d9e195bdd01c9940c1b86084ef42187904902022-08-18 5:40:4821 hrs 22 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX0.‍29 AVAX
0xc9765c06bfcfec556f219e51ac0a51d7d17101112e3e15aa03bba7e388869443187904472022-08-18 5:39:1621 hrs 23 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX0.‍15 AVAX
0xb89f6461be0ce2ca19baa8f7792e4c877bd2aabe0d72f8a2b56cf258e0c31ea7187904002022-08-18 5:37:3621 hrs 25 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX0.‍04 AVAX
0x865f91a4a541d7efdfed86758e3ac94f37a6b1140660841d01e776850053655b187903502022-08-18 5:35:5221 hrs 27 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX0.‍1 AVAX
0xd1cf98c56ccacc9e2bd4f2a2e738b10288a0713ae499ed44bdbb7fab79745556187903082022-08-18 5:34:2621 hrs 28 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX0.‍1 AVAX
0x66919d03516abd09b8bd6901f16f0bdb6426a023678769faa26b0c6f61e1ea07187902012022-08-18 5:30:3921 hrs 32 mins ago 0xb9a9bb6cc39387548baa7185fbff51d47eef8771 Wrapped AVAX0.‍5 AVAX
[ Download CSV Export 
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xC05e61d0E7a63D27546389B7aD62FdFf5A91aACE

Contract Name:
TransparentUpgradeableProxy

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 : TransparentUpgradeableProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.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 initialLogic, address initialAdmin, bytes memory _data) payable UpgradeableProxy(initialLogic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        _setAdmin(initialAdmin);
    }

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

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

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

6080604052604051610aaa380380610aaa8339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b50604052508491508290506100ee826101bf565b8051156101a6576000826001600160a01b0316826040518082805190602001908083835b602083106101315780518252601f199092019160209182019101610112565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610191576040519150601f19603f3d011682016040523d82523d6000602084013e610196565b606091505b50509050806101a457600080fd5b505b506101ae9050565b6101b782610231565b505050610291565b6101d28161025560201b6104bb1760201c565b61020d5760405162461bcd60e51b8152600401808060200182810382526036815260200180610a746036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061028957508115155b949350505050565b6107d4806102a06000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146101425780638f28397014610180578063f851a440146101c05761006d565b80633659cfe6146100755780634f1ef286146100b55761006d565b3661006d5761006b6101d5565b005b61006b6101d5565b34801561008157600080fd5b5061006b6004803603602081101561009857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101ef565b61006b600480360360408110156100cb57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561010357600080fd5b82018360208201111561011557600080fd5b8035906020019184600183028401116401000000008311171561013757600080fd5b509092509050610243565b34801561014e57600080fd5b50610157610317565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561018c57600080fd5b5061006b600480360360208110156101a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661036e565b3480156101cc57600080fd5b50610157610476565b6101dd6104f7565b6101ed6101e861058b565b6105b0565b565b6101f76105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023857610233816105f9565b610240565b6102406101d5565b50565b61024b6105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561030a57610287836105f9565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102f1576040519150601f19603f3d011682016040523d82523d6000602084013e6102f6565b606091505b505090508061030457600080fd5b50610312565b6103126101d5565b505050565b60006103216105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103635761035c61058b565b905061036b565b61036b6101d5565b90565b6103766105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102385773ffffffffffffffffffffffffffffffffffffffff8116610415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806106ed603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61043e6105d4565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301528051918290030190a161023381610646565b60006104806105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103635761035c6105d4565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906104ef57508115155b949350505050565b6104ff6105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604281526020018061075d6042913960600191505060405180910390fd5b6101ed6101ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156105cf573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6106028161066a565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b610673816104bb565b6106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806107276036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f20616464726573735570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a2646970667358221220b141ef72de179b8b56cef31601d40ff2875391088197e73cac39eba1ddcd0fdd64736f6c634300070600335570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e747261637400000000000000000000000087c94a947d2a450666cae1de14ce12fce87029a2000000000000000000000000e2f6d34fd09d21f4121d648e191e842ac95ac0dc00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.