Contract 0xfe51d5571743979ea838f070aa7dfa621555e409 1

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xac066dccaac3d932c230ea3af548ea0335cebacf9995c0fbda2d5dd5a88004b8Exchange SLP For...249988462022-09-17 10:51:0716 days 4 hrs ago0x8d0172e88bd400884708318bac77bc69f76ae082 IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.00001394
0x221b0db1f99f2758a22d23068d0fae3bbb3203417ccfd0bfaa04da701a15b558Exchange SLP For...235544832022-09-08 10:07:3325 days 5 hrs ago0xab2671e0194d820a31229b33f12d49d8c4c23209 IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.00001876
0xc23e755aa73d098902eb500b5e83f87ad5a480718a470234a0bf8803993a09c1Exchange SLP For...228788522022-09-05 0:44:3728 days 14 hrs ago0xb43edf919ea51ae7eae0ab7c7a28e530aabb6d65 IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.00030219
0xc73f72d418b13574d645bb6c12a90febb80ad1c2a6da03c83ca19031ef335f78Exchange SLP For...226932442022-09-03 19:47:4329 days 19 hrs ago0xebacd448a23f63a156841d440778be89613be97b IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.00024936
0x74687c123382ada32ed5b4e6624822a796fda19f564ab6d0968d3f1d5bdeb25aExchange SLP For...224082222022-09-01 23:45:3331 days 15 hrs ago0xae84788b8ab8a114d416f057f5090f09db7d7f82 IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.00003219
0xabdd2ebe892299d184025d2ec9af1dcdb6463a013d4d9d63e7c24dc2342efcb0Exchange SLP For...210312062022-08-23 7:51:4441 days 7 hrs ago0xca3872b1f2203c4b488955f6d8fc28c35315b507 IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000064559204 ETH
0xdc1268d8d6a7f3c54ff74a5c4e3e2a06cbe7fe2e597f0a4b625cd91e79563104Exchange SLP For...205807982022-08-18 9:26:2846 days 5 hrs ago0x6f9bb7e454f5b3eb2310343f0e99269dc2bb8a1d IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000074016897 ETH
0x824ff6af9588f6fbec53fff6141a3c72c7b2ccb9327793c1a9630f6a506bbf7dExchange SLP For...200801052022-08-12 11:55:1952 days 3 hrs ago0x1bc3e2c44e0b2dabb1b06a1890273571825d3e03 IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000100711365 ETH
0x0366fd52408a0a3105809393dad0d99b8c29602fa17d16048179cf6f7c5836f2Exchange SLP For...199373182022-08-10 19:10:3153 days 20 hrs ago0xf5497ecf0f659743eba86cd5ec424377df9cb1db IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000156618352 ETH
0xec1d3f606734d1299988c7a48ae740ce5ab7fdbcab5d5d871b0b97155e25ebc4Exchange SLP For...195921942022-08-07 4:25:4757 days 10 hrs ago0x78947effaa3c279037971c5cf7b4396a89c01615 IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.00003579823 ETH
0x7fdd4cde053a00bf4babb2024dfb581a9e5657b1faf5141a2edc9ecee9e1181eExchange SLP For...195202022022-08-06 8:01:1758 days 7 hrs ago0x30a39fcd4d538b3434ea0d2877292cc0f45a79cf IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000051104839 ETH
0xd53f292f970823c6e1f1bf1ede2b1feb558ad8d9c3840f3c2bc9143c6e2d8defExchange SLP For...192180442022-08-02 17:58:0061 days 21 hrs ago0x7f5ccfb50d9087a572a80ec2585bde8e0377625c IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000084153086 ETH
0x1e4a22a913f502baa4b082f86ddf9e832e2821c433e812432a3f9a34a4531ce8Exchange SLP For...186434122022-07-26 20:16:4568 days 18 hrs ago0xa09dffe17ac35cf46d79f9ad4e7db7bfa864bb51 IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000106667872 ETH
0xedef2de927aa8d223a12cd05e32bac15d06297f742de634514ec3908cd94318eExchange SLP For...179318902022-07-18 15:49:1576 days 23 hrs ago0xd71f294a6a2e9a700fcc7329a12ca42e5265296e IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000149278999 ETH
0xf4d15084fbffeb0dc2c1022747c5a4f94c74850831034ceb62d1fe23932d4062Exchange SLP For...178206852022-07-17 9:37:2578 days 5 hrs ago0x8a83716acd66d9e1fb18c9b79540b72e04f80ac0 IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000082706509 ETH
0x14fc58b63c6b67fab20ea49442bfe1486d478c26d8871dad35440b63add4aaefExchange SLP For...175092962022-07-12 23:07:5782 days 16 hrs ago0x76e66d15de3d46cd992fccdf73ec2f6298084e7c IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.00018573945 ETH
0x689f415ced80f26ccdc4cc76dfc480f01bc353e9de1f0ace16ebc73664efdb62Exchange SLP For...174419162022-07-11 20:58:1883 days 18 hrs ago0xf5497ecf0f659743eba86cd5ec424377df9cb1db IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000149436772 ETH
0x864afcc9cc283003f1afcc159b6deff651c261c7f0e503800156002bbcc91408Exchange SLP For...173828082022-07-10 17:05:5784 days 22 hrs ago0xf219904c26044db624b01ce7bee8bf98e64ec619 IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000080449156 ETH
0x62d9a9a22df3a820eac75af8b43c1f22e26cbdf1f67c0463ee97404fc26671d1Exchange SLP For...169414382022-07-04 2:52:0491 days 12 hrs ago0x77ddf16249d93fdc64d4467463c27972d74400aa IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000087560017 ETH
0xf2e41269c522cb350618d57e0463da70002dd9746106051596289ddbd8638ab8Exchange SLP For...167522392022-07-01 20:35:3393 days 18 hrs ago0x68c9e2a623fc56e96626c939009dd3ec8cd2a14f IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000170595054 ETH
0x14e5ce9963b6b28c51f0a8e3157ba66f1867ca41b05d2a0175a809afec7a1d85Exchange SLP For...166723462022-07-01 2:36:1994 days 12 hrs ago0x72241b7cd963cf56ba409e80ed59e1aee76a1ada IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000228811477 ETH
0x0cc9851f7febf3bcefbe994527bfd6a604d664e0de5c1a8dcc38272b7e552d40Exchange SLP For...166135832022-06-30 13:11:4395 days 2 hrs ago0xf219904c26044db624b01ce7bee8bf98e64ec619 IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000196821196 ETH
0x269cfd7aaccca4f92b95e8fa204511336fc638c92d6bac91005aa620f83a482fExchange SLP For...160947132022-06-27 16:24:2297 days 22 hrs ago0xc1b9553b316120111917369853e4a4c0db0b4e21 IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000703033625 ETH
0x7137280b312edf6b5bece92ae78c9f678b92128c2132384498198e33cbcd9e98Exchange SLP For...159255372022-06-26 14:42:5099 days 32 mins ago0xbd46cd0e482e7979b37a16e43c831fc9c1bec997 IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.00015227087 ETH
0x7ca28dab6b0661d826de4c9eaaaa99932b00b2e219d1435f5863b3fcce084481Exchange SLP For...158913242022-06-26 10:11:3299 days 5 hrs ago0xc06375093147d626676568475a341ba48f058cf0 IN  0xfe51d5571743979ea838f070aa7dfa621555e4090 ETH0.000148698342 ETH
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xac066dccaac3d932c230ea3af548ea0335cebacf9995c0fbda2d5dd5a88004b8249988462022-09-17 10:51:0716 days 4 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xbfeba04384cecfaf0240b49163ed418f82e43d3a0 ETH
0xac066dccaac3d932c230ea3af548ea0335cebacf9995c0fbda2d5dd5a88004b8249988462022-09-17 10:51:0716 days 4 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e4090xb7e50106a5bd3cf21af210a755f9c8740890a8c90 ETH
0xac066dccaac3d932c230ea3af548ea0335cebacf9995c0fbda2d5dd5a88004b8249988462022-09-17 10:51:0716 days 4 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xe3757eeb5a496cf12ea116279de01996ba8ca4370 ETH
0x221b0db1f99f2758a22d23068d0fae3bbb3203417ccfd0bfaa04da701a15b558235544832022-09-08 10:07:3325 days 5 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xbfeba04384cecfaf0240b49163ed418f82e43d3a0 ETH
0x221b0db1f99f2758a22d23068d0fae3bbb3203417ccfd0bfaa04da701a15b558235544832022-09-08 10:07:3325 days 5 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e4090xb7e50106a5bd3cf21af210a755f9c8740890a8c90 ETH
0x221b0db1f99f2758a22d23068d0fae3bbb3203417ccfd0bfaa04da701a15b558235544832022-09-08 10:07:3325 days 5 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xe3757eeb5a496cf12ea116279de01996ba8ca4370 ETH
0xc23e755aa73d098902eb500b5e83f87ad5a480718a470234a0bf8803993a09c1228788522022-09-05 0:44:3728 days 14 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xbfeba04384cecfaf0240b49163ed418f82e43d3a0 ETH
0xc23e755aa73d098902eb500b5e83f87ad5a480718a470234a0bf8803993a09c1228788522022-09-05 0:44:3728 days 14 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e4090xb7e50106a5bd3cf21af210a755f9c8740890a8c90 ETH
0xc23e755aa73d098902eb500b5e83f87ad5a480718a470234a0bf8803993a09c1228788522022-09-05 0:44:3728 days 14 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xe3757eeb5a496cf12ea116279de01996ba8ca4370 ETH
0xc73f72d418b13574d645bb6c12a90febb80ad1c2a6da03c83ca19031ef335f78226932442022-09-03 19:47:4329 days 19 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xbfeba04384cecfaf0240b49163ed418f82e43d3a0 ETH
0xc73f72d418b13574d645bb6c12a90febb80ad1c2a6da03c83ca19031ef335f78226932442022-09-03 19:47:4329 days 19 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e4090xb7e50106a5bd3cf21af210a755f9c8740890a8c90 ETH
0xc73f72d418b13574d645bb6c12a90febb80ad1c2a6da03c83ca19031ef335f78226932442022-09-03 19:47:4329 days 19 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xe3757eeb5a496cf12ea116279de01996ba8ca4370 ETH
0x74687c123382ada32ed5b4e6624822a796fda19f564ab6d0968d3f1d5bdeb25a224082222022-09-01 23:45:3331 days 15 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xbfeba04384cecfaf0240b49163ed418f82e43d3a0 ETH
0x74687c123382ada32ed5b4e6624822a796fda19f564ab6d0968d3f1d5bdeb25a224082222022-09-01 23:45:3331 days 15 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e4090xb7e50106a5bd3cf21af210a755f9c8740890a8c90 ETH
0x74687c123382ada32ed5b4e6624822a796fda19f564ab6d0968d3f1d5bdeb25a224082222022-09-01 23:45:3331 days 15 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xe3757eeb5a496cf12ea116279de01996ba8ca4370 ETH
0xabdd2ebe892299d184025d2ec9af1dcdb6463a013d4d9d63e7c24dc2342efcb0210312062022-08-23 7:51:4441 days 7 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xbfeba04384cecfaf0240b49163ed418f82e43d3a0 ETH
0xabdd2ebe892299d184025d2ec9af1dcdb6463a013d4d9d63e7c24dc2342efcb0210312062022-08-23 7:51:4441 days 7 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e4090xb7e50106a5bd3cf21af210a755f9c8740890a8c90 ETH
0xabdd2ebe892299d184025d2ec9af1dcdb6463a013d4d9d63e7c24dc2342efcb0210312062022-08-23 7:51:4441 days 7 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xe3757eeb5a496cf12ea116279de01996ba8ca4370 ETH
0xdc1268d8d6a7f3c54ff74a5c4e3e2a06cbe7fe2e597f0a4b625cd91e79563104205807982022-08-18 9:26:2846 days 5 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xbfeba04384cecfaf0240b49163ed418f82e43d3a0 ETH
0xdc1268d8d6a7f3c54ff74a5c4e3e2a06cbe7fe2e597f0a4b625cd91e79563104205807982022-08-18 9:26:2846 days 5 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e4090xb7e50106a5bd3cf21af210a755f9c8740890a8c90 ETH
0xdc1268d8d6a7f3c54ff74a5c4e3e2a06cbe7fe2e597f0a4b625cd91e79563104205807982022-08-18 9:26:2846 days 5 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xe3757eeb5a496cf12ea116279de01996ba8ca4370 ETH
0x824ff6af9588f6fbec53fff6141a3c72c7b2ccb9327793c1a9630f6a506bbf7d200801052022-08-12 11:55:1952 days 3 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xbfeba04384cecfaf0240b49163ed418f82e43d3a0 ETH
0x824ff6af9588f6fbec53fff6141a3c72c7b2ccb9327793c1a9630f6a506bbf7d200801052022-08-12 11:55:1952 days 3 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e4090xb7e50106a5bd3cf21af210a755f9c8740890a8c90 ETH
0x824ff6af9588f6fbec53fff6141a3c72c7b2ccb9327793c1a9630f6a506bbf7d200801052022-08-12 11:55:1952 days 3 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xe3757eeb5a496cf12ea116279de01996ba8ca4370 ETH
0x0366fd52408a0a3105809393dad0d99b8c29602fa17d16048179cf6f7c5836f2199373182022-08-10 19:10:3153 days 20 hrs ago 0xfe51d5571743979ea838f070aa7dfa621555e409 0xbfeba04384cecfaf0240b49163ed418f82e43d3a0 ETH
[ Download CSV Export 
Loading

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

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

6080604052604051610aaa380380610aaa8339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b50604052508491508290506100ee826101bf565b8051156101a6576000826001600160a01b0316826040518082805190602001908083835b602083106101315780518252601f199092019160209182019101610112565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610191576040519150601f19603f3d011682016040523d82523d6000602084013e610196565b606091505b50509050806101a457600080fd5b505b506101ae9050565b6101b782610231565b505050610291565b6101d28161025560201b6104bb1760201c565b61020d5760405162461bcd60e51b8152600401808060200182810382526036815260200180610a746036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061028957508115155b949350505050565b6107d4806102a06000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146101425780638f28397014610180578063f851a440146101c05761006d565b80633659cfe6146100755780634f1ef286146100b55761006d565b3661006d5761006b6101d5565b005b61006b6101d5565b34801561008157600080fd5b5061006b6004803603602081101561009857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101ef565b61006b600480360360408110156100cb57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561010357600080fd5b82018360208201111561011557600080fd5b8035906020019184600183028401116401000000008311171561013757600080fd5b509092509050610243565b34801561014e57600080fd5b50610157610317565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561018c57600080fd5b5061006b600480360360208110156101a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661036e565b3480156101cc57600080fd5b50610157610476565b6101dd6104f7565b6101ed6101e861058b565b6105b0565b565b6101f76105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023857610233816105f9565b610240565b6102406101d5565b50565b61024b6105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561030a57610287836105f9565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102f1576040519150601f19603f3d011682016040523d82523d6000602084013e6102f6565b606091505b505090508061030457600080fd5b50610312565b6103126101d5565b505050565b60006103216105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103635761035c61058b565b905061036b565b61036b6101d5565b90565b6103766105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102385773ffffffffffffffffffffffffffffffffffffffff8116610415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806106ed603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61043e6105d4565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301528051918290030190a161023381610646565b60006104806105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103635761035c6105d4565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906104ef57508115155b949350505050565b6104ff6105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604281526020018061075d6042913960600191505060405180910390fd5b6101ed6101ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156105cf573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6106028161066a565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b610673816104bb565b6106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806107276036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f20616464726573735570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a2646970667358221220b141ef72de179b8b56cef31601d40ff2875391088197e73cac39eba1ddcd0fdd64736f6c634300070600335570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374000000000000000000000000e27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee9000000000000000000000000432036208d2717394d2614d6697c46df3ed6954000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

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.