Contract 0x431d5dff03120afa4bdf332c61a6e1766ef37bdb 8

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x357babbc242b602f08a0c501c5ed7b122812d64ff8042f3287d9a7c7063da591Transfer435024642023-06-04 2:05:191 hr 5 mins ago0x80660c6e155fa434b171647e56043c1ca492f147 IN  JPY Coin: JPYC Token0 MATIC0.006793612526 147.456427471
0xd21a4289582914d9f9f49db1ef27cedd152aab7db76f548fc1a2c0b2a7f91dd0Transfer434991852023-06-04 0:03:043 hrs 7 mins ago0xfadb53eb052813a8e752c5788efdeaec41b5047a IN  JPY Coin: JPYC Token0 MATIC0.006949943127 150.849607736
0x883c73f7e80e1c86acd83bcb7fd637336102c128244fcb13b84f25f31b6664baApprove434976642023-06-03 23:07:034 hrs 3 mins ago 0xmonarch.888  IN  JPY Coin: JPYC Token0 MATIC0.006117348603 161.860311263
0x6b70bba5313282ab3e2757c8eb6b969c492bd58b58a6fffb6c37adf882c5ce6fApprove434976602023-06-03 23:06:534 hrs 3 mins ago 0xmonarch.888  IN  JPY Coin: JPYC Token0 MATIC0.005252188371 146.733764653
0x151400de3de3e36db88434be3160c3b213c10e73996308c5496c2a45d9bcb745Transfer434923442023-06-03 19:50:497 hrs 19 mins ago0xd489520c9cc56e45aa837c8db5b4d2a67bca0521 IN  JPY Coin: JPYC Token0 MATIC0.0138252 300
0xa2fd16b8a65ba4d370400241ad45e715dc5f1b337d80eb7a1b178c3895e4d025Approve434914362023-06-03 19:15:217 hrs 54 mins ago0x4a65e2970bee853fc67f168222865dd0aa1e87d9 IN  JPY Coin: JPYC Token0 MATIC0.008992496204 155.606440638
0xb49c60f8a9cf9e117c9c345ab4327be6704b4903800aae3a24cc830090f4986dTransfer434903922023-06-03 18:34:498 hrs 35 mins ago0x2f505d09713df2c7d6b5f397bdb249ba545e1dee IN  JPY Coin: JPYC Token0 MATIC0.009272468736 146.781307172
0x94820d262156fa948ac11368bcf374b871dd5fa000620ae40784c62852d9d18eTransfer434903402023-06-03 18:32:378 hrs 37 mins ago0x826ff2bede5120c0a591c6601f20c3b7438cf6de IN  JPY Coin: JPYC Token0 MATIC0.0091535781 156.814536084
0x24719971eb64930c61e0088f4f04cd5d51df52b51393968a9f61a2ed7a3a4a4dTransfer434881882023-06-03 17:10:229 hrs 59 mins ago0x9f21f6008cf442f38232cf5b638b0abd6a230d5e IN  JPY Coin: JPYC Token0 MATIC0.007095088154
0xb635a607dd41087f1556fe75ecd05e1383c099e15e37c8171b1c6721753aad82Transfer434880362023-06-03 17:04:5810 hrs 5 mins ago0x9f21f6008cf442f38232cf5b638b0abd6a230d5e IN  JPY Coin: JPYC Token0 MATIC0.007970456173
0xd87caf158b02e5d762c49a54a46a33ad9c34d1fa01e4eecc3c0e1835405dcb90Transfer434875712023-06-03 16:47:2210 hrs 22 mins ago0x9f21f6008cf442f38232cf5b638b0abd6a230d5e IN  JPY Coin: JPYC Token0 MATIC0.006404008139
0xf6118033ae1f7d5f53081d1a43abf2bdc0e812793930e8253dd820d0d97d0379Transfer434869752023-06-03 16:24:2810 hrs 45 mins ago0x9f21f6008cf442f38232cf5b638b0abd6a230d5e IN  JPY Coin: JPYC Token0 MATIC0.00714116155
0xf648afe36b28356f0d410127ab37c07cac237712e3c702b93d0935b4c31b7219Transfer434864332023-06-03 16:04:0311 hrs 6 mins ago0xd489520c9cc56e45aa837c8db5b4d2a67bca0521 IN  JPY Coin: JPYC Token0 MATIC0.0189552 300
0x4e55a167a98d164907bae118533e77f488238f6a57f4b863046bcddb0a213924Transfer434863052023-06-03 15:58:5911 hrs 11 mins ago0x9f21f6008cf442f38232cf5b638b0abd6a230d5e IN  JPY Coin: JPYC Token0 MATIC0.007187232156
0xb1f5a06209ae28eac17d858a909a321d8c102a6e3870474db42d8714855a112bTransfer434857112023-06-03 15:36:1511 hrs 34 mins ago0x9f21f6008cf442f38232cf5b638b0abd6a230d5e IN  JPY Coin: JPYC Token0 MATIC0.00737152160
0x73f864611a86f9cb86355af2022098357f72928b0355d48644db82e0b9b0c144Approve434839342023-06-03 14:28:1712 hrs 42 mins ago0xa1b2279f0bd69439d57db476673b9de6031e2e26 IN  JPY Coin: JPYC Token0 MATIC0.008725901317 151.150204697
0xddcf29a259e27267b1af3899b33f3ef1293ad8c6a6dd3ab785d725bbace730e5Approve434838452023-06-03 14:25:0912 hrs 45 mins ago0xa1b2279f0bd69439d57db476673b9de6031e2e26 IN  JPY Coin: JPYC Token0 MATIC0.006546772044 172.783638024
0x32aa744546ddb4f3d2d0ce70bfa5dfdbf6d541747f8b558523a61c916c7053e0Approve434838062023-06-03 14:23:4512 hrs 46 mins ago0xa1b2279f0bd69439d57db476673b9de6031e2e26 IN  JPY Coin: JPYC Token0 MATIC0.008924869142 154.436219804
0xc1c12cb0765dfb069f27a89d2729039a8d9eaf08d937921c42be9d65be0a39aaApprove434830622023-06-03 13:55:4213 hrs 14 mins ago pajcall36.wallet  IN  JPY Coin: JPYC Token0 MATIC0.009064915644156.89216734
0x12a773e76d58091b2f3d43e5340e217be89467c553624fab9a1b56d514f17f81Transfer434826022023-06-03 13:38:1313 hrs 32 mins ago0xdc0cb1d70709917694c2dab42aee36e69135748e IN  JPY Coin: JPYC Token0 MATIC0.006602910667 163.535532678
0x1e28df0a0f5fba72ea3ceb8281e0da085275dee5faa76690b6d9026806db0647Transfer434825732023-06-03 13:37:1113 hrs 33 mins ago0xdc0cb1d70709917694c2dab42aee36e69135748e IN  JPY Coin: JPYC Token0 MATIC0.006723101006 166.512309443
0x9718c4f1d8029b66a55529f7a16843f037d2b6835c46a6eb5c3232982c69b033Approve434824952023-06-03 13:34:2513 hrs 35 mins ago0xf689b2916ef72b2a0b367e82c6de0da92298d5e2 IN  JPY Coin: JPYC Token0 MATIC0.005637457457 157.497274887
0x086e02d879681bf25aff5e8d7f4c04e7dbb02de5bdba66a6763a94819e46b2ebTransfer434789582023-06-03 11:23:4915 hrs 46 mins ago0xb0d0b2d1f7edbe7b591bdd58dd869ccf6c1a5112 IN  JPY Coin: JPYC Token0 MATIC0.008339032181
0x636fac817bf35607bbe78139e4fc31f1cdb135b15b130e667474ddb231683f5aTransfer434787152023-06-03 11:14:5315 hrs 55 mins ago0xb0d0b2d1f7edbe7b591bdd58dd869ccf6c1a5112 IN  JPY Coin: JPYC Token0 MATIC0.008477248184
0xd409aa848890a4c55f1439da1c84fada43d2da1c2889e9662da2606719df9e5dTransfer434786812023-06-03 11:13:4115 hrs 56 mins ago0xa90c6f7f2bb68d77a4f7c6a06ba800f6908abb91 IN  JPY Coin: JPYC Token0 MATIC0.006876537637 149.256330036
[ Download CSV Export 

OVERVIEW

JPYC is a fast-growing multi-chain ERC20 token and it is a Japanese yen stable coin which allows users to have an easier way to go on/off-ramp of the cryptocurrency world mainly in Japan.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ERC1967Proxy

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 3000 runs

Other Settings:
default evmVersion, Audited
File 1 of 6 : ERC1967Proxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)

pragma solidity 0.8.11;

import "./Proxy.sol";
import "../upgradeability/ERC1967Upgrade.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.
 */
contract ERC1967Proxy is Proxy, ERC1967Upgrade {
    /**
     * @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));
        _upgradeToAndCall(_logic, _data, false);
    }

    /**
     * @dev Returns the current implementation address.
     */
    function _implementation() internal view virtual override returns (address impl) {
        return ERC1967Upgrade._getImplementation();
    }
}

File 2 of 6 : Proxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (proxy/Proxy.sol)

pragma solidity 0.8.11;

/**
 * @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 internal call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        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 3 of 6 : ERC1967Upgrade.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Upgrade.sol)

pragma solidity 0.8.11;

import "./draft-IERC1822.sol";
import "../util/Address.sol";
import "../util/StorageSlot.sol";

/**
 * @dev This abstract contract provides getters and event emitting update functions for
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.
 *
 * _Available since v4.1._
 *
 * @custom:oz-upgrades-unsafe-allow delegatecall
 */
abstract contract ERC1967Upgrade {
    // This is the keccak-256 hash of "eip1967.proxy.rollback" subtracted by 1
    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;

    /**
     * @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 Emitted when the implementation is upgraded.
     */
    event Upgraded(address indexed implementation);

    /**
     * @dev Returns the current implementation address.
     */
    function _getImplementation() internal view returns (address) {
        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
    }

    /**
     * @dev Stores a new address in the EIP1967 implementation slot.
     */
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
    }

    /**
     * @dev Perform implementation upgrade
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Perform implementation upgrade with additional setup call.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeToAndCall(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        _upgradeTo(newImplementation);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(newImplementation, data);
        }
    }

    /**
     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeToAndCallUUPS(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        // Upgrades from old implementations will perform a rollback test. This test requires the new
        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing
        // this special case will break upgrade paths from old UUPS implementation to new ones.
        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {
            _setImplementation(newImplementation);
        } else {
            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {
                require(slot == _IMPLEMENTATION_SLOT, "ERC1967Upgrade: unsupported proxiableUUID");
            } catch {
                revert("ERC1967Upgrade: new implementation is not UUPS");
            }
            _upgradeToAndCall(newImplementation, data, forceCall);
        }
    }
 
    uint256[50] private _gap;
}

File 4 of 6 : draft-IERC1822.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.x.0 (proxy/ERC1822/IProxiable.sol)

pragma solidity 0.8.11;

/**
 * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified
 * proxy whose upgrades are fully controlled by the current implementation.
 */
interface IERC1822Proxiable {
    /**
     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation
     * address.
     *
     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks
     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this
     * function revert if invoked through a proxy.
     */
    function proxiableUUID() external view returns (bytes32);
}

File 5 of 6 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Address.sol)

pragma solidity 0.8.11;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     * @dev Forked from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/4961a51cc736c7d4aa9bd2e11e4cbbaff73efee9/contracts/utils/Context.sol
     * Modifications:
     * 1. Change solidity version to 0.8.11
     *
     * [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;
        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");

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

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

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

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal 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

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 6 of 6 : StorageSlot.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.11;

/**
 * @dev Forked from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/4961a51cc736c7d4aa9bd2e11e4cbbaff73efee9/contracts/utils/StorageSlot.sol
 * Modifications:
 * 1. Change solidity version to 0.8.11
 */
/**
 * @dev Library for reading and writing primitive types to specific storage slots.
 *
 * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
 * This library helps with reading and writing to such slots without the need for inline assembly.
 *
 * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
 *
 * Example usage to set ERC1967 implementation slot:
 * ```
 * contract ERC1967 {
 *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
 *
 *     function _getImplementation() internal view returns (address) {
 *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
 *     }
 *
 *     function _setImplementation(address newImplementation) internal {
 *         require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
 *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
 *     }
 * }
 * ```
 *
 * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._
 */
library StorageSlot {
    struct AddressSlot {
        address value;
    }

    struct BooleanSlot {
        bool value;
    }

    struct Bytes32Slot {
        bytes32 value;
    }

    struct Uint256Slot {
        uint256 value;
    }

    /**
     * @dev Returns an `AddressSlot` with member `value` located at `slot`.
     */
    function getAddressSlot(bytes32 slot)
        internal
        pure
        returns (AddressSlot storage r)
    {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.
     */
    function getBooleanSlot(bytes32 slot)
        internal
        pure
        returns (BooleanSlot storage r)
    {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
     */
    function getBytes32Slot(bytes32 slot)
        internal
        pure
        returns (Bytes32Slot storage r)
    {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.
     */
    function getUint256Slot(bytes32 slot)
        internal
        pure
        returns (Uint256Slot storage r)
    {
        assembly {
            r.slot := slot
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 3000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

608060405260405161081038038061081083398101604081905261002291610337565b61004d60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd610405565b6000805160206107c9833981519152146100695761006961042a565b6100758282600061007c565b505061048f565b610085836100b2565b6000825111806100925750805b156100ad576100ab83836100f260201b6100291760201c565b505b505050565b6100bb8161011e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061011783836040518060600160405280602781526020016107e9602791396101de565b9392505050565b610131816102b360201b6100551760201c565b6101985760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101bd6000805160206107c983398151915260001b6102b960201b61005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060833b61023d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161018f565b600080856001600160a01b0316856040516102589190610440565b600060405180830381855af49150503d8060008114610293576040519150601f19603f3d011682016040523d82523d6000602084013e610298565b606091505b5090925090506102a98282866102bc565b9695505050505050565b3b151590565b90565b606083156102cb575081610117565b8251156102db5782518084602001fd5b8160405162461bcd60e51b815260040161018f919061045c565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561032657818101518382015260200161030e565b838111156100ab5750506000910152565b6000806040838503121561034a57600080fd5b82516001600160a01b038116811461036157600080fd5b60208401519092506001600160401b038082111561037e57600080fd5b818501915085601f83011261039257600080fd5b8151818111156103a4576103a46102f5565b604051601f8201601f19908116603f011681019083821181831017156103cc576103cc6102f5565b816040528281528860208487010111156103e557600080fd5b6103f683602083016020880161030b565b80955050505050509250929050565b60008282101561042557634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825161045281846020870161030b565b9190910192915050565b602081526000825180602084015261047b81604085016020870161030b565b601f01601f19169190910160400192915050565b61032b8061049e6000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b6100a3565b565b606061004e83836040518060600160405280602781526020016102cf602791396100c7565b9392505050565b3b151590565b90565b600061009e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156100c2573d6000f35b3d6000fd5b6060833b61015c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516101849190610261565b600060405180830381855af49150503d80600081146101bf576040519150601f19603f3d011682016040523d82523d6000602084013e6101c4565b606091505b50915091506101d48282866101de565b9695505050505050565b606083156101ed57508161004e565b8251156101fd5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610153919061027d565b60005b8381101561024c578181015183820152602001610234565b8381111561025b576000848401525b50505050565b60008251610273818460208701610231565b9190910192915050565b602081526000825180602084015261029c816040850160208701610231565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b0a5faa5602bd73f57f265e4e3fefd57eb9d322bf791c61bcc22ca3443ce924d64736f6c634300080b0033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564000000000000000000000000f2fab05f26dc8da5a3f24d015fb043db7a8751cf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e474ebf6730000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000c6b1dc6c9ff85e968527f5c755fc07253a0842470000000000000000000000008869bcc9c9530b00c56df5e6e0a721ca3b94bf2300000000000000000000000009696fe6eff5745359345387acb6f3a5b324e87800000000000000000000000009696fe6eff5745359345387acb6f3a5b324e87800000000000000000000000031735b5db5850f66082cc0f1a61ca1a8e07a60a500000000000000000000000000000000000000000000000000000000000000084a505920436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044a5059430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034a5059000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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

000000000000000000000000f2fab05f26dc8da5a3f24d015fb043db7a8751cf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e474ebf6730000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000c6b1dc6c9ff85e968527f5c755fc07253a0842470000000000000000000000008869bcc9c9530b00c56df5e6e0a721ca3b94bf2300000000000000000000000009696fe6eff5745359345387acb6f3a5b324e87800000000000000000000000009696fe6eff5745359345387acb6f3a5b324e87800000000000000000000000031735b5db5850f66082cc0f1a61ca1a8e07a60a500000000000000000000000000000000000000000000000000000000000000084a505920436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044a5059430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034a5059000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _logic (address): 0xf2fab05f26dc8da5a3f24d015fb043db7a8751cf
Arg [1] : _data (bytes): 0x74ebf6730000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000c6b1dc6c9ff85e968527f5c755fc07253a0842470000000000000000000000008869bcc9c9530b00c56df5e6e0a721ca3b94bf2300000000000000000000000009696fe6eff5745359345387acb6f3a5b324e87800000000000000000000000009696fe6eff5745359345387acb6f3a5b324e87800000000000000000000000031735b5db5850f66082cc0f1a61ca1a8e07a60a500000000000000000000000000000000000000000000000000000000000000084a505920436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044a5059430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034a50590000000000000000000000000000000000000000000000000000000000

-----Encoded View---------------
19 Constructor Arguments found :
Arg [0] : 000000000000000000000000f2fab05f26dc8da5a3f24d015fb043db7a8751cf
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 00000000000000000000000000000000000000000000000000000000000001e4
Arg [3] : 74ebf67300000000000000000000000000000000000000000000000000000000
Arg [4] : 0000012000000000000000000000000000000000000000000000000000000000
Arg [5] : 0000016000000000000000000000000000000000000000000000000000000000
Arg [6] : 000001a000000000000000000000000000000000000000000000000000000000
Arg [7] : 00000012000000000000000000000000c6b1dc6c9ff85e968527f5c755fc0725
Arg [8] : 3a0842470000000000000000000000008869bcc9c9530b00c56df5e6e0a721ca
Arg [9] : 3b94bf2300000000000000000000000009696fe6eff5745359345387acb6f3a5
Arg [10] : b324e87800000000000000000000000009696fe6eff5745359345387acb6f3a5
Arg [11] : b324e87800000000000000000000000031735b5db5850f66082cc0f1a61ca1a8
Arg [12] : e07a60a500000000000000000000000000000000000000000000000000000000
Arg [13] : 000000084a505920436f696e0000000000000000000000000000000000000000
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [15] : 000000044a505943000000000000000000000000000000000000000000000000
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [17] : 000000034a505900000000000000000000000000000000000000000000000000
Arg [18] : 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
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.