Contract 0xd123f70AE324d34A9E76b67a27bf77593bA8749f 2

 

Contract Overview

Synapse: Bridge
Balance:
0.359 BNB

BNB Value:
$173.73 (@ $483.94/BNB)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x0d51c998397490fdf7698b3d33a9774445be369eb3116d7311f27a549d8dd6c4Mint And Swap120770332021-10-25 11:24:5832 secs ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00260357
0xa8ce14b8d3c9ef1ecfbd11fb4831591b2b9fdfec68bdb9ea1b760f3f7e9e4450Mint And Swap120769112021-10-25 11:18:526 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00280934
0xf4bf2cb0dae4ce1eeaf9b4d85a3105573080c5c7afc86f558e382b6f190165beMint And Swap120766312021-10-25 11:04:5020 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00249389
0xb0f322fe15a54e1a2f55bf6447140b9a009250ec5a823f43051d8d11edfaf2bdMint And Swap120764442021-10-25 10:54:5330 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00260339
0x03dccce0b36fc61cd40428c921591a33bfbff217d084661d1fcebce28f5f7971Mint And Swap120763172021-10-25 10:48:3236 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00280934
0x277645726f041074f018f9d929532aba89d84bf9c2919ef888f9eeb0de0467f7Mint And Swap120760822021-10-25 10:36:4748 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00257732
0x32d184c4f7848eb4124b28171604a3db20248d46b7698b98ec11624b99229385Mint And Swap120760702021-10-25 10:36:1149 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00290785
0x5a0c6e7f15b342a887ae771f82901b8520adb889161fbc13675c8701d2bce9e0Mint And Swap120758552021-10-25 10:25:261 hr ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00247851
0xcb4a4a49bffe6b113c7fb1248dc965794c178b91dd0826c1f12b5717f1d37253Mint And Swap120757982021-10-25 10:22:351 hr 2 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00290821
0x477e6884474bf2597ee4557c0c000da20eaffeb5c5e5cc95e06380f8205c5992Mint And Swap120756892021-10-25 10:17:081 hr 8 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00247839
0xf0b42fe4f55ee2f10259af7e88132f3fd6a0f191cf046553fb1aac0a995c26b8Mint And Swap120753942021-10-25 10:02:221 hr 23 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00249413
0x28dc1a059f91cc566b11d70031e7066e7728081549857d1d806244e7463aa842Mint And Swap120753342021-10-25 9:59:221 hr 26 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00257702
0xbff3ba2e890fff4baf5d802f12aee77708f1c069ba165e884810e1e7ea7b28aaMint120752332021-10-25 9:54:191 hr 31 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00058544
0xa18764d87a37dad622e9456cf9516e25989cd2dde79299a84c7e00a5c6c5f92aMint And Swap120747792021-10-25 9:31:371 hr 53 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00257702
0x95dc2f2a0fb32b892e60cde6276648fc79526c98e42ba6e367ed29b34befd51bMint And Swap120747452021-10-25 9:29:551 hr 55 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00282496
0x48b976b2bec7669a243520a46d994fbad25882c2322b728e722c603c5a3336dcMint And Swap120745212021-10-25 9:18:422 hrs 6 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00250202
0xb761e75e1f1ee5a22829e8eac924967d640f46286ade365dc5ccd633e25efa52Mint And Swap120745122021-10-25 9:18:152 hrs 7 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00247863
0x751e3f073f34123405e78e440afb61145cb1cd42eadf320b3d5c3468a6e7b55eMint And Swap120738832021-10-25 8:46:482 hrs 38 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00273434
0xc41e50c51017e332eff341d23b53e7fb4e3dd5970534163c3b5dd9575d0a7641Mint And Swap120734902021-10-25 8:27:082 hrs 58 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00249401
0x91bb381cf734c872b69bc109fdcc548da77b36118f2164aa51e24d150ba8bb3eMint And Swap120730482021-10-25 8:04:583 hrs 20 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00247839
0xd4768a21d35e290c39bb99d2bfb2b661c957b8e6ff4b303edb2b70dc9dbb9e0cMint And Swap120725222021-10-25 7:38:403 hrs 46 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00240363
0x793684569cea39fc5057d84680db0c344001cbaf439646145631feecd0603eddMint And Swap120721952021-10-25 7:22:174 hrs 3 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00273446
0x1bdcdb633fea2c8196ef7fa2e3f5cec9dac112c35da70b8a3ff93cae771b8dbbMint And Swap120719992021-10-25 7:12:224 hrs 13 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.0027019
0xcf6efb5e834e08e4e9ebb86a9da2ba85c348d89541437e6f501ac8bb81305583Mint120718912021-10-25 7:06:584 hrs 18 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00051044
0x7f020bf101dfd22c35c3383b187344702e7a01632b5ed055c8e74264ecb58452Mint And Swap120712422021-10-25 6:34:304 hrs 51 mins ago0x230a1ac45690b9ae1176389434610b9526d2f21b IN  Synapse: Bridge0 BNB0.00282496
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xa8ce14b8d3c9ef1ecfbd11fb4831591b2b9fdfec68bdb9ea1b760f3f7e9e4450120769112021-10-25 11:18:526 mins ago Synapse: Bridge0xbac4d4a31a24153864f4158936daa02fd2acf9cf0.002 BNB
0xf4bf2cb0dae4ce1eeaf9b4d85a3105573080c5c7afc86f558e382b6f190165be120766312021-10-25 11:04:5020 mins ago Synapse: Bridge0x24c94db01fbf38261542659dc14112bca46a69220.002 BNB
0xb0f322fe15a54e1a2f55bf6447140b9a009250ec5a823f43051d8d11edfaf2bd120764442021-10-25 10:54:5330 mins ago Synapse: Bridge0x9c2731b4a9adae8b65402e7036318a607496db450.002 BNB
0x03dccce0b36fc61cd40428c921591a33bfbff217d084661d1fcebce28f5f7971120763172021-10-25 10:48:3236 mins ago Synapse: Bridge0xe89eaf7bfbb27f9cf15f42a076cfef44e179db470.002 BNB
0x277645726f041074f018f9d929532aba89d84bf9c2919ef888f9eeb0de0467f7120760822021-10-25 10:36:4748 mins ago Synapse: Bridge0x38ee20fb203fe48b0edeaf28a33f6c08960fcf7e0.002 BNB
0x32d184c4f7848eb4124b28171604a3db20248d46b7698b98ec11624b99229385120760702021-10-25 10:36:1149 mins ago Synapse: Bridge0x1ff022bb82c18d14e6f57400c000df37f6dbcbb60.002 BNB
0x5a0c6e7f15b342a887ae771f82901b8520adb889161fbc13675c8701d2bce9e0120758552021-10-25 10:25:261 hr ago Synapse: Bridge0x3752f388d7fa42bd799ed8d0211a62101be817a30.002 BNB
0xcb4a4a49bffe6b113c7fb1248dc965794c178b91dd0826c1f12b5717f1d37253120757982021-10-25 10:22:351 hr 2 mins ago Synapse: Bridge0x0ce1d4fbbd736cd3eeeb380b36ee47ab31da2d5e0.002 BNB
0x477e6884474bf2597ee4557c0c000da20eaffeb5c5e5cc95e06380f8205c5992120756892021-10-25 10:17:081 hr 8 mins ago Synapse: Bridge0x6b5ddee2c6dba56d82953bee56a9a3045e9b915c0.002 BNB
0xf0b42fe4f55ee2f10259af7e88132f3fd6a0f191cf046553fb1aac0a995c26b8120753942021-10-25 10:02:221 hr 23 mins ago Synapse: Bridge0xc13a83ffff1b128e643a9f0c04248323a969ce680.002 BNB
0x28dc1a059f91cc566b11d70031e7066e7728081549857d1d806244e7463aa842120753342021-10-25 9:59:221 hr 26 mins ago Synapse: Bridge0x88bf5a2e82510847e5dcbf33f44a9f611f1c1df50.002 BNB
0xbff3ba2e890fff4baf5d802f12aee77708f1c069ba165e884810e1e7ea7b28aa120752332021-10-25 9:54:191 hr 31 mins ago Synapse: Bridge0xb5ddc05383dfd8971a1073c722505d5a3704ae370.002 BNB
0xa18764d87a37dad622e9456cf9516e25989cd2dde79299a84c7e00a5c6c5f92a120747792021-10-25 9:31:371 hr 53 mins ago Synapse: Bridge0x1b5adbe70356148c80d8c81dfad539946363cbeb0.002 BNB
0x95dc2f2a0fb32b892e60cde6276648fc79526c98e42ba6e367ed29b34befd51b120747452021-10-25 9:29:551 hr 55 mins ago Synapse: Bridge0x9224cbf96fe2d860112b6b8cec1457717c13c1640.002 BNB
0x48b976b2bec7669a243520a46d994fbad25882c2322b728e722c603c5a3336dc120745212021-10-25 9:18:422 hrs 6 mins ago Synapse: Bridge0x73b5731b2cbcde3e6dc32a0a9337133bf170d88d0.002 BNB
0xb761e75e1f1ee5a22829e8eac924967d640f46286ade365dc5ccd633e25efa52120745122021-10-25 9:18:152 hrs 7 mins ago Synapse: Bridge0x166e017cad0a6f860cd80bfc477c30f915dae09b0.002 BNB
0x751e3f073f34123405e78e440afb61145cb1cd42eadf320b3d5c3468a6e7b55e120738832021-10-25 8:46:482 hrs 38 mins ago Synapse: Bridge0x453e8af62bfe737a0e05125020da45f17156a1f90.002 BNB
0xc41e50c51017e332eff341d23b53e7fb4e3dd5970534163c3b5dd9575d0a7641120734902021-10-25 8:27:082 hrs 58 mins ago Synapse: Bridge0x7713fdfd7abc43bd75078ea0b3f02520e77e41310.002 BNB
0x91bb381cf734c872b69bc109fdcc548da77b36118f2164aa51e24d150ba8bb3e120730482021-10-25 8:04:583 hrs 20 mins ago Synapse: Bridge0x0340af84322e83ae445c375c10a6ac90989b85f60.002 BNB
0xd4768a21d35e290c39bb99d2bfb2b661c957b8e6ff4b303edb2b70dc9dbb9e0c120725222021-10-25 7:38:403 hrs 46 mins ago Synapse: Bridge0x1649e2a2d94f25cf07ceb99d3c6e39673bdc4fa00.002 BNB
0x793684569cea39fc5057d84680db0c344001cbaf439646145631feecd0603edd120721952021-10-25 7:22:174 hrs 3 mins ago Synapse: Bridge0xcd326a676d9490f6ab786e4228bdc4ecffcb8c8f0.002 BNB
0x1bdcdb633fea2c8196ef7fa2e3f5cec9dac112c35da70b8a3ff93cae771b8dbb120719992021-10-25 7:12:224 hrs 13 mins ago Synapse: Bridge0xae9b73ee888ffb7cf452f6a7b900cca087454bbe0.002 BNB
0xcf6efb5e834e08e4e9ebb86a9da2ba85c348d89541437e6f501ac8bb81305583120718912021-10-25 7:06:584 hrs 18 mins ago Synapse: Bridge0xc5b41fb105883bcd59ceef072b5b6bdbc5df31da0.002 BNB
0x7f020bf101dfd22c35c3383b187344702e7a01632b5ed055c8e74264ecb58452120712422021-10-25 6:34:304 hrs 51 mins ago Synapse: Bridge0xda85b72091828f7dd6b5091f9d90e2686f4c169e0.002 BNB
0x0c616454a577055026e9d3b5b942bc9f1c55662a2efad3d18f4d93f574fb0ec5120709652021-10-25 6:20:395 hrs 4 mins ago Synapse: Bridge0x8e062965758656edf4cce8bcadc6f9f1c53f14e90.002 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x64B17B166090B8F9BA19C13Bf8D5dA951b2d653D

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

6080604052604051610aaa380380610aaa8339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b50604052508491508290506100ee826101bf565b8051156101a6576000826001600160a01b0316826040518082805190602001908083835b602083106101315780518252601f199092019160209182019101610112565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610191576040519150601f19603f3d011682016040523d82523d6000602084013e610196565b606091505b50509050806101a457600080fd5b505b506101ae9050565b6101b782610231565b505050610291565b6101d28161025560201b6104bb1760201c565b61020d5760405162461bcd60e51b8152600401808060200182810382526036815260200180610a746036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061028957508115155b949350505050565b6107d4806102a06000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146101425780638f28397014610180578063f851a440146101c05761006d565b80633659cfe6146100755780634f1ef286146100b55761006d565b3661006d5761006b6101d5565b005b61006b6101d5565b34801561008157600080fd5b5061006b6004803603602081101561009857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101ef565b61006b600480360360408110156100cb57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561010357600080fd5b82018360208201111561011557600080fd5b8035906020019184600183028401116401000000008311171561013757600080fd5b509092509050610243565b34801561014e57600080fd5b50610157610317565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561018c57600080fd5b5061006b600480360360208110156101a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661036e565b3480156101cc57600080fd5b50610157610476565b6101dd6104f7565b6101ed6101e861058b565b6105b0565b565b6101f76105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023857610233816105f9565b610240565b6102406101d5565b50565b61024b6105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561030a57610287836105f9565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102f1576040519150601f19603f3d011682016040523d82523d6000602084013e6102f6565b606091505b505090508061030457600080fd5b50610312565b6103126101d5565b505050565b60006103216105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103635761035c61058b565b905061036b565b61036b6101d5565b90565b6103766105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102385773ffffffffffffffffffffffffffffffffffffffff8116610415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806106ed603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61043e6105d4565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301528051918290030190a161023381610646565b60006104806105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103635761035c6105d4565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906104ef57508115155b949350505050565b6104ff6105d4565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604281526020018061075d6042913960600191505060405180910390fd5b6101ed6101ed565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156105cf573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6106028161066a565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b610673816104bb565b6106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806107276036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f20616464726573735570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a2646970667358221220b141ef72de179b8b56cef31601d40ff2875391088197e73cac39eba1ddcd0fdd64736f6c634300070600335570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e747261637400000000000000000000000059fc13cf071d29b96ef86f2f70ccc47045ca1f96000000000000000000000000c52f861df3f440bda55479cc1c4855170195008500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b000000000000000000000000a864b68318a5db56f2eb40c845ea4925be4ae3f900000000000000000000000044bba1d4e455af7a6b686d32641034b35b191e8500000000000000000000000067812f24da89701e2573f8f1aad3c24df0bc8b3300000000000000000000000000000000000000000000000000000000

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