Contract 0xbfeba04384cecfaf0240b49163ed418f82e43d3a 11

 

Contract Overview

Bridgeworld: Balancer Crystals
Balance:
0 ETH

ETH Value:
$0.00
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xcf0e06cd493cd03f1b88a201dbf752339b60c1acc2359aa8b957afe3c8ebbf98Set Approval For...1858828362024-03-01 3:17:405 hrs 14 mins ago0xe269d14f98fb28ec7588fecfc37b85c236f817ee IN  Bridgeworld: Balancer Crystals0 ETH0.00007549 0.1
0xef16f384adf2a8172a0c953cef2861ce7d221e8ea957ff503fc1bb4d61f607dcSet Approval For...1838233542024-02-24 0:21:066 days 8 hrs ago0x0a40403322a87ea66e23ee21028535781cb8b126 IN  Bridgeworld: Balancer Crystals0 ETH0.00004319 0.1
0x89d785ee0eda17405de49d28e7e1bd40aa0a2819f604c1b935a4339384a3a610Set Approval For...1833456562024-02-22 13:06:097 days 19 hrs ago0x3e821e97cfd1e1deccd57ac0063f21ff7f5ed272 IN  Bridgeworld: Balancer Crystals0 ETH0.00008806 0.1
0xd8b65bebe39ab32124d8b92d1adabf5f0240b0852a506d17a0fd7e15cd77ae48Set Approval For...1820406612024-02-18 15:31:4611 days 16 hrs ago0x8966fdf202807726c4686a69e3b41f2f8ec5a19f IN  Bridgeworld: Balancer Crystals0 ETH0.0000572 0.1
0x29728888b80585df12fc040d0f317fb85ed05c088dc2ec581b6410f7ebdefaa9Safe Transfer Fr...1814163192024-02-16 18:22:2213 days 14 hrs ago0x854f0d5137f3aa465214731c4db2e0db8939dc41 IN  Bridgeworld: Balancer Crystals0 ETH0.00012690.1
0x77955d7b1ab6fb42e5aa4f6841264e7a3eb6e4f8a54445e3256cb0ba03700b37Set Approval For...1811351172024-02-15 22:15:2614 days 10 hrs ago0xd64724f4f02e4b5e838b3a7b3193d785a8d7c1f7 IN  Bridgeworld: Balancer Crystals0 ETH0.00007588 0.1
0x52586125c6f8f057d0ed12c49836f018e7eb4b5b583c570e3130040e604b37c6Set Approval For...1802028212024-02-13 3:46:0217 days 4 hrs ago0x6c15d3a7ea840a8cb2884056233b8aef8e6e269c IN  Bridgeworld: Balancer Crystals0 ETH0.00007381 0.1
0xba67a59f62cc02095d88bd2b8880d5960f1dea5b232e863547f6ed358894d211Set Approval For...1796480642024-02-11 11:40:1718 days 20 hrs ago0x647d2ae18ba2a341dbfa06b491bf8a91b7ffbab2 IN  Bridgeworld: Balancer Crystals0 ETH0.00004581 0.1
0x10c3e02f6c34275b8421b3449794b71c57bed19dcdfc8d2d48aa7496996f5c2aSafe Transfer Fr...1777457892024-02-05 17:06:3924 days 15 hrs ago0x301cc218009608e59f9647f4b7dd8a49be8493af IN  Bridgeworld: Balancer Crystals0 ETH0.000098440.1
0x49f26acb2e18fef629f0c9507e21b9936381820024aa33daad358b83386dbba5Set Approval For...1776853532024-02-05 12:50:2524 days 19 hrs ago0xeb11255b15600390e60a7aa1fbe1c821f6d0fd8a IN  Bridgeworld: Balancer Crystals0 ETH0.00004335 0.1
0xd7ab25839fef4f4328db29f5a0fff4e47385f209fdaab130f8699dec136e3b61Set Approval For...1771202242024-02-03 18:50:0726 days 13 hrs ago0xcf149b83f5d111f33194db7ece3fff35a9f6e0af IN  Bridgeworld: Balancer Crystals0 ETH0.00005080.1
0x9035187b72e1f89177e12d73ca708dbb2e99474c8d1b1323355ae8d5505fab42Set Approval For...1767652582024-02-02 16:18:3627 days 16 hrs ago0xb13a509b8e3dd88f4a5239c1cc4a749111cca5a7 IN  Bridgeworld: Balancer Crystals0 ETH0.00006422 0.1
0x34eaa6f0c4f838ea123bc0a84a3193800efe28d47a1c8d3a9ad5628d176363a4Set Approval For...1765970562024-02-02 4:06:5628 days 4 hrs ago0xc62543032bc439c578c804bb2557e3ed78ac8df2 IN  Bridgeworld: Balancer Crystals0 ETH0.00003954 0.1
0x7084ee357aa2cc345a6b7da86e9f8da93fed857af0c6aa333b01cc59619228e2Set Approval For...1759940402024-01-31 8:23:1230 days 8 mins ago0x7bbf7176f4c0a84cf78ed95b14ec9e7a6f2452d4 IN  Bridgeworld: Balancer Crystals0 ETH0.00004937 0.1
0xfc5190cb20689b12b40cec94c793ee4fdfbdf4a145b23c8edcccf496e057e8acSet Approval For...1736046982024-01-24 6:09:2537 days 2 hrs ago0xd6e2b9696dc45642ebb84bb789ed68d2354d774d IN  Bridgeworld: Balancer Crystals0 ETH0.000021810.1
0x6efc112614b052cabe2c12b456fa8a8668438700b8e17e14165175d982704761Set Approval For...1735829812024-01-24 4:38:4237 days 3 hrs ago0x80d5a1f895022262caf87a2ffd87d37b1a4c5963 IN  Bridgeworld: Balancer Crystals0 ETH0.00002299 0.1
0x4d03fd2dc073c9556147159dccb9adfe8b650698a02844202dc0468c82d636caSet Approval For...1735829552024-01-24 4:38:3637 days 3 hrs ago0x80d5a1f895022262caf87a2ffd87d37b1a4c5963 IN  Bridgeworld: Balancer Crystals0 ETH0.00002299 0.1
0x232588ee79acf3b9ebb525fb14cc7572ff05780c4f6ce1ef390304db1c525a8fSet Approval For...1725632662024-01-21 3:58:0840 days 4 hrs ago0x828dbfd89f87730d8fa40e47b6da1633bb6a2ee3 IN  Bridgeworld: Balancer Crystals0 ETH0.0000288 0.1
0xf5bfe176bbb34af8b24e9a75670a5f2231a08094bec6578b21a152f6a79205b8Safe Transfer Fr...1722516952024-01-20 5:46:1841 days 2 hrs ago0x673288671d8c6a64c4263befdfd5de869ed6d6bd IN  Bridgeworld: Balancer Crystals0 ETH0.00003767 0.1
0xb26ea978b2c0172dbcc82d6335cd2a2bad8ad0f49a2b40734edfcf9003b6df53Set Approval For...1714785802024-01-17 21:53:0143 days 10 hrs ago0x2dbc3f310c456c1be6d87b6d4b3a3ad89e3ac09b IN  Bridgeworld: Balancer Crystals0 ETH0.0000813 0.1
0x32cf8da5f0ffa4d783384a8641760a4ac56fc65e7ec3f93343bf2edc36f9bdbeSet Approval For...1711727092024-01-16 23:36:4444 days 8 hrs ago0xa0ba1136ab6f4ea2deba227f123ec42e827020e7 IN  Bridgeworld: Balancer Crystals0 ETH0.00005813 0.1
0xe98404bfa8cf3b3e8f9a6e5907cac8d705e2425d855265b6f03165ddd90f701fSet Approval For...1711725532024-01-16 23:36:0544 days 8 hrs ago0xa0ba1136ab6f4ea2deba227f123ec42e827020e7 IN  Bridgeworld: Balancer Crystals0 ETH0.00006917 0.1
0x98e73c8fbfbd955f8e1363c9fde445307a3b4a7e86f8c1ac8f1b14a6e5b7b4c8Set Approval For...1694571402024-01-11 18:51:5949 days 13 hrs ago0xf84f2f86be594dcccd4c192ab8058f9f73fb25e7 IN  Bridgeworld: Balancer Crystals0 ETH0.00004809 0.1
0x73a353575ec50fd4011527c4e72ed4ccef6f9134a401af0940401eaa6289c78bSet Approval For...1686194442024-01-09 8:19:3852 days 12 mins ago0xdb7995a2cf3e443ccc2799fae91bc9cdc9c84aef IN  Bridgeworld: Balancer Crystals0 ETH0.00004474 0.1
0x4c5657490abe6377021aa5041cbca548e6c1f0e9f29be31a6dd69d2a47ec8f28Set Approval For...1686194172024-01-09 8:19:3152 days 12 mins ago0xdb7995a2cf3e443ccc2799fae91bc9cdc9c84aef IN  Bridgeworld: Balancer Crystals0 ETH0.00004474 0.1
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x54c3711d719beb250d38b87465c4c06b33c09239cc92373ea5059a71aa3acf19720824892023-03-21 10:01:29345 days 22 hrs ago Bridgeworld: Balancer Crystals 0xeb02149ce6cf815864f53b4c27af48fdd1469a3d0 ETH
0x54c3711d719beb250d38b87465c4c06b33c09239cc92373ea5059a71aa3acf19720824892023-03-21 10:01:29345 days 22 hrs ago Treasure DAO: Trove Marketplace Bridgeworld: Balancer Crystals0 ETH
0x54c3711d719beb250d38b87465c4c06b33c09239cc92373ea5059a71aa3acf19720824892023-03-21 10:01:29345 days 22 hrs ago Bridgeworld: Balancer Crystals 0xeb02149ce6cf815864f53b4c27af48fdd1469a3d0 ETH
0x54c3711d719beb250d38b87465c4c06b33c09239cc92373ea5059a71aa3acf19720824892023-03-21 10:01:29345 days 22 hrs ago Treasure DAO: Trove Marketplace Bridgeworld: Balancer Crystals0 ETH
0xae7d04569b8039e835340df1687f15ec629d79f3b0663fbc884c016500591059720824332023-03-21 10:01:15345 days 22 hrs ago Bridgeworld: Balancer Crystals 0xeb02149ce6cf815864f53b4c27af48fdd1469a3d0 ETH
0xa6ece30804eda47728e1e9ce1ee934a684e96e7bce78f24d5049fc5a324cbb8d720464162023-03-21 7:33:31346 days 58 mins ago Bridgeworld: Balancer Crystals 0xeb02149ce6cf815864f53b4c27af48fdd1469a3d0 ETH
0xa6ece30804eda47728e1e9ce1ee934a684e96e7bce78f24d5049fc5a324cbb8d720464162023-03-21 7:33:31346 days 58 mins ago Treasure DAO: Trove Marketplace Bridgeworld: Balancer Crystals0 ETH
0xeb3afbb6476218e4a387700829b8625fbf1aac265cbb8574c541f234a8446db4720187922023-03-21 5:40:04346 days 2 hrs ago Bridgeworld: Balancer Crystals 0xeb02149ce6cf815864f53b4c27af48fdd1469a3d0 ETH
0xeb3afbb6476218e4a387700829b8625fbf1aac265cbb8574c541f234a8446db4720187922023-03-21 5:40:04346 days 2 hrs ago Treasure DAO: Trove Marketplace Bridgeworld: Balancer Crystals0 ETH
0xf1e0d08aee2fb38acf05eb2eab869106958fea1adba5acadd16e212e4cf87287720187212023-03-21 5:39:47346 days 2 hrs ago Bridgeworld: Balancer Crystals 0xeb02149ce6cf815864f53b4c27af48fdd1469a3d0 ETH
0xf1e0d08aee2fb38acf05eb2eab869106958fea1adba5acadd16e212e4cf87287720187212023-03-21 5:39:47346 days 2 hrs ago Treasure DAO: Trove Marketplace Bridgeworld: Balancer Crystals0 ETH
0xfac9309c7231a664eade3d92f52734f641e2ec7605197dec4b9e1279cfd38b9a720180072023-03-21 5:36:46346 days 2 hrs ago Bridgeworld: Balancer Crystals 0xeb02149ce6cf815864f53b4c27af48fdd1469a3d0 ETH
0xfac9309c7231a664eade3d92f52734f641e2ec7605197dec4b9e1279cfd38b9a720180072023-03-21 5:36:46346 days 2 hrs ago Treasure DAO: Trove Marketplace Bridgeworld: Balancer Crystals0 ETH
0xfac9309c7231a664eade3d92f52734f641e2ec7605197dec4b9e1279cfd38b9a720180072023-03-21 5:36:46346 days 2 hrs ago Bridgeworld: Balancer Crystals 0xeb02149ce6cf815864f53b4c27af48fdd1469a3d0 ETH
0xfac9309c7231a664eade3d92f52734f641e2ec7605197dec4b9e1279cfd38b9a720180072023-03-21 5:36:46346 days 2 hrs ago Treasure DAO: Trove Marketplace Bridgeworld: Balancer Crystals0 ETH
0xed8627a2c5aec32f692aa1edfa66283a6aa349dadc523bae7bdf74ef5fc81894720179502023-03-21 5:36:32346 days 2 hrs ago Bridgeworld: Balancer Crystals 0xeb02149ce6cf815864f53b4c27af48fdd1469a3d0 ETH
0x16fcf2d3c0edcd739c647fef8030e14d7e77e3738815e796c4021330cee79012720111112023-03-21 5:08:21346 days 3 hrs ago Bridgeworld: Balancer Crystals 0xeb02149ce6cf815864f53b4c27af48fdd1469a3d0 ETH
0x16fcf2d3c0edcd739c647fef8030e14d7e77e3738815e796c4021330cee79012720111112023-03-21 5:08:21346 days 3 hrs ago Treasure DAO: Trove Marketplace Bridgeworld: Balancer Crystals0 ETH
0x16fcf2d3c0edcd739c647fef8030e14d7e77e3738815e796c4021330cee79012720111112023-03-21 5:08:21346 days 3 hrs ago Bridgeworld: Balancer Crystals 0xeb02149ce6cf815864f53b4c27af48fdd1469a3d0 ETH
0x16fcf2d3c0edcd739c647fef8030e14d7e77e3738815e796c4021330cee79012720111112023-03-21 5:08:21346 days 3 hrs ago Treasure DAO: Trove Marketplace Bridgeworld: Balancer Crystals0 ETH
0xa68c8d878827c5124fce61c24173686e79b41da815bf44feae2c6889b85e52a8720110122023-03-21 5:07:56346 days 3 hrs ago Bridgeworld: Balancer Crystals 0xeb02149ce6cf815864f53b4c27af48fdd1469a3d0 ETH
0x45e62d5512f61e3104f367245913b534ba54c22dcb4149d2cf1d87ab7df78562719946602023-03-21 4:00:05346 days 4 hrs ago Bridgeworld: Balancer Crystals 0xeb02149ce6cf815864f53b4c27af48fdd1469a3d0 ETH
0x45e62d5512f61e3104f367245913b534ba54c22dcb4149d2cf1d87ab7df78562719946602023-03-21 4:00:05346 days 4 hrs ago Treasure DAO: Trove Marketplace Bridgeworld: Balancer Crystals0 ETH
0x45e62d5512f61e3104f367245913b534ba54c22dcb4149d2cf1d87ab7df78562719946602023-03-21 4:00:05346 days 4 hrs ago Bridgeworld: Balancer Crystals 0xeb02149ce6cf815864f53b4c27af48fdd1469a3d0 ETH
0x45e62d5512f61e3104f367245913b534ba54c22dcb4149d2cf1d87ab7df78562719946602023-03-21 4:00:05346 days 4 hrs ago Treasure DAO: Trove Marketplace Bridgeworld: Balancer Crystals0 ETH
[ Download CSV Export 
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x6F4e8eBa4D337f874Ab57478AcC2Cb5BACdc19c9
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 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 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.