Contract 0x5288c571fd7ad117bea99bf60fe0846c4e84f933 2

Bridge 
 

Contract Overview

Arbitrum One: L2 Gateway Router
Balance:
0 ETH

ETH Value:
$0.00
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x3577cd735b62351877e852b98d9b252f882fd7447c556dbcea2b7ab79698ac24Outbound Transfe...286524832022-10-06 8:10:4818 mins ago0xa6411d28bad288c2e9f6989224c37f156c5264ad IN  Arbitrum One: L2 Gateway Router0 ETH0.0000276
0xfbb1da5e2cedb3a3fc1aa69c8b3422708aa41862bd70d745273897b7324d54aaOutbound Transfe...286308382022-10-06 5:42:382 hrs 46 mins ago0x7338afb07db145220849b04a45243956f20b14d9 IN  Arbitrum One: L2 Gateway Router0 ETH0.00002334
0x0a5857a8acc214bff59ae4bc7c02111593e7e8ee3ef20ff65a959fcb34673e0cOutbound Transfe...286301972022-10-06 5:37:282 hrs 51 mins ago0x6acbe64d027deab7947aa858797e41ee443c531a IN  Arbitrum One: L2 Gateway Router0 ETH0.00002412
0xa4ae211a76681b9c938d8623d30d312403b06bfa1b002a7a25b369b06f8ecb84Outbound Transfe...286038642022-10-06 2:15:156 hrs 13 mins ago0xeb4576fe753dab07635c0bb6c8f0a355e1db5d31 IN  Arbitrum One: L2 Gateway Router0 ETH0.00007827
0x02ce37b06cf3a1d4cea32fbd517ec2c43fc25541359ba7756130e9af20ecf51aOutbound Transfe...285783852022-10-05 21:21:2111 hrs 7 mins ago0x637538facd0488946f9927b6bbf06a6e0d143562 IN  Arbitrum One: L2 Gateway Router0 ETH0.00005885
0xe8769617e4a8051cc553781f03a91078c0fe3f9a781de4c26459a27c9cad9b29Outbound Transfe...285704992022-10-05 20:03:5012 hrs 25 mins ago0xaaae2fbcc5ed79e3180cb06aa805946e875e5d7d IN  Arbitrum One: L2 Gateway Router0 ETH0.00005944
0xe794db9c1041a6e37789bf6824724a7e200bc4c085cfb8f1dffe7e07c539b7d9Outbound Transfe...285645842022-10-05 19:13:0213 hrs 16 mins ago0x5efd7d29770451b16c7db47e466a868fe9129111 IN  Arbitrum One: L2 Gateway Router0 ETH0.00006925
0xd5b113122dd8dfe88a6180a78e4b5c883ae98ae4e81edbc9cd7a687d343697a2Outbound Transfe...285636042022-10-05 19:05:4313 hrs 23 mins ago0xfe67ddfa4f6a2caaa6f0d91c93b341dc59e8d15d IN  Arbitrum One: L2 Gateway Router0 ETH0.00007076
0x16fa87a9ece7672511d22cc120fc488a2e91fd60ab6f01992bfdfdb304c3d19eOutbound Transfe...285473132022-10-05 16:50:0315 hrs 39 mins ago0x45d0d6dd1867e183b265bfd4b70ed5b8a09a70ce IN  Arbitrum One: L2 Gateway Router0 ETH0.00009698
0xea041ddfc2e1dc9dcb18a4dffe845f7506f1b58edd52b38045be321f77e98bb3Outbound Transfe...285441482022-10-05 16:20:4716 hrs 8 mins ago0x3647d1ad6b8d505de32a8f23b624c6d0f306fa15 IN  Arbitrum One: L2 Gateway Router0 ETH0.00009222
0x0e01f150e2e21f215b6cb6ff5e7b8107c0ae25bebcab9d26e12cd4f5dd9933d1Outbound Transfe...285302302022-10-05 14:36:3717 hrs 52 mins ago0xd944fa42b06d0d4af8578136cc6d35f9341cbf0c IN  Arbitrum One: L2 Gateway Router0 ETH0.00004143
0xaeb818fce88905d5f187fb780cc732baf6f894076a569d5a5b7302121c6c8555Outbound Transfe...285271222022-10-05 14:17:3918 hrs 11 mins ago0xde8cad31f5bd744a59948a54bc737f2326101dcd IN  Arbitrum One: L2 Gateway Router0 ETH0.00003593
0xe675763e1735929d4df4166b4e49656887cdb36cdd264ccdc1a4df6347c3eb9eOutbound Transfe...285237872022-10-05 13:57:0918 hrs 32 mins ago0xad7951e4d4608ad0890c10ae5d03ab2a4d87b42e IN  Arbitrum One: L2 Gateway Router0 ETH0.00003483
0x72ad4774174a258f731ef53e953d63bde4619475e210a0706e1cd6d5a1f4e858Outbound Transfe...285046572022-10-05 12:01:5420 hrs 27 mins ago0xa414a5a05e28304ed3e83824b859fd82ad047ba8 IN  Arbitrum One: L2 Gateway Router0 ETH0.00002534
0x3b5a8e4f5378c0d130865023fda8b75cbf123d79aba0c3d3202cdb3979d4d088Outbound Transfe...285019972022-10-05 11:44:4820 hrs 44 mins ago0x4ffad6ac852c0af0aa301376f4c5dea3a928b120 IN  Arbitrum One: L2 Gateway Router0 ETH0.00002451
0x5c97701b835f70b076264f69266eec1b0471deaa3149cbca114432d53c502b66Outbound Transfe...285016062022-10-05 11:42:3920 hrs 46 mins ago0x4ffad6ac852c0af0aa301376f4c5dea3a928b120 IN  Arbitrum One: L2 Gateway Router0 ETH0.00002326
0x50021dc6b160b9439edbf83d8d4db9f7f3bc430d31ea8bbdcf24938806caee99Outbound Transfe...284957812022-10-05 11:05:3221 hrs 23 mins ago0xd487b56acdaad71ec3c769b516785f191ef7b22f IN  Arbitrum One: L2 Gateway Router0 ETH0.00002582
0xa2958f011e5756b2eac4292972e08408dd38590ee4194eb3369f2f96a8c09f17Outbound Transfe...284943052022-10-05 10:55:4421 hrs 33 mins ago0x4b003868bbd5add0d1251553b829e58ba3cdcd3c IN  Arbitrum One: L2 Gateway Router0 ETH0.00002251
0x912336cc0b980b1508bffbabfa3e08b36a914c0a5e7e13cd185293a69f2056fbOutbound Transfe...284866442022-10-05 10:12:3122 hrs 16 mins ago0x6e43a1b2c93c9ede62c0c413cb8a3a638fdc7029 IN  Arbitrum One: L2 Gateway Router0 ETH0.00002086
0x8ef3ab417fa1f739fbac61815fd5c4238265cb3bade1ac0f66b4f72f69f69a37Outbound Transfe...284787532022-10-05 9:28:1623 hrs ago0x76722bf9e09a90c8e84b04b598aba95660f4b613 IN  Arbitrum One: L2 Gateway Router0 ETH0.00002283
0xd203593a97a38cac3794d734b5b7d4ad33fd2491ae3d19e3c679f5b8950b0f1fOutbound Transfe...284713412022-10-05 8:43:4323 hrs 45 mins ago0x7282025ec3d3bcb7adb3b56f15578803198b0a37 IN  Arbitrum One: L2 Gateway Router0 ETH0.00002614
0xeca9573ea8b91a7a0d0740126948de5ed61d595feb00326c1b646b44d8f12a87Outbound Transfe...284702312022-10-05 8:37:1423 hrs 51 mins ago0x5fb8b9512684d451d4e585a1a0aabfb48a253c67 IN  Arbitrum One: L2 Gateway Router0 ETH0.00002373
0xbb149752f2df362ae6a83399b882cf3f09de64365ce0079161ee1838d53f22c5Outbound Transfe...284684102022-10-05 8:26:191 day 2 mins ago0x0e088855548fdfb34aa4c20d743d22e683bd679d IN  Arbitrum One: L2 Gateway Router0 ETH0.00002862
0xffda083f84cd6e8b5d116cf9463c22002f6c4db9111a2f76f5c83e87636bae70Outbound Transfe...284655042022-10-05 8:10:131 day 19 mins ago0x4f2604aac91114ae3b3d0be485d407d02b24480b IN  Arbitrum One: L2 Gateway Router0 ETH0.00002324
0xc14dd7f3bfb26954e5fb33e9c2f4ece35263f84254f7f1aee05b2616334e5eb4Outbound Transfe...284578752022-10-05 7:28:211 day 1 hr ago0xc9bcec43b9453aed2bac9c496b30b740b6a04073 IN  Arbitrum One: L2 Gateway Router0 ETH0.0000242
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x3577cd735b62351877e852b98d9b252f882fd7447c556dbcea2b7ab79698ac24286524832022-10-06 8:10:4818 mins ago Arbitrum One: L2 Gateway Router Arbitrum One: L2 ERC20 Gateway0 ETH
0x3577cd735b62351877e852b98d9b252f882fd7447c556dbcea2b7ab79698ac24286524832022-10-06 8:10:4818 mins ago Arbitrum One: L2 Gateway Router 0xe80eb0238029333e368e0bddb7acdf1b9cb282780 ETH
0xfbb1da5e2cedb3a3fc1aa69c8b3422708aa41862bd70d745273897b7324d54aa286308382022-10-06 5:42:382 hrs 46 mins ago Arbitrum One: L2 Gateway Router Arbitrum One: L2 ERC20 Gateway0 ETH
0xfbb1da5e2cedb3a3fc1aa69c8b3422708aa41862bd70d745273897b7324d54aa286308382022-10-06 5:42:382 hrs 46 mins ago Arbitrum One: L2 Gateway Router 0xe80eb0238029333e368e0bddb7acdf1b9cb282780 ETH
0x0a5857a8acc214bff59ae4bc7c02111593e7e8ee3ef20ff65a959fcb34673e0c286301972022-10-06 5:37:282 hrs 51 mins ago Arbitrum One: L2 Gateway Router Arbitrum One: L2 ERC20 Gateway0 ETH
0x0a5857a8acc214bff59ae4bc7c02111593e7e8ee3ef20ff65a959fcb34673e0c286301972022-10-06 5:37:282 hrs 51 mins ago Arbitrum One: L2 Gateway Router 0xe80eb0238029333e368e0bddb7acdf1b9cb282780 ETH
0xe1a36c0e5d5a0eeaf2bf40fe4eb46643590da9b7d30ac28a2aa3f7b36c0bd1c7286221742022-10-06 4:30:473 hrs 58 mins ago Arbitrum One: L2 Gateway Router Arbitrum One: L2 Custom Gateway0 ETH
0xe1a36c0e5d5a0eeaf2bf40fe4eb46643590da9b7d30ac28a2aa3f7b36c0bd1c7286221742022-10-06 4:30:473 hrs 58 mins ago Arbitrum One: L2 Gateway Router 0xe80eb0238029333e368e0bddb7acdf1b9cb282780 ETH
0xe1a36c0e5d5a0eeaf2bf40fe4eb46643590da9b7d30ac28a2aa3f7b36c0bd1c7286221742022-10-06 4:30:473 hrs 58 mins ago Across Protocol: Arbitrum Spoke Pool V2 Arbitrum One: L2 Gateway Router0 ETH
0xe1a36c0e5d5a0eeaf2bf40fe4eb46643590da9b7d30ac28a2aa3f7b36c0bd1c7286221742022-10-06 4:30:473 hrs 58 mins ago Arbitrum One: L2 Gateway Router Arbitrum One: L2 DAI Gateway0 ETH
0xe1a36c0e5d5a0eeaf2bf40fe4eb46643590da9b7d30ac28a2aa3f7b36c0bd1c7286221742022-10-06 4:30:473 hrs 58 mins ago Arbitrum One: L2 Gateway Router 0xe80eb0238029333e368e0bddb7acdf1b9cb282780 ETH
0xe1a36c0e5d5a0eeaf2bf40fe4eb46643590da9b7d30ac28a2aa3f7b36c0bd1c7286221742022-10-06 4:30:473 hrs 58 mins ago Across Protocol: Arbitrum Spoke Pool V2 Arbitrum One: L2 Gateway Router0 ETH
0xe1a36c0e5d5a0eeaf2bf40fe4eb46643590da9b7d30ac28a2aa3f7b36c0bd1c7286221742022-10-06 4:30:473 hrs 58 mins ago Arbitrum One: L2 Gateway Router Arbitrum One: L2 WETH Gateway0 ETH
0xe1a36c0e5d5a0eeaf2bf40fe4eb46643590da9b7d30ac28a2aa3f7b36c0bd1c7286221742022-10-06 4:30:473 hrs 58 mins ago Arbitrum One: L2 Gateway Router 0xe80eb0238029333e368e0bddb7acdf1b9cb282780 ETH
0xe1a36c0e5d5a0eeaf2bf40fe4eb46643590da9b7d30ac28a2aa3f7b36c0bd1c7286221742022-10-06 4:30:473 hrs 58 mins ago Across Protocol: Arbitrum Spoke Pool V2 Arbitrum One: L2 Gateway Router0 ETH
0xa4ae211a76681b9c938d8623d30d312403b06bfa1b002a7a25b369b06f8ecb84286038642022-10-06 2:15:156 hrs 13 mins ago Arbitrum One: L2 Gateway Router Arbitrum One: L2 ERC20 Gateway0 ETH
0xa4ae211a76681b9c938d8623d30d312403b06bfa1b002a7a25b369b06f8ecb84286038642022-10-06 2:15:156 hrs 13 mins ago Arbitrum One: L2 Gateway Router 0xe80eb0238029333e368e0bddb7acdf1b9cb282780 ETH
0x02ce37b06cf3a1d4cea32fbd517ec2c43fc25541359ba7756130e9af20ecf51a285783852022-10-05 21:21:2111 hrs 7 mins ago Arbitrum One: L2 Gateway Router Arbitrum One: L2 Custom Gateway0 ETH
0x02ce37b06cf3a1d4cea32fbd517ec2c43fc25541359ba7756130e9af20ecf51a285783852022-10-05 21:21:2111 hrs 7 mins ago Arbitrum One: L2 Gateway Router 0xe80eb0238029333e368e0bddb7acdf1b9cb282780 ETH
0xd4709f3008b79d801b5061efca759c773a1e40bec934bccba9d5581fca395632285775522022-10-05 21:13:4611 hrs 15 mins ago Arbitrum One: L2 Gateway Router Arbitrum One: L2 Custom Gateway0 ETH
0xd4709f3008b79d801b5061efca759c773a1e40bec934bccba9d5581fca395632285775522022-10-05 21:13:4611 hrs 15 mins ago Arbitrum One: L2 Gateway Router 0xe80eb0238029333e368e0bddb7acdf1b9cb282780 ETH
0xd4709f3008b79d801b5061efca759c773a1e40bec934bccba9d5581fca395632285775522022-10-05 21:13:4611 hrs 15 mins ago Across Protocol: Arbitrum Spoke Pool V2 Arbitrum One: L2 Gateway Router0 ETH
0xd4709f3008b79d801b5061efca759c773a1e40bec934bccba9d5581fca395632285775522022-10-05 21:13:4611 hrs 15 mins ago Arbitrum One: L2 Gateway Router Arbitrum One: L2 DAI Gateway0 ETH
0xd4709f3008b79d801b5061efca759c773a1e40bec934bccba9d5581fca395632285775522022-10-05 21:13:4611 hrs 15 mins ago Arbitrum One: L2 Gateway Router 0xe80eb0238029333e368e0bddb7acdf1b9cb282780 ETH
0xd4709f3008b79d801b5061efca759c773a1e40bec934bccba9d5581fca395632285775522022-10-05 21:13:4611 hrs 15 mins ago Across Protocol: Arbitrum Spoke Pool V2 Arbitrum One: L2 Gateway Router0 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TransparentUpgradeableProxy

Compiler Version
v0.6.11+commit.5ef660b1

Optimization Enabled:
Yes with 100 runs

Other Settings:
default evmVersion
File 1 of 4 : TransparentUpgradeableProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.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 interface 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 _logic, address admin_, bytes memory _data) public payable UpgradeableProxy(_logic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        _setAdmin(admin_);
    }

    /**
     * @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 admin_) {
        admin_ = _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 implementation_) {
        implementation_ = _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 virtual 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 virtual 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 virtual ifAdmin {
        _upgradeTo(newImplementation);
        Address.functionDelegateCall(newImplementation, data);
    }

    /**
     * @dev Returns the current admin.
     */
    function _admin() internal view virtual 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 virtual override {
        require(msg.sender != _admin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target");
        super._beforeFallback();
    }
}

File 2 of 4 : UpgradeableProxy.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.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) public payable {
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        _setImplementation(_logic);
        if(_data.length > 0) {
            Address.functionDelegateCall(_logic, _data);
        }
    }

    /**
     * @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 view virtual override 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 virtual {
        _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 3 of 4 : Proxy.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.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 virtual {
        // 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 view virtual 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 virtual {
        _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 () external payable virtual {
        _fallback();
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
     * is empty.
     */
    receive () external payable virtual {
        _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 4 of 4 : Address.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.2 <0.8.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) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @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");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        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
{
  "optimizer": {
    "enabled": true,
    "runs": 100
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","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":"admin_","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":"implementation_","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"}]

608060405260405162000d6038038062000d60833981810160405260608110156200002957600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200005557600080fd5b9083019060208201858111156200006b57600080fd5b82516401000000008111828201881017156200008657600080fd5b82525081516020918201929091019080838360005b83811015620000b55781810151838201526020016200009b565b50505050905090810190601f168015620000e35780820380516001836020036101000a031916815260200191505b5060408181527f656970313936372e70726f78792e696d706c656d656e746174696f6e0000000082525190819003601c01902086935084925060008051602062000cbd8339815191526000199091011490506200013c57fe5b62000150826001600160e01b03620001e016565b80511562000171576200016f82826200024660201b620003841760201c565b505b5050604080517f656970313936372e70726f78792e61646d696e000000000000000000000000008152905190819003601301902060008051602062000c9d83398151915260001990910114620001c357fe5b620001d7826001600160e01b036200027e16565b50505062000461565b620001f6816200029160201b620003b01760201c565b620002335760405162461bcd60e51b815260040180806020018281038252603681526020018062000d046036913960400191505060405180910390fd5b60008051602062000cbd83398151915255565b606062000277838360405180606001604052806027815260200162000cdd602791396001600160e01b036200029716565b9392505050565b60008051602062000c9d83398151915255565b3b151590565b6060620002ad846001600160e01b036200029116565b620002ea5760405162461bcd60e51b815260040180806020018281038252602681526020018062000d3a6026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b602083106200032a5780518252601f19909201916020918201910162000309565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146200038c576040519150601f19603f3d011682016040523d82523d6000602084013e62000391565b606091505b509092509050620003ad8282866001600160e01b03620003b716565b9695505050505050565b60608315620003c857508162000277565b825115620003d95782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620004255781810151838201526020016200040b565b50505050905090810190601f168015620004535780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b61082c80620004716000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100985780635c60da1b146101185780638f28397014610149578063f851a4401461017c5761005d565b3661005d5761005b610191565b005b61005b610191565b34801561007157600080fd5b5061005b6004803603602081101561008857600080fd5b50356001600160a01b03166101ab565b61005b600480360360408110156100ae57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100d957600080fd5b8201836020820111156100eb57600080fd5b8035906020019184600183028401116401000000008311171561010d57600080fd5b5090925090506101e5565b34801561012457600080fd5b5061012d610262565b604080516001600160a01b039092168252519081900360200190f35b34801561015557600080fd5b5061005b6004803603602081101561016c57600080fd5b50356001600160a01b031661029f565b34801561018857600080fd5b5061012d610359565b6101996103b6565b6101a96101a4610416565b61043b565b565b6101b361045f565b6001600160a01b0316336001600160a01b031614156101da576101d581610484565b6101e2565b6101e2610191565b50565b6101ed61045f565b6001600160a01b0316336001600160a01b031614156102555761020f83610484565b61024f8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061038492505050565b5061025d565b61025d610191565b505050565b600061026c61045f565b6001600160a01b0316336001600160a01b031614156102945761028d610416565b905061029c565b61029c610191565b90565b6102a761045f565b6001600160a01b0316336001600160a01b031614156101da576001600160a01b0381166103055760405162461bcd60e51b815260040180806020018281038252603a8152602001806106f8603a913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61032e61045f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101d5816104c4565b600061036361045f565b6001600160a01b0316336001600160a01b031614156102945761028d61045f565b60606103a98383604051806060016040528060278152602001610732602791396104e8565b9392505050565b3b151590565b6103be61045f565b6001600160a01b0316336001600160a01b0316141561040e5760405162461bcd60e51b81526004018080602001828103825260428152602001806107b56042913960600191505060405180910390fd5b6101a96101a9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e80801561045a573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b61048d816105eb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b60606104f3846103b0565b61052e5760405162461bcd60e51b815260040180806020018281038252602681526020018061078f6026913960400191505060405180910390fd5b60006060856001600160a01b0316856040518082805190602001908083835b6020831061056c5780518252601f19909201916020918201910161054d565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146105cc576040519150601f19603f3d011682016040523d82523d6000602084013e6105d1565b606091505b50915091506105e1828286610653565b9695505050505050565b6105f4816103b0565b61062f5760405162461bcd60e51b81526004018080602001828103825260368152602001806107596036913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b606083156106625750816103a9565b8251156106725782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106bc5781810151838201526020016106a4565b50505050905090810190601f1680156106e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe5472616e73706172656e745570677261646561626c6550726f78793a206e65772061646d696e20697320746865207a65726f2061646472657373416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e74726163745472616e73706172656e745570677261646561626c6550726f78793a2061646d696e2063616e6e6f742066616c6c6261636b20746f2070726f787920746172676574a2646970667358221220175110956fa0a7ff1615f55e1422acff6edcec0099d7ea0bae101f4f6228c8bd64736f6c634300060b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65645570677261646561626c6550726f78793a206e657720696d706c656d656e746174696f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374000000000000000000000000fd7b81426a0d02e377ea5252906e7527debf6a88000000000000000000000000d570ace65c43af47101fc6250fd6fc63d1c22a8600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000fd7b81426a0d02e377ea5252906e7527debf6a88000000000000000000000000d570ace65c43af47101fc6250fd6fc63d1c22a8600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _logic (address): 0xfd7b81426a0d02e377ea5252906e7527debf6a88
Arg [1] : admin_ (address): 0xd570ace65c43af47101fc6250fd6fc63d1c22a86
Arg [2] : _data (bytes): 0x

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000fd7b81426a0d02e377ea5252906e7527debf6a88
Arg [1] : 000000000000000000000000d570ace65c43af47101fc6250fd6fc63d1c22a86
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000


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.