Contract 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 1

Contract Overview

Balance:
0 BNB
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xe1b600e1ee53fadad122bf3191c4e33192dafe9d4c6ffeeee60a856212ca6fbaUpdate Price Per...117321932021-08-23 15:02:44147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.001640952
0xf8e833e4db3f7c9f2bb4b72331f33291529fb7b7768597c7758d888b60dbcb39Update Price Per...117321902021-08-23 15:02:35147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.00164124
0x296cdb7b170bf3b2e09e65f852f0e8db2c81c05f0683d64e4c563aa18141ec9cUpdate Price Per...117321872021-08-23 15:02:26147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.00164124
0xe51eb09ab927f226f10c60ea7bfb5407b39c1178fccea29e4ef55dcec5dc1968Update Price Per...117321832021-08-23 15:02:14147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.00164124
0xfe05262d956539d4387f0c525715651ca376c5daa93670dfaf2b23d0b15bf19cUpdate Price Per...117321802021-08-23 15:02:05147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.00164124
0xb2b1ac196f16df655939b3846538812e4cb665644b2883a4bf6c18334d684c96Update Price Per...117321772021-08-23 15:01:56147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.00164124
0x61f34a73798b128fa77f0a02856580617f04ab1a07f3fddaccb26b4bf0318b20Update Price Per...117321732021-08-23 15:01:44147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.001641096
0x5977353dfafb1d8cfae888f2c366edb1453c6a88dfb5c346b4c6942d75317510Update Price Per...117321702021-08-23 15:01:35147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.00164124
0x1e757ce099c6e43ef895f4f1a52070afdbaaf19f9f36288d3f02f174bde2044cUpdate Price Per...117321672021-08-23 15:01:26147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.00164124
0xcde7ce23fc7d65bb93239fe2a13063299ba0ed72118abf9618f8f44905fd5b1eUpdate Price Per...117321632021-08-23 15:01:14147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.001641096
0x89dfd3dcbba81030a03dfb99ae5e53dfd5a3c7664c5d14a9d2055616338f9493Update Price Per...117321602021-08-23 15:01:05147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.00164124
0x3313733f0e230999294c3cc196bcd9324dd1f1b3c766cc6f2a3afc00f40cd5d1Update Price Per...117321572021-08-23 15:00:56147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.00164124
0x9bbb782d8e341d48105a876c951ace1a83ea710a285697bc3fcc6427b4e44a31Update Price Per...117321532021-08-23 15:00:44147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.001641096
0xff8c9ba501c8f9533a1fc7a1e14f713618ca0fa66bb31ac1870e993cde2fac84Update Price Per...117321502021-08-23 15:00:35147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.00164124
0xfa90b198ab7336f0f8150ee19c6aaa820519f65fd55b74144e2b3cb23c5ad66eUpdate Price Per...117321472021-08-23 15:00:26147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.00164124
0x60f20561a3dd9ba55cba91727e8fd69f638008e1cdfe867e5906903fec36ab26Update Price Per...117321432021-08-23 15:00:14147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.00164124
0x3e85299c144b41b513fffabf2f8fc695548d572aff69ec73b523b0f7c086544aUpdate Price Per...117321402021-08-23 15:00:05147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.00164124
0x60d2416dc6a4f6d237922234497843d63d0095d5d95e083aaa126c83963efc25Update Price Per...117321372021-08-23 14:59:56147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.001641096
0x58d721e7b5cf95e7f71fc0912d2fdaf858518d471b481c797f133a9e9bda1fbaUpdate Price Per...117321272021-08-23 14:59:26147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.001640808
0x497f9df0d4f81dcda15cd1c78a2e1fa09b87657f394854699a03ec4a6d06e60bUpdate Price Per...117321232021-08-23 14:59:14147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.001640808
0xb42f678d738966e8486f733b664e9d4b0aff7a42ce6009c331f5f58cf4ec1ba1Update Price Per...117321202021-08-23 14:59:05147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.001640808
0xe9d0428fbca2430b0423fa81d439cce487b92b9cfefd8845e6821a43523abee0Update Price Per...117321162021-08-23 14:58:53147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.001640808
0x2a456dd74f3aa0564da854c2b36ab63475992409e90fcf5765b6c1d02fd23526Update Price Per...117321132021-08-23 14:58:44147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.001640808
0x46ebbe594caad52dd01d905bf34c635bdf96e42fd47398801f2ca7c22c49d00eUpdate Price Per...117321102021-08-23 14:58:35147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.001640664
0xed9866ae851c55e50829c36d2039dc7c93aff8c4eed6c6139e9d64d1fbbc9324Update Price Per...117321072021-08-23 14:58:26147 days 12 hrs ago0x3a93da588954acf4d0d8f1f1a4439fa79d84cf29 IN  0xa2d1dcf89c56e1126ad94920027411afb8b28a3d0 BNB0.001640808
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xe1b600e1ee53fadad122bf3191c4e33192dafe9d4c6ffeeee60a856212ca6fba117321932021-08-23 15:02:44147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x13f54d67fa23ab3caaef681553cd996f7e9d62370 BNB
0xe1b600e1ee53fadad122bf3191c4e33192dafe9d4c6ffeeee60a856212ca6fba117321932021-08-23 15:02:44147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x824a5bd703e62f01aae3d55b6715b96ff92617750 BNB
0xf8e833e4db3f7c9f2bb4b72331f33291529fb7b7768597c7758d888b60dbcb39117321902021-08-23 15:02:35147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x13f54d67fa23ab3caaef681553cd996f7e9d62370 BNB
0xf8e833e4db3f7c9f2bb4b72331f33291529fb7b7768597c7758d888b60dbcb39117321902021-08-23 15:02:35147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x824a5bd703e62f01aae3d55b6715b96ff92617750 BNB
0x296cdb7b170bf3b2e09e65f852f0e8db2c81c05f0683d64e4c563aa18141ec9c117321872021-08-23 15:02:26147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x13f54d67fa23ab3caaef681553cd996f7e9d62370 BNB
0x296cdb7b170bf3b2e09e65f852f0e8db2c81c05f0683d64e4c563aa18141ec9c117321872021-08-23 15:02:26147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x824a5bd703e62f01aae3d55b6715b96ff92617750 BNB
0xe51eb09ab927f226f10c60ea7bfb5407b39c1178fccea29e4ef55dcec5dc1968117321832021-08-23 15:02:14147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x13f54d67fa23ab3caaef681553cd996f7e9d62370 BNB
0xe51eb09ab927f226f10c60ea7bfb5407b39c1178fccea29e4ef55dcec5dc1968117321832021-08-23 15:02:14147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x824a5bd703e62f01aae3d55b6715b96ff92617750 BNB
0xfe05262d956539d4387f0c525715651ca376c5daa93670dfaf2b23d0b15bf19c117321802021-08-23 15:02:05147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x13f54d67fa23ab3caaef681553cd996f7e9d62370 BNB
0xfe05262d956539d4387f0c525715651ca376c5daa93670dfaf2b23d0b15bf19c117321802021-08-23 15:02:05147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x824a5bd703e62f01aae3d55b6715b96ff92617750 BNB
0xb2b1ac196f16df655939b3846538812e4cb665644b2883a4bf6c18334d684c96117321772021-08-23 15:01:56147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x13f54d67fa23ab3caaef681553cd996f7e9d62370 BNB
0xb2b1ac196f16df655939b3846538812e4cb665644b2883a4bf6c18334d684c96117321772021-08-23 15:01:56147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x824a5bd703e62f01aae3d55b6715b96ff92617750 BNB
0x61f34a73798b128fa77f0a02856580617f04ab1a07f3fddaccb26b4bf0318b20117321732021-08-23 15:01:44147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x13f54d67fa23ab3caaef681553cd996f7e9d62370 BNB
0x61f34a73798b128fa77f0a02856580617f04ab1a07f3fddaccb26b4bf0318b20117321732021-08-23 15:01:44147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x824a5bd703e62f01aae3d55b6715b96ff92617750 BNB
0x5977353dfafb1d8cfae888f2c366edb1453c6a88dfb5c346b4c6942d75317510117321702021-08-23 15:01:35147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x13f54d67fa23ab3caaef681553cd996f7e9d62370 BNB
0x5977353dfafb1d8cfae888f2c366edb1453c6a88dfb5c346b4c6942d75317510117321702021-08-23 15:01:35147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x824a5bd703e62f01aae3d55b6715b96ff92617750 BNB
0x1e757ce099c6e43ef895f4f1a52070afdbaaf19f9f36288d3f02f174bde2044c117321672021-08-23 15:01:26147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x13f54d67fa23ab3caaef681553cd996f7e9d62370 BNB
0x1e757ce099c6e43ef895f4f1a52070afdbaaf19f9f36288d3f02f174bde2044c117321672021-08-23 15:01:26147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x824a5bd703e62f01aae3d55b6715b96ff92617750 BNB
0xcde7ce23fc7d65bb93239fe2a13063299ba0ed72118abf9618f8f44905fd5b1e117321632021-08-23 15:01:14147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x13f54d67fa23ab3caaef681553cd996f7e9d62370 BNB
0xcde7ce23fc7d65bb93239fe2a13063299ba0ed72118abf9618f8f44905fd5b1e117321632021-08-23 15:01:14147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x824a5bd703e62f01aae3d55b6715b96ff92617750 BNB
0x89dfd3dcbba81030a03dfb99ae5e53dfd5a3c7664c5d14a9d2055616338f9493117321602021-08-23 15:01:05147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x13f54d67fa23ab3caaef681553cd996f7e9d62370 BNB
0x89dfd3dcbba81030a03dfb99ae5e53dfd5a3c7664c5d14a9d2055616338f9493117321602021-08-23 15:01:05147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x824a5bd703e62f01aae3d55b6715b96ff92617750 BNB
0x3313733f0e230999294c3cc196bcd9324dd1f1b3c766cc6f2a3afc00f40cd5d1117321572021-08-23 15:00:56147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x13f54d67fa23ab3caaef681553cd996f7e9d62370 BNB
0x3313733f0e230999294c3cc196bcd9324dd1f1b3c766cc6f2a3afc00f40cd5d1117321572021-08-23 15:00:56147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x824a5bd703e62f01aae3d55b6715b96ff92617750 BNB
0x9bbb782d8e341d48105a876c951ace1a83ea710a285697bc3fcc6427b4e44a31117321532021-08-23 15:00:44147 days 12 hrs ago 0xa2d1dcf89c56e1126ad94920027411afb8b28a3d 0x13f54d67fa23ab3caaef681553cd996f7e9d62370 BNB
[ Download CSV Export 
Loading

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

Contract Name:
RelayProxy

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at BscScan.com on 2021-06-06
*/

pragma solidity ^0.6.0;

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly {size := extcodesize(account)}
        return size > 0;
    }

    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");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }


    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");
    }


    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);
            }
        }
    }
}

abstract contract Proxy {
    /**
     * @dev Fallback function.
     * Implemented entirely in `_fallback`.
     */
    fallback() external payable {
        _fallback();
    }

    /**
     * @dev Receive function.
     * Implemented entirely in `_fallback`.
     */
    receive() external payable {
        _fallback();
    }

    /**
     * @return The Address of the implementation.
     */
    function _implementation() internal virtual view returns (address);

    /**
     * @dev Delegates execution to an implementation contract.
     * This is a low level function that doesn't return to its internal call site.
     * It will return to the external caller whatever the implementation returns.
     * @param implementation Address to delegate.
     */
    function _delegate(address implementation) internal {
        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 Function that is run as the first thing in the fallback function.
     * Can be redefined in derived contracts to add functionality.
     * Redefinitions must call super._willFallback().
     */
    function _willFallback() internal virtual {}

    /**
     * @dev fallback implementation.
     * Extracted to enable manual triggering.
     */
    function _fallback() internal {
        _willFallback();
        _delegate(_implementation());
    }
}


contract UpgradeabilityProxy is Proxy {
    constructor(address _logic, bytes memory _data) public payable {
        assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1));
        _setImplementation(_logic);
        if (_data.length > 0) {
            (bool success,) = _logic.delegatecall(_data);
            require(success);
        }
    }

    /**
     * @dev Emitted when the implementation is upgraded.
     * @param implementation Address of the new implementation.
     */
    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 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @dev Returns the current implementation.
     * @return impl Address of the current implementation
     */
    function _implementation() internal override view returns (address impl) {
        bytes32 slot = IMPLEMENTATION_SLOT;
        assembly {
            impl := sload(slot)
        }
    }

    /**
     * @dev Upgrades the proxy to a new implementation.
     * @param newImplementation Address of the new implementation.
     */
    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Sets the implementation address of the proxy.
     * @param newImplementation Address of the new implementation.
     */
    function _setImplementation(address newImplementation) internal {
        require(Address.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address");

        bytes32 slot = IMPLEMENTATION_SLOT;

        assembly {
            sstore(slot, newImplementation)
        }
    }
}


contract RelayProxy is UpgradeabilityProxy {
    /**
     * Contract constructor.
     * @param _logic address of the initial implementation.
     * @param _admin Address of the proxy administrator.
     * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.
     * It should include the signature and the parameters of the function to be called, as described in
     * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
     * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.
     */
    constructor(
        address _logic,
        address _admin,
        bytes memory _data
    ) public payable UpgradeabilityProxy(_logic, _data) {
        assert(
            ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1)
        );
        _setAdmin(_admin);
    }

    /**
     * @dev Emitted when the administration has been transferred.
     * @param previousAdmin Address of the previous admin.
     * @param newAdmin Address of the new admin.
     */
    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 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /**
     * @dev Modifier to check whether the `msg.sender` is the admin.
     * If it is, it will run the function. Otherwise, it will delegate the call
     * to the implementation.
     */
    modifier ifAdmin() {
        if (msg.sender == _admin()) {
            _;
        } else {
            _fallback();
        }
    }

    /**
     * @return The address of the proxy admin.
     */
    function admin() external ifAdmin returns (address) {
        return _admin();
    }

    /**
     * @return The address of the implementation.
     */
    function implementation() external ifAdmin returns (address) {
        return _implementation();
    }

    /**
     * @dev Changes the admin of the proxy.
     * Only the current admin can call this function.
     * @param newAdmin Address to transfer proxy administration to.
     */
    function changeAdmin(address newAdmin) external ifAdmin {
        require(
            newAdmin != address(0),
            "Cannot change the admin of a proxy to the zero address"
        );
        emit AdminChanged(_admin(), newAdmin);
        _setAdmin(newAdmin);
    }

    /**
     * @dev Upgrade the backing implementation of the proxy.
     * Only the admin can call this function.
     * @param newImplementation Address of the new implementation.
     */
    function upgradeTo(address newImplementation) external ifAdmin {
        _upgradeTo(newImplementation);
    }

    /**
     * @dev Upgrade the backing implementation of the proxy and call a function
     * on the new implementation.
     * This is useful to initialize the proxied contract.
     * @param newImplementation Address of the new implementation.
     * @param data Data to send as msg.data in the low level call.
     * It should include the signature and the parameters of the function to be called, as described in
     * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
     */
    function upgradeToAndCall(address newImplementation, bytes calldata data)
    external
    payable
    ifAdmin
    {
        _upgradeTo(newImplementation);
        (bool success,) = newImplementation.delegatecall(data);
        require(success);
    }

    /**
     * @return adm The admin slot.
     */
    function _admin() public view returns (address adm) {
        bytes32 slot = ADMIN_SLOT;
        assembly {
            adm := sload(slot)
        }
    }

    function _logic() public view returns (address adm) {
        bytes32 slot = IMPLEMENTATION_SLOT;
        assembly {
            adm := sload(slot)
        }
    }

    /**
     * @dev Sets the address of the proxy admin.
     * @param newAdmin Address of the new proxy admin.
     */
    function _setAdmin(address newAdmin) internal {
        bytes32 slot = ADMIN_SLOT;

        assembly {
            sstore(slot, newAdmin)
        }
    }
}

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":"adm","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_logic","outputs":[{"internalType":"address","name":"adm","type":"address"}],"stateMutability":"view","type":"function"},{"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"}]

60806040526040516108903803806108908339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b50604052508491508290506100ee826101bf565b8051156101a6576000826001600160a01b0316826040518082805190602001908083835b602083106101315780518252601f199092019160209182019101610112565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610191576040519150601f19603f3d011682016040523d82523d6000602084013e610196565b606091505b50509050806101a457600080fd5b505b506101ae9050565b6101b782610231565b50505061025b565b6101d28161025560201b61044e1760201c565b61020d5760405162461bcd60e51b815260040180806020018281038252603b815260200180610855603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b3b151590565b6105eb8061026a6000396000f3fe6080604052600436106100745760003560e01c80635c60da1b1161004e5780635c60da1b1461016f5780638f28397014610184578063ed7ede68146101b7578063f851a440146101cc57610083565b806301bc45c91461008b5780633659cfe6146100bc5780634f1ef286146100ef57610083565b36610083576100816101e1565b005b6100816101e1565b34801561009757600080fd5b506100a06101fb565b604080516001600160a01b039092168252519081900360200190f35b3480156100c857600080fd5b50610081600480360360208110156100df57600080fd5b50356001600160a01b0316610220565b6100816004803603604081101561010557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561013057600080fd5b82018360208201111561014257600080fd5b8035906020019184600183028401116401000000008311171561016457600080fd5b50909250905061025a565b34801561017b57600080fd5b506100a0610307565b34801561019057600080fd5b50610081600480360360208110156101a757600080fd5b50356001600160a01b0316610344565b3480156101c357600080fd5b506100a06103fe565b3480156101d857600080fd5b506100a0610423565b6101e96101f9565b6101f96101f46103fe565b610454565b565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6102286101fb565b6001600160a01b0316336001600160a01b0316141561024f5761024a81610478565b610257565b6102576101e1565b50565b6102626101fb565b6001600160a01b0316336001600160a01b031614156102fa5761028483610478565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102e1576040519150601f19603f3d011682016040523d82523d6000602084013e6102e6565b606091505b50509050806102f457600080fd5b50610302565b6103026101e1565b505050565b60006103116101fb565b6001600160a01b0316336001600160a01b03161415610339576103326103fe565b9050610341565b6103416101e1565b90565b61034c6101fb565b6001600160a01b0316336001600160a01b0316141561024f576001600160a01b0381166103aa5760405162461bcd60e51b81526004018080602001828103825260368152602001806105456036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103d36101fb565b604080516001600160a01b03928316815291841660208301528051918290030190a161024a816104b8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b600061042d6101fb565b6001600160a01b0316336001600160a01b03161415610339576103326101fb565b3b151590565b3660008037600080366000845af43d6000803e808015610473573d6000f35b3d6000fd5b610481816104dc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b6104e58161044e565b6105205760405162461bcd60e51b815260040180806020018281038252603b81526020018061057b603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f206164647265737343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220694c6588db96fb58d1506d6af8de989641c9ae2686a55393b5eedba5c9b770ce64736f6c634300060c003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e7472616374206164647265737300000000000000000000000091c1314e5099b609194027907d2724fcde314697000000000000000000000000df7da4b504a2dd305eca158935ff174f7cab4dfa00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

6938:4494:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2948:11;:9;:11::i;:::-;6938:4494;;2789:11;:9;:11::i;10803:159::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;10803:159:0;;;;;;;;;;;;;;9823:111;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9823:111:0;-1:-1:-1;;;;;9823:111:0;;:::i;10482:259::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10482:259:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10482:259:0;;-1:-1:-1;10482:259:0;-1:-1:-1;10482:259:0;:::i;9042:104::-;;;;;;;;;;;;;:::i;9341:279::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9341:279:0;-1:-1:-1;;;;;9341:279:0;;:::i;10970:168::-;;;;;;;;;;;;;:::i;8879:86::-;;;;;;;;;;;;;:::i;4782:103::-;4823:15;:13;:15::i;:::-;4849:28;4859:17;:15;:17::i;:::-;4849:9;:28::i;:::-;4782:103::o;10803:159::-;8393:66;10933:11;;10911:44::o;9823:111::-;8716:8;:6;:8::i;:::-;-1:-1:-1;;;;;8702:22:0;:10;-1:-1:-1;;;;;8702:22:0;;8698:100;;;9897:29:::1;9908:17;9897:10;:29::i;:::-;8698:100:::0;;;8775:11;:9;:11::i;:::-;9823:111;:::o;10482:259::-;8716:8;:6;:8::i;:::-;-1:-1:-1;;;;;8702:22:0;:10;-1:-1:-1;;;;;8702:22:0;;8698:100;;;10612:29:::1;10623:17;10612:10;:29::i;:::-;10653:12;10670:17;-1:-1:-1::0;;;;;10670:30:0::1;10701:4;;10670:36;;;;;;;;;;::::0;;::::1;::::0;-1:-1:-1;10670:36:0::1;::::0;-1:-1:-1;10670:36:0;;-1:-1:-1;;10670:36:0;;::::1;::::0;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10652:54;;;10725:7;10717:16;;;::::0;::::1;;8741:1;8698:100:::0;;;8775:11;:9;:11::i;:::-;10482:259;;;:::o;9042:104::-;9094:7;8716:8;:6;:8::i;:::-;-1:-1:-1;;;;;8702:22:0;:10;-1:-1:-1;;;;;8702:22:0;;8698:100;;;9121:17:::1;:15;:17::i;:::-;9114:24;;8698:100:::0;;;8775:11;:9;:11::i;:::-;9042:104;:::o;9341:279::-;8716:8;:6;:8::i;:::-;-1:-1:-1;;;;;8702:22:0;:10;-1:-1:-1;;;;;8702:22:0;;8698:100;;;-1:-1:-1;;;;;9430:22:0;::::1;9408:126;;;;-1:-1:-1::0;;;9408:126:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9550:32;9563:8;:6;:8::i;:::-;9550:32;::::0;;-1:-1:-1;;;;;9550:32:0;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;9593:19;9603:8;9593:9;:19::i;10970:168::-:0;5762:66;11109:11;;11087:44::o;8879:86::-;8922:7;8716:8;:6;:8::i;:::-;-1:-1:-1;;;;;8702:22:0;:10;-1:-1:-1;;;;;8702:22:0;;8698:100;;;8949:8:::1;:6;:8::i;50:229::-:0;225:20;263:8;;;50:229::o;3419:980::-;3742:14;3739:1;3736;3723:34;4031:1;4015;3986:14;3970:1;3941:14;3921:5;3894:153;4120:16;4117:1;4114;4099:38;4160:6;4229:68;;;;4349:16;4346:1;4338:28;4229:68;4265:16;4262:1;4255:27;6304:155;6371:37;6390:17;6371:18;:37::i;:::-;6424:27;;-1:-1:-1;;;;;6424:27:0;;;;;;;;6304:155;:::o;11270:159::-;8393:66;11389:22;11374:48::o;6612:317::-;6695:37;6714:17;6695:18;:37::i;:::-;6687:109;;;;-1:-1:-1;;;6687:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5762:66;6880:31;6865:57::o

Swarm Source

ipfs://694c6588db96fb58d1506d6af8de989641c9ae2686a55393b5eedba5c9b770ce
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading