Contract 0x93B9DaC2d57AaD1966859E8d1b5cCF5b95de9af4 12

 

Contract Overview

Balance:
0 ETH

EtherValue:
$0.00

Token:
Txn Hash Method
Block
From
To
Value
0x244d48103b1eca70e9e6d12ce3332ffe43895aaf7659d938d1453f4943ef90aaCancel Limit Ord...1180308902024-03-28 21:15:5710 hrs 31 mins ago0x44f450612aff4f75dab31dd4e66ca3640f386dc1 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000036224480.031521663
0x073ed34613e9d0c6a808d45774b17108455d88eeb789ea9a5be80be8b6a376acFill Limit Order1180193482024-03-28 14:51:1316 hrs 56 mins ago0xb8da37b3bb27f94985e87877ba79b4e4f9043f75 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000715286170.031457467
0x14f0e4facd7947b24880b2d558b3a132c64ac1e7c1d9534b5456218dbb01a8c0Cancel Limit Ord...1180189042024-03-28 14:36:2517 hrs 11 mins ago0x99ec5aa0894298e802bb333fd807259e6e0db6b7 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000049683110.031681435
0xb1d3784e16279556d9c4a6646c11e62043807c40d3a983279328098acdda89d6Cancel Limit Ord...1180176522024-03-28 13:54:4117 hrs 53 mins ago0xdc756c15da39608e84cfc3487db5deb5362f883d IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000072679540.042948083
0x246df8034ea5893772d83d47568b2c2792ada5df2b49673cb1c376db9fb47030Cancel Limit Ord...1180087302024-03-28 8:57:1722 hrs 50 mins ago0x44f450612aff4f75dab31dd4e66ca3640f386dc1 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000093112430.030664129
0x33a8c492c579722936a7349accd8e9cec90d11cacd7b29e9ae1fe28983709f46Cancel Limit Ord...1180008502024-03-28 4:34:371 day 3 hrs ago0x39705e3fe3ceb333b9765647f6f34c6d0050d45a IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000116447730.028639187
0xa9c69883ed4b2491f2c15b2c6263f092aec93023c3ff178fff636898f33b8d88Cancel Limit Ord...1179996652024-03-28 3:55:071 day 3 hrs ago0x39705e3fe3ceb333b9765647f6f34c6d0050d45a IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000031117420.028379474
0x60d2c278097a6ba3f26af98130416bcbdf9d60c35e7256eb0d660fdbb9098298Cancel Limit Ord...1179927122024-03-28 0:03:211 day 7 hrs ago0x44f450612aff4f75dab31dd4e66ca3640f386dc1 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000074266340.030154022
0x6f41a05bcb65e991be70fcf04c68e385cc253c4e0bcd9d422c4a69b193da2967Cancel Limit Ord...1179897942024-03-27 22:26:051 day 9 hrs ago0xb1911b56c20eea3206fb696742267a4bbbfc2248 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000303577370.029615292
0x9e8d43dc8316bd4db732be12d8adaad6735eda6e166359ef810343ca5d5bfd17Fill Limit Order1179776682024-03-27 15:41:531 day 16 hrs ago0xb8da37b3bb27f94985e87877ba79b4e4f9043f75 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0001325125490.042417844
0xb4d54cd0f7447b5bf837ab35d37bc458b90c59a98bf257d2015e0ba837b8fd4cFill Limit Order1179749652024-03-27 14:11:471 day 17 hrs ago0xb8da37b3bb27f94985e87877ba79b4e4f9043f75 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0001851294610.068716704
0xd0297639fb1bf0f4879bd24d7e5df5636396a7161a68cffd1c0ecd851c2482a4Fill Limit Order1179654782024-03-27 8:55:331 day 22 hrs ago0xb8da37b3bb27f94985e87877ba79b4e4f9043f75 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000348441430.015365816
0x75f48b5876ec840adff7b879c8eccf2c60b41f3c4abc51f5d2f3f85c280d02f9Cancel Limit Ord...1179638912024-03-27 8:02:391 day 23 hrs ago0x7828749656b32dc85e1c9372839f8b686b8c0f9f IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000013771580.019074497
0x43547e9a64054088042137b97a2def555d86a01ff4bc4970ce2b7321e362a703Cancel Limit Ord...1179581332024-03-27 4:50:432 days 2 hrs ago0x39705e3fe3ceb333b9765647f6f34c6d0050d45a IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.00000107770.014845311
0x5ce68be6e77796caa933fce7cc659279ec72d005eb545fb0774b37c3261208ebCancel Limit Ord...1179483012024-03-26 23:22:592 days 8 hrs ago0x99ec5aa0894298e802bb333fd807259e6e0db6b7 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000011051950.0140074
0xd8dfd2e663a674cc791511adf16ff182ff41c2761e25ed6c160aa2491f92e990Cancel Limit Ord...1179460642024-03-26 22:08:252 days 9 hrs ago0x060d2ed5c447e194e7a107d2009847e1e475da06 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000012343150.0153981
0x4b309921c79b6320a175c01bc6c0c0f0f2d9dfae05afdd302b6fe23fa9f9535eFill Limit Order1179437542024-03-26 20:51:252 days 10 hrs ago0xb8da37b3bb27f94985e87877ba79b4e4f9043f75 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000225243330.014846708
0x6cfff4bced6154c321f325b41e5f001e46fedcbe277a292133af7ae9c719fb37Cancel Limit Ord...1179421522024-03-26 19:58:012 days 11 hrs ago0x99ec5aa0894298e802bb333fd807259e6e0db6b7 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000011672470.014728204
0x063ac7588201186b4e2c729e7942d18eddecc22c7a640061a4ac5b846344dc9dCancel Limit Ord...1179421462024-03-26 19:57:492 days 11 hrs ago0x99ec5aa0894298e802bb333fd807259e6e0db6b7 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000012017530.015057871
0x596e0c681c29045bf4e33cf4c4e59154da04bee18ff194e5be8e8f2f9b4814c0Cancel Limit Ord...1179394222024-03-26 18:27:012 days 13 hrs ago0xb1911b56c20eea3206fb696742267a4bbbfc2248 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000012211510.015722521
0x4304e34565ec30ea6ff94997931dc157206f529b0683422f506fde26f7bc68e6Cancel Limit Ord...1179374672024-03-26 17:21:512 days 14 hrs ago0xdc756c15da39608e84cfc3487db5deb5362f883d IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000022112230.029202164
0x978e6e866bacacd825c3e06fefeec888de476cf40438443e54e4d3ebd0372a47Cancel Limit Ord...1179366862024-03-26 16:55:492 days 14 hrs ago0xdc756c15da39608e84cfc3487db5deb5362f883d IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000022433020.029696752
0xfe94ebf8fa2ee99f90ee04cb6a3be76dbfda402dab1bf13649509e7a0840bdc8Fill Limit Order1179324132024-03-26 14:33:232 days 17 hrs ago0xb8da37b3bb27f94985e87877ba79b4e4f9043f75 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000753885820.041214383
0x721684ffe64f269682bed285f02816b4ac7e366ed3119acd5f70cdc5029c2f74Fill Limit Order1179272102024-03-26 11:39:572 days 20 hrs ago0xb8da37b3bb27f94985e87877ba79b4e4f9043f75 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000336139170.031098134
0x5016b4b1c608cd083e06c18d589fdd10b365ee6755582b06f6d87ec0ca2b98bfCancel Limit Ord...1179247812024-03-26 10:18:592 days 21 hrs ago0x44f450612aff4f75dab31dd4e66ca3640f386dc1 IN  0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH0.0000020754280.030212704
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x4e22e4273c933e64c60f3593a97b29389662443bed108ac5d62e852bddbb42831075208032023-07-29 14:19:43243 days 17 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x9dd013f9083741bc70c7ce32c2d6ab022a3d7ff70 ETH
0x77cd10ec447f7022732be9d27a5c88217793b1332cc52727ddcc5fec0b2d33331074918732023-07-28 22:15:23244 days 9 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x41c8759533bdd05d73f8ee8b876cfe6600de288d0 ETH
0x77cd10ec447f7022732be9d27a5c88217793b1332cc52727ddcc5fec0b2d33331074918732023-07-28 22:15:23244 days 9 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x82ac2ce43e33683c58be4cdc40975e73aa50f4590 ETH
0x77cd10ec447f7022732be9d27a5c88217793b1332cc52727ddcc5fec0b2d33331074918732023-07-28 22:15:23244 days 9 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0xa7f3fc32043757039d5e13d790ee43edbcba8b7c0 ETH
0x77cd10ec447f7022732be9d27a5c88217793b1332cc52727ddcc5fec0b2d33331074918732023-07-28 22:15:23244 days 9 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40x00000000000000000000000000000000000000010 ETH
0x77cd10ec447f7022732be9d27a5c88217793b1332cc52727ddcc5fec0b2d33331074918732023-07-28 22:15:23244 days 9 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x9dd013f9083741bc70c7ce32c2d6ab022a3d7ff70 ETH
0x77cd10ec447f7022732be9d27a5c88217793b1332cc52727ddcc5fec0b2d33331074918732023-07-28 22:15:23244 days 9 hrs ago 0x48c73b88bac41f419e5106a74cb1a8507ee475d4 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40 ETH
0x3f98dd380413021debaf7f466ce4e1cb9b1ae968986610472fa39920cf4b7f501074420942023-07-27 18:36:05245 days 13 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x41c8759533bdd05d73f8ee8b876cfe6600de288d0 ETH
0x3f98dd380413021debaf7f466ce4e1cb9b1ae968986610472fa39920cf4b7f501074420942023-07-27 18:36:05245 days 13 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x82ac2ce43e33683c58be4cdc40975e73aa50f4590 ETH
0x3f98dd380413021debaf7f466ce4e1cb9b1ae968986610472fa39920cf4b7f501074420942023-07-27 18:36:05245 days 13 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0xa7f3fc32043757039d5e13d790ee43edbcba8b7c0 ETH
0x3f98dd380413021debaf7f466ce4e1cb9b1ae968986610472fa39920cf4b7f501074420942023-07-27 18:36:05245 days 13 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40x00000000000000000000000000000000000000010 ETH
0x3f98dd380413021debaf7f466ce4e1cb9b1ae968986610472fa39920cf4b7f501074420942023-07-27 18:36:05245 days 13 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x9dd013f9083741bc70c7ce32c2d6ab022a3d7ff70 ETH
0x6d3299007eed2626c1208fe74cca566d8a576063f6230943457ef0a53494bd901074266682023-07-27 10:01:53245 days 21 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x9dd013f9083741bc70c7ce32c2d6ab022a3d7ff70 ETH
0x1ccb0ab8955592aa1d1ab7802d41b9b045ae163af3fa4bf7cc5adba1de7abad71074025662023-07-26 20:38:29246 days 11 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x9dd013f9083741bc70c7ce32c2d6ab022a3d7ff70 ETH
0x7b7a61fb838bf712baa3ba26606206448613da71a48f52a33a62fb38d9f23c561073931952023-07-26 15:26:07246 days 16 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x9dd013f9083741bc70c7ce32c2d6ab022a3d7ff70 ETH
0x79101e35f35b3c62692f3844113fb945d89379c57d06d42c7da0d7d280842ae41073909772023-07-26 14:12:11246 days 17 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x9dd013f9083741bc70c7ce32c2d6ab022a3d7ff70 ETH
0x1fbb6ead6c22b3030ae16f2a30c8a4ff483c899039f4a15ac58fae95831ca3201073908622023-07-26 14:08:21246 days 17 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x9dd013f9083741bc70c7ce32c2d6ab022a3d7ff70 ETH
0xb746b929b5ed9ff17eaffad42bfc5f167bf0e490bd0a33b3b8a4d37745fa71ab1073863882023-07-26 11:39:13246 days 20 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x9dd013f9083741bc70c7ce32c2d6ab022a3d7ff70 ETH
0x43f15a75c654b32030f46b81062a56efb1a5bdd1c29b01dce358376939a9d0071073863692023-07-26 11:38:35246 days 20 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x9dd013f9083741bc70c7ce32c2d6ab022a3d7ff70 ETH
0xa7a4f3753b82d582f72682e05991496aa4a43c7ed9f61449a157e19a02c39dae1073851132023-07-26 10:56:43246 days 20 hrs ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x9dd013f9083741bc70c7ce32c2d6ab022a3d7ff70 ETH
0x0b03e986ac48cb758268fcd3b73342e63228ba05cac36b1801a93e8f5356d06d1073778602023-07-26 6:54:57247 days 52 mins ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x41c8759533bdd05d73f8ee8b876cfe6600de288d0 ETH
0x0b03e986ac48cb758268fcd3b73342e63228ba05cac36b1801a93e8f5356d06d1073778602023-07-26 6:54:57247 days 52 mins ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x82ac2ce43e33683c58be4cdc40975e73aa50f4590 ETH
0x0b03e986ac48cb758268fcd3b73342e63228ba05cac36b1801a93e8f5356d06d1073778602023-07-26 6:54:57247 days 52 mins ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0xa7f3fc32043757039d5e13d790ee43edbcba8b7c0 ETH
0x0b03e986ac48cb758268fcd3b73342e63228ba05cac36b1801a93e8f5356d06d1073778602023-07-26 6:54:57247 days 52 mins ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af40x00000000000000000000000000000000000000010 ETH
0x0b03e986ac48cb758268fcd3b73342e63228ba05cac36b1801a93e8f5356d06d1073778602023-07-26 6:54:57247 days 52 mins ago 0x93b9dac2d57aad1966859e8d1b5ccf5b95de9af4 0x9dd013f9083741bc70c7ce32c2d6ab022a3d7ff70 ETH
[ Download CSV Export 
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xAf41a65F786339e7911F4acDAD6BD49426F2Dc6b
The constructor portion of the code might be different and could alter the actual behaviour of the contract

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 Security Audit

Contract ABI

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

Deployed Bytecode

0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146101425780638f28397014610180578063f851a440146101c05761006d565b80633659cfe6146100755780634f1ef286146100b55761006d565b3661006d5761006b6101d5565b005b61006b6101d5565b34801561008157600080fd5b5061006b6004803603602081101561009857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101ef565b61006b600480360360408110156100cb57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561010357600080fd5b82018360208201111561011557600080fd5b8035906020019184600183028401116401000000008311171561013757600080fd5b509092509050610243565b34801561014e57600080fd5b50610157610317565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561018c57600080fd5b5061006b600480360360208110156101a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661036e565b3480156101cc57600080fd5b50610157610476565b6101dd6104f7565b6101ed6101e861058b565b6105b0565b565b6101f76105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023857610233816105f9565b610240565b6102406101d5565b50565b61024b6105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561030a57610287836105f9565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102f1576040519150601f19603f3d011682016040523d82523d6000602084013e6102f6565b606091505b505090508061030457600080fd5b50610312565b6103126101d5565b505050565b60006103216105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103635761035c61058b565b905061036b565b61036b6101d5565b90565b6103766105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102385773ffffffffffffffffffffffffffffffffffffffff8116610415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806106ed603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61043e6105d4565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301528051918290030190a161023381610646565b60006104806105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103635761035c6105d4565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906104ef57508115155b949350505050565b6104ff6105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604281526020018061075d6042913960600191505060405180910390fd5b6101ed6101ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156105cf573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6106028161066a565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b610673816104bb565b6106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806107276036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f20616464726573735570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a2646970667358221220b141ef72de179b8b56cef31601d40ff2875391088197e73cac39eba1ddcd0fdd64736f6c63430007060033

Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.