ETH Price: $3,517.10 (-1.19%)

Contract

0x3Ec8E19306DF5A262b365E433Dd9A2A137a92FC3
 

Overview

ETH Balance

0.521374769502436742 ETH

ETH Value

$1,833.73 (@ $3,517.10/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value

There are no matching entries

Please try again later

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
1127707402023-11-28 2:57:37205 days ago1701140257
0x3Ec8E193...137a92FC3
0.00493318 ETH
1127707402023-11-28 2:57:37205 days ago1701140257
0x3Ec8E193...137a92FC3
0.00004933 ETH
1127707402023-11-28 2:57:37205 days ago1701140257
0x3Ec8E193...137a92FC3
0.00498251 ETH
1127700592023-11-28 2:34:55205 days ago1701138895
0x3Ec8E193...137a92FC3
0.00494099 ETH
1127700592023-11-28 2:34:55205 days ago1701138895
0x3Ec8E193...137a92FC3
0.0000494 ETH
1127700592023-11-28 2:34:55205 days ago1701138895
0x3Ec8E193...137a92FC3
0.0049904 ETH
1127697022023-11-28 2:23:01205 days ago1701138181
0x3Ec8E193...137a92FC3
0.00494099 ETH
1127697022023-11-28 2:23:01205 days ago1701138181
0x3Ec8E193...137a92FC3
0.0000494 ETH
1127697022023-11-28 2:23:01205 days ago1701138181
0x3Ec8E193...137a92FC3
0.0049904 ETH
1127694842023-11-28 2:15:45205 days ago1701137745
0x3Ec8E193...137a92FC3
0.00494875 ETH
1127694842023-11-28 2:15:45205 days ago1701137745
0x3Ec8E193...137a92FC3
0.00004948 ETH
1127694842023-11-28 2:15:45205 days ago1701137745
0x3Ec8E193...137a92FC3
0.00499824 ETH
1127694822023-11-28 2:15:41205 days ago1701137741
0x3Ec8E193...137a92FC3
0.00494875 ETH
1127694822023-11-28 2:15:41205 days ago1701137741
0x3Ec8E193...137a92FC3
0.00004948 ETH
1127694822023-11-28 2:15:41205 days ago1701137741
0x3Ec8E193...137a92FC3
0.00499824 ETH
1127693802023-11-28 2:12:17205 days ago1701137537
0x3Ec8E193...137a92FC3
0.00247056 ETH
1127693802023-11-28 2:12:17205 days ago1701137537
0x3Ec8E193...137a92FC3
0.0000247 ETH
1127693802023-11-28 2:12:17205 days ago1701137537
0x3Ec8E193...137a92FC3
0.00249527 ETH
1127691852023-11-28 2:05:47205 days ago1701137147
0x3Ec8E193...137a92FC3
0.00494113 ETH
1127691852023-11-28 2:05:47205 days ago1701137147
0x3Ec8E193...137a92FC3
0.00004941 ETH
1127691852023-11-28 2:05:47205 days ago1701137147
0x3Ec8E193...137a92FC3
0.00499054 ETH
1127685052023-11-28 1:43:07205 days ago1701135787
0x3Ec8E193...137a92FC3
0.00246688 ETH
1127685052023-11-28 1:43:07205 days ago1701135787
0x3Ec8E193...137a92FC3
0.00002466 ETH
1127685052023-11-28 1:43:07205 days ago1701135787
0x3Ec8E193...137a92FC3
0.00249155 ETH
1127683722023-11-28 1:38:41205 days ago1701135521
0x3Ec8E193...137a92FC3
0.00493376 ETH
View All Internal Transactions

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PermissionedStableFeeMiddleware

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
london EvmVersion
File 1 of 8 : PermissionedStableFeeMiddleware.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity 0.8.14;

import { AggregatorV3Interface } from "chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";
import { ReentrancyGuard } from "openzeppelin-contracts/contracts/security/ReentrancyGuard.sol";

import { ICyberIdMiddleware } from "../../interfaces/ICyberIdMiddleware.sol";
import { ITokenReceiver } from "../../interfaces/ITokenReceiver.sol";

import { DataTypes } from "../../libraries/DataTypes.sol";

import { LowerCaseCyberIdMiddleware } from "./base/LowerCaseCyberIdMiddleware.sol";
import { EIP712 } from "../../base/EIP712.sol";

contract PermissionedStableFeeMiddleware is
    LowerCaseCyberIdMiddleware,
    EIP712,
    ReentrancyGuard
{
    /*//////////////////////////////////////////////////////////////
                            STORAGE
    //////////////////////////////////////////////////////////////*/

    /**
     * @notice ETH/USD Oracle address.
     */
    AggregatorV3Interface public immutable usdOracle;

    /**
     * @notice TokenReceiver contract address.
     */
    ITokenReceiver public immutable tokenReceiver;

    /**
     * If true, the middleware will charge the fee to token receiver.
     */
    bool public rebateEnabled;

    /**
     * @notice The address that receives the fee.
     */
    address public recipient;

    /**
     * @notice The price of each letter in USD.
     */
    uint256 public price1Letter;
    uint256 public price2Letter;
    uint256 public price3Letter;
    uint256 public price4Letter;
    uint256 public price5Letter;
    uint256 public price6Letter;
    uint256 public price7To11Letter;
    uint256 public price12AndMoreLetter;

    /**
     * @notice Signer that approve meta transactions.
     */
    address public signer;

    /**
     * @notice User nonces that prevents signature replay.
     */
    mapping(address => uint256) public nonces;

    bytes32 internal constant _REGISTER_TYPEHASH =
        keccak256(
            "register(string cid,address to,uint256 nonce,uint256 deadline,bool free)"
        );

    /*//////////////////////////////////////////////////////////////
                            EVENTS
    //////////////////////////////////////////////////////////////*/

    event SignerChanged(address indexed signer);

    event StableFeeChanged(
        bool rebateEnabled,
        address indexed recipient,
        uint256 price1Letter,
        uint256 price2Letter,
        uint256 price3Letter,
        uint256 price4Letter,
        uint256 price5Letter,
        uint256 price6Letter,
        uint256 price7To11Letter,
        uint256 price12AndMoreLetter
    );

    /*//////////////////////////////////////////////////////////////
                            CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        address _oracleAddress,
        address _tokenReceiver,
        address cyberId
    ) LowerCaseCyberIdMiddleware(cyberId) {
        usdOracle = AggregatorV3Interface(_oracleAddress);
        tokenReceiver = ITokenReceiver(_tokenReceiver);
    }

    /*//////////////////////////////////////////////////////////////
                    ICyberIdMiddleware OVERRIDES
    //////////////////////////////////////////////////////////////*/

    /// @inheritdoc ICyberIdMiddleware
    function setMwData(bytes calldata data) external override onlyNameRegistry {
        (
            bool _rebateEnabled,
            address newSigner,
            address _recipient,
            uint256[8] memory prices
        ) = abi.decode(data, (bool, address, address, uint256[8]));
        require(newSigner != address(0), "INVALID_SIGNER");
        signer = newSigner;
        rebateEnabled = _rebateEnabled;
        emit SignerChanged(signer);
        recipient = _recipient;
        price1Letter = prices[0];
        price2Letter = prices[1];
        price3Letter = prices[2];
        price4Letter = prices[3];
        price5Letter = prices[4];
        price6Letter = prices[5];
        price7To11Letter = prices[6];
        price12AndMoreLetter = prices[7];
        emit StableFeeChanged(
            _rebateEnabled,
            _recipient,
            prices[0],
            prices[1],
            prices[2],
            prices[3],
            prices[4],
            prices[5],
            prices[6],
            prices[7]
        );
    }

    /// @inheritdoc ICyberIdMiddleware
    function preRegister(
        DataTypes.RegisterCyberIdParams calldata params,
        bytes calldata data
    ) external payable override onlyNameRegistry returns (uint256) {
        DataTypes.EIP712Signature memory sig;
        bool free;
        (sig.v, sig.r, sig.s, sig.deadline, free) = abi.decode(
            data,
            (uint8, bytes32, bytes32, uint256, bool)
        );

        _requiresExpectedSigner(
            _hashTypedDataV4(
                keccak256(
                    abi.encode(
                        _REGISTER_TYPEHASH,
                        keccak256(bytes(params.cid)),
                        params.to,
                        nonces[params.to]++,
                        sig.deadline,
                        free
                    )
                )
            ),
            signer,
            sig.v,
            sig.r,
            sig.s,
            sig.deadline
        );
        if (free) {
            return 0;
        } else {
            uint256 cost = getPriceWei(params.cid);
            _chargeAndRefundOverPayment(cost, params.to, params.msgSender);
            return cost;
        }
    }

    /// @inheritdoc ICyberIdMiddleware
    function skipCommit() external pure virtual override returns (bool) {
        return true;
    }

    /*//////////////////////////////////////////////////////////////
                            PUBLIC VIEW
    //////////////////////////////////////////////////////////////*/

    function getPriceWei(string calldata cid) public view returns (uint256) {
        return _attoUSDToWei(_getUSDPrice(cid));
    }

    /*//////////////////////////////////////////////////////////////
                             INTERNAL LOGIC
    //////////////////////////////////////////////////////////////*/

    function _getUSDPrice(string calldata cid) internal view returns (uint256) {
        // LowerCaseCyberIdMiddleware ensures that each cid character only occupies 1 byte
        uint256 len = bytes(cid).length;
        uint256 usdPrice;

        if (len >= 12) {
            usdPrice = price12AndMoreLetter;
        } else if (len >= 7) {
            usdPrice = price7To11Letter;
        } else if (len == 6) {
            usdPrice = price6Letter;
        } else if (len == 5) {
            usdPrice = price5Letter;
        } else if (len == 4) {
            usdPrice = price4Letter;
        } else if (len == 3) {
            usdPrice = price3Letter;
        } else if (len == 2) {
            usdPrice = price2Letter;
        } else {
            usdPrice = price1Letter;
        }
        return usdPrice;
    }

    function _getPrice() internal view returns (int256) {
        // prettier-ignore
        (
            uint80 roundID,
            int price,
            /* uint startedAt */,
            uint updatedAt,
            /*uint80 answeredInRound*/
        ) = usdOracle.latestRoundData();
        require(roundID != 0, "INVALID_ORACLE_ROUND_ID");
        require(price > 0, "INVALID_ORACLE_PRICE");
        require(updatedAt > block.timestamp - 3 hours, "STALE_ORACLE_PRICE");
        return price;
    }

    function _attoUSDToWei(uint256 amount) internal view returns (uint256) {
        uint256 ethPrice = uint256(_getPrice());
        return (amount * 1e8) / ethPrice;
    }

    function _chargeAndRefundOverPayment(
        uint256 cost,
        address depositTo,
        address refundTo
    ) internal {
        require(msg.value >= cost, "INSUFFICIENT_FUNDS");
        /**
         * Already checked msg.value >= cost
         */
        uint256 overpayment;
        unchecked {
            overpayment = msg.value - cost;
        }

        if (overpayment > 0) {
            (bool refundSuccess, ) = refundTo.call{ value: overpayment }("");
            require(refundSuccess, "REFUND_FAILED");
        }
        if (rebateEnabled) {
            tokenReceiver.depositTo{ value: cost }(depositTo);
        } else {
            (bool chargeSuccess, ) = recipient.call{ value: cost }("");
            require(chargeSuccess, "CHARGE_FAILED");
        }
    }

    /*//////////////////////////////////////////////////////////////
                    EIP712 OVERRIDES
    //////////////////////////////////////////////////////////////*/
    function _domainSeparatorName()
        internal
        pure
        override
        returns (string memory)
    {
        return "PermissionedStableFeeMw";
    }
}

File 2 of 8 : AggregatorV3Interface.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface AggregatorV3Interface {
  function decimals() external view returns (uint8);

  function description() external view returns (string memory);

  function version() external view returns (uint256);

  function getRoundData(uint80 _roundId)
    external
    view
    returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );

  function latestRoundData()
    external
    view
    returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );
}

File 3 of 8 : ReentrancyGuard.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

File 4 of 8 : ICyberIdMiddleware.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity 0.8.14;

import { DataTypes } from "../libraries/DataTypes.sol";

interface ICyberIdMiddleware {
    /**
     * @notice Sets data for middleware.
     *
     * @param data Extra data to set.
     */
    function setMwData(bytes calldata data) external;

    /**
     * @notice Indicates if commit-reveal should be skipped.
     */
    function skipCommit() external pure returns (bool);

    /**
     * @notice Process that runs before the register happens.
     *
     * @param params The params for register cid.
     * @param data Extra data to process.
     */
    function preRegister(
        DataTypes.RegisterCyberIdParams calldata params,
        bytes calldata data
    ) external payable returns (uint256);

    /**
     * @notice Validates the name pattern.
     *
     * @param name The name to validate.
     */
    function namePatternValid(
        string calldata name
    ) external view returns (bool);
}

File 5 of 8 : ITokenReceiver.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity 0.8.14;

/**
 * @title TokenReceiver
 * @author CyberConnect
 * @notice A contract that receive native token and record the amount.
 * The deposit only record the cumulative amount and withdraw won't affect
 * the deposit value.
 */
interface ITokenReceiver {
    function depositTo(address to) external payable;

    function withdraw(address to, uint256 amount) external;
}

File 6 of 8 : DataTypes.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity 0.8.14;

library DataTypes {
    struct EIP712Signature {
        uint8 v;
        bytes32 r;
        bytes32 s;
        uint256 deadline;
    }

    struct MetadataPair {
        string key;
        string value;
    }

    struct RegisterNameParams {
        address msgSender;
        string name;
        bytes32 parentNode;
        address to;
    }

    struct RegisterCyberIdParams {
        address msgSender;
        string cid;
        address to;
    }

    struct BatchRegisterCyberIdParams {
        string cid;
        address to;
        address resolver;
    }
}

File 7 of 8 : LowerCaseCyberIdMiddleware.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity 0.8.14;

import { ICyberIdMiddleware } from "../../../interfaces/ICyberIdMiddleware.sol";

abstract contract LowerCaseCyberIdMiddleware is ICyberIdMiddleware {
    /*//////////////////////////////////////////////////////////////
                            STORAGE
    //////////////////////////////////////////////////////////////*/

    address public immutable NAME_REGISTRY; // solhint-disable-line

    /*//////////////////////////////////////////////////////////////
                            CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(address nameRegistry) {
        NAME_REGISTRY = nameRegistry;
    }

    /*//////////////////////////////////////////////////////////////
                            MODIFIERS
    //////////////////////////////////////////////////////////////*/

    /**
     * @dev Reverts if called by any account other than the name registry.
     */
    modifier onlyNameRegistry() {
        require(NAME_REGISTRY == msg.sender, "NOT_NAME_REGISTRY");
        _;
    }

    /*//////////////////////////////////////////////////////////////
                    ICyberIdMiddleware OVERRIDES
    //////////////////////////////////////////////////////////////*/

    /// @inheritdoc ICyberIdMiddleware
    function skipCommit() external pure virtual override returns (bool) {
        return false;
    }

    /// @inheritdoc ICyberIdMiddleware
    function namePatternValid(
        string calldata name
    ) external pure virtual override returns (bool) {
        bytes memory byteName = bytes(name);

        if (byteName.length > 20 || byteName.length < 1) {
            return false;
        }

        uint256 byteNameLength = byteName.length;
        for (uint256 i = 0; i < byteNameLength; ) {
            bytes1 b = byteName[i];
            if ((b >= "0" && b <= "9") || (b >= "a" && b <= "z") || b == "_") {
                unchecked {
                    ++i;
                }
            } else {
                return false;
            }
        }
        return true;
    }
}

File 8 of 8 : EIP712.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity 0.8.14;

import { DataTypes } from "../libraries/DataTypes.sol";

abstract contract EIP712 {
    /*//////////////////////////////////////////////////////////////
                                CONSTANTS
    //////////////////////////////////////////////////////////////*/
    bytes32 internal constant _HASHED_VERSION = keccak256("1");
    bytes32 private constant _TYPE_HASH =
        keccak256(
            "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
        );

    /*//////////////////////////////////////////////////////////////
                            PUBLIC VIEW
    //////////////////////////////////////////////////////////////*/

    /**
     * @notice Returns the contract's {EIP712} domain separator.
     *
     * @return bytes32 the contract's {EIP712} domain separator.
     */
    // solhint-disable-next-line func-name-mixedcase
    function DOMAIN_SEPARATOR() public view returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    _TYPE_HASH,
                    keccak256(bytes(_domainSeparatorName())),
                    _HASHED_VERSION,
                    block.chainid,
                    address(this)
                )
            );
    }

    /*//////////////////////////////////////////////////////////////
                              INTERNAL
    //////////////////////////////////////////////////////////////*/

    function _requiresExpectedSigner(
        bytes32 digest,
        address expectedSigner,
        uint8 v,
        bytes32 r,
        bytes32 s,
        uint256 deadline
    ) internal view {
        require(deadline >= block.timestamp, "DEADLINE_EXCEEDED");
        require(
            uint256(s) <=
                0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0,
            "INVALID_SIGNATURE_S_VAULE"
        );

        address recoveredAddress = ecrecover(digest, v, r, s);
        require(recoveredAddress != address(0), "INVALID_RECOVERED_ADDRESS");
        require(recoveredAddress == expectedSigner, "INVALID_SIGNATURE");
    }

    function _requiresExpectedSigner(
        bytes32 digest,
        address expectedSigner,
        DataTypes.EIP712Signature calldata sig
    ) internal view {
        _requiresExpectedSigner(
            digest,
            expectedSigner,
            sig.v,
            sig.r,
            sig.s,
            sig.deadline
        );
    }

    function _hashTypedDataV4(
        bytes32 structHash
    ) internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encodePacked("\x19\x01", DOMAIN_SEPARATOR(), structHash)
            );
    }

    function _domainSeparatorName()
        internal
        view
        virtual
        returns (string memory);
}

Settings
{
  "remappings": [
    "@ens/=lib/ens-contracts/contracts/",
    "@ensdomains/=lib/",
    "@openzeppelin/=lib/openzeppelin-contracts/",
    "buffer/=lib/buffer/contracts/",
    "chainlink/=lib/chainlink/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "ens-contracts/=lib/ens-contracts/contracts/",
    "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "solmate/=lib/solmate/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_oracleAddress","type":"address"},{"internalType":"address","name":"_tokenReceiver","type":"address"},{"internalType":"address","name":"cyberId","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signer","type":"address"}],"name":"SignerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"rebateEnabled","type":"bool"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"price1Letter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price2Letter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price3Letter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price4Letter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price5Letter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price6Letter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price7To11Letter","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price12AndMoreLetter","type":"uint256"}],"name":"StableFeeChanged","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NAME_REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"cid","type":"string"}],"name":"getPriceWei","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"namePatternValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"string","name":"cid","type":"string"},{"internalType":"address","name":"to","type":"address"}],"internalType":"struct DataTypes.RegisterCyberIdParams","name":"params","type":"tuple"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"preRegister","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"price12AndMoreLetter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price2Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price3Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price4Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price5Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price6Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price7To11Letter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebateEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"setMwData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"signer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"skipCommit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tokenReceiver","outputs":[{"internalType":"contract ITokenReceiver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdOracle","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60e06040523480156200001157600080fd5b50604051620015e1380380620015e1833981016040819052620000349162000074565b6001600160a01b03908116608052600160005591821660a0521660c052620000be565b80516001600160a01b03811681146200006f57600080fd5b919050565b6000806000606084860312156200008a57600080fd5b620000958462000057565b9250620000a56020850162000057565b9150620000b56040850162000057565b90509250925092565b60805160a05160c0516114d76200010a600039600081816103330152610e560152600081816103670152610f610152600081816102e9015281816104c7015261070401526114d76000f3fe6080604052600436106101295760003560e01c806366d003ac116100ab578063a3e295bc1161006f578063a3e295bc14610321578063c8a4271f14610355578063cb8dd1e914610389578063cd5d2c741461039f578063d820ed42146103b5578063f1ebaa66146103cb57600080fd5b806366d003ac146102655780637ac3e6ea1461028a5780637ecebe00146102aa578063a05c2616146102d7578063a200e1531461030b57600080fd5b8063316a7878116100f2578063316a7878146101ef5780633644e515146102055780633da6aaed1461021a57806342a0d9b41461022d57806359b6b86c1461024f57600080fd5b8062d48e461461012e5780630261d9421461016157806306534e0c14610177578063238ac933146101a15780632c0fd74c146101d9575b600080fd5b34801561013a57600080fd5b5061014e61014936600461112b565b6103df565b6040519081526020015b60405180910390f35b34801561016d57600080fd5b5061014e60075481565b34801561018357600080fd5b506001546101919060ff1681565b6040519015158152602001610158565b3480156101ad57600080fd5b50600a546101c1906001600160a01b031681565b6040516001600160a01b039091168152602001610158565b3480156101e557600080fd5b5061014e60025481565b3480156101fb57600080fd5b5061014e60085481565b34801561021157600080fd5b5061014e6103fc565b61014e61022836600461116d565b6104c3565b34801561023957600080fd5b5061024d61024836600461112b565b610702565b005b34801561025b57600080fd5b5061014e60065481565b34801561027157600080fd5b506001546101c19061010090046001600160a01b031681565b34801561029657600080fd5b506101916102a536600461112b565b61095d565b3480156102b657600080fd5b5061014e6102c53660046111f6565b600b6020526000908152604090205481565b3480156102e357600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b34801561031757600080fd5b5061014e60045481565b34801561032d57600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b34801561036157600080fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b34801561039557600080fd5b5061014e60095481565b3480156103ab57600080fd5b5061014e60035481565b3480156103c157600080fd5b5061014e60055481565b3480156103d757600080fd5b506001610191565b60006103f36103ee8484610a89565b610b11565b90505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61045960408051808201909152601781527f5065726d697373696f6e6564537461626c654665654d77000000000000000000602082015290565b80516020918201206040805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146105365760405162461bcd60e51b81526020600482015260116024820152704e4f545f4e414d455f524547495354525960781b60448201526064015b60405180910390fd5b60408051608081018252600080825260208201819052918101829052606081018290529061056685850186611228565b6060870191909152604086019190915260208086019290925260ff90921684529091506106a690610681907f523d280a8c9ac3e07cc82178e6169bbac469c25a6c09aea3e72b2fd602b02dc0906105bf908a018a611280565b6040516105cd9291906112c7565b60405180910390208960400160208101906105e891906111f6565b600b60006105fc60608e0160408f016111f6565b6001600160a01b0316815260208101919091526040016000908120805491610623836112ed565b909155506060808901516040805160208101979097528601949094526001600160a01b0390921691840191909152608083015260a082015283151560c082015260e00160405160208183030381529060405280519060200120610b37565b600a5484516020860151604087015160608801516001600160a01b0390941693610b7e565b80156106b7576000925050506106fb565b60006106c96101496020890189611280565b90506106f1816106df60608a0160408b016111f6565b6106ec60208b018b6111f6565b610d47565b92506106fb915050565b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461076e5760405162461bcd60e51b81526020600482015260116024820152704e4f545f4e414d455f524547495354525960781b604482015260640161052d565b600080808061077f8587018761131c565b929650909450925090506001600160a01b0383166107d05760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161052d565b600a80546001600160a01b0319166001600160a01b0385169081179091556001805460ff19168615151790556040517f5719a5656c5cfdaafa148ecf366fd3b0a7fae06449ce2a46225977fb7417e29d90600090a260018054610100600160a81b0319166101006001600160a01b03851602179055806000602002015160025580600160200201516003558060026020020151600455806003602002015160055580600460200201516006558060056020020151600755806006602002015160085580600760200201516009556001600160a01b0382167f097c620e2967565771aff084cc24984f90c9328ab70104448d21c3a79cf06e468583600060200201518460016020020151856002602002015186600360200201518760046020020151886005602002015189600660200201518a600760209081029190910151604080519a15158b52918a01989098528801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200160405180910390a2505050505050565b60008083838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060149091119050806109ad575060018151105b156109bc5760009150506103f6565b805160005b81811015610a7d5760008382815181106109dd576109dd6113d5565b01602001516001600160f81b0319169050600360fc1b8110801590610a105750603960f81b6001600160f81b0319821611155b80610a425750606160f81b6001600160f81b0319821610801590610a425750603d60f91b6001600160f81b0319821611155b80610a5a5750605f60f81b6001600160f81b03198216145b15610a6a57816001019150610a77565b60009450505050506103f6565b506109c1565b50600195945050505050565b60008181600c8210610a9e5750600954610b09565b60078210610aaf5750600854610b09565b81600603610ac05750600754610b09565b81600503610ad15750600654610b09565b81600403610ae25750600554610b09565b81600303610af35750600454610b09565b81600203610b045750600354610b09565b506002545b949350505050565b600080610b1c610f59565b905080610b2d846305f5e1006113eb565b6106fb919061140a565b6000610b416103fc565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b42811015610bc25760405162461bcd60e51b8152602060048201526011602482015270111150511312539157d15610d151511151607a1b604482015260640161052d565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610c325760405162461bcd60e51b815260206004820152601960248201527f494e56414c49445f5349474e41545552455f535f5641554c4500000000000000604482015260640161052d565b6040805160008082526020820180845289905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015610c86573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610ce95760405162461bcd60e51b815260206004820152601960248201527f494e56414c49445f5245434f56455245445f4144445245535300000000000000604482015260640161052d565b856001600160a01b0316816001600160a01b031614610d3e5760405162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015260640161052d565b50505050505050565b82341015610d8c5760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f46554e445360701b604482015260640161052d565b34838103908414610e2c576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610de4576040519150601f19603f3d011682016040523d82523d6000602084013e610de9565b606091505b5050905080610e2a5760405162461bcd60e51b815260206004820152600d60248201526c14915195539117d19052531151609a1b604482015260640161052d565b505b60015460ff1615610eb95760405163b760faf960e01b81526001600160a01b0384811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b760faf99086906024016000604051808303818588803b158015610e9b57600080fd5b505af1158015610eaf573d6000803e3d6000fd5b5050505050610f53565b60015460405160009161010090046001600160a01b03169086908381818185875af1925050503d8060008114610f0b576040519150601f19603f3d011682016040523d82523d6000602084013e610f10565b606091505b5050905080610f515760405162461bcd60e51b815260206004820152600d60248201526c10d2105491d157d19052531151609a1b604482015260640161052d565b505b50505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe19190611446565b50935050925092508269ffffffffffffffffffff166000036110455760405162461bcd60e51b815260206004820152601760248201527f494e56414c49445f4f5241434c455f524f554e445f4944000000000000000000604482015260640161052d565b6000821361108c5760405162461bcd60e51b8152602060048201526014602482015273494e56414c49445f4f5241434c455f505249434560601b604482015260640161052d565b611098612a304261148a565b81116110db5760405162461bcd60e51b81526020600482015260126024820152715354414c455f4f5241434c455f505249434560701b604482015260640161052d565b5092915050565b60008083601f8401126110f457600080fd5b50813567ffffffffffffffff81111561110c57600080fd5b60208301915083602082850101111561112457600080fd5b9250929050565b6000806020838503121561113e57600080fd5b823567ffffffffffffffff81111561115557600080fd5b611161858286016110e2565b90969095509350505050565b60008060006040848603121561118257600080fd5b833567ffffffffffffffff8082111561119a57600080fd5b90850190606082880312156111ae57600080fd5b909350602085013590808211156111c457600080fd5b506111d1868287016110e2565b9497909650939450505050565b6001600160a01b03811681146111f357600080fd5b50565b60006020828403121561120857600080fd5b81356106fb816111de565b8035801515811461122357600080fd5b919050565b600080600080600060a0868803121561124057600080fd5b853560ff8116811461125157600080fd5b945060208601359350604086013592506060860135915061127460808701611213565b90509295509295909350565b6000808335601e1984360301811261129757600080fd5b83018035915067ffffffffffffffff8211156112b257600080fd5b60200191503681900382131561112457600080fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016112ff576112ff6112d7565b5060010190565b634e487b7160e01b600052604160045260246000fd5b60008060008061016080868803121561133457600080fd5b61133d86611213565b945060208087013561134e816111de565b9450604087013561135e816111de565b9350607f8701881361136f57600080fd5b604051610100810181811067ffffffffffffffff8211171561139357611393611306565b6040529187019180898411156113a857600080fd5b606089015b848110156113c457803582529083019083016113ad565b505080935050505092959194509250565b634e487b7160e01b600052603260045260246000fd5b6000816000190483118215151615611405576114056112d7565b500290565b60008261142757634e487b7160e01b600052601260045260246000fd5b500490565b805169ffffffffffffffffffff8116811461122357600080fd5b600080600080600060a0868803121561145e57600080fd5b6114678661142c565b94506020860151935060408601519250606086015191506112746080870161142c565b60008282101561149c5761149c6112d7565b50039056fea2646970667358221220977a9e22a7b5c652c597bf6aedc9ca83df6f932a6b8a8b5509cfddebc3026d5b64736f6c634300080e003300000000000000000000000013e3ee699d1909e989722e753853ae30b17e08c5000000000000000000000000cd97405fb58e94954e825e46db192b916a45d412000000000000000000000000e55793f55df1f1b5037eba41881663583d4f9b24

Deployed Bytecode

0x6080604052600436106101295760003560e01c806366d003ac116100ab578063a3e295bc1161006f578063a3e295bc14610321578063c8a4271f14610355578063cb8dd1e914610389578063cd5d2c741461039f578063d820ed42146103b5578063f1ebaa66146103cb57600080fd5b806366d003ac146102655780637ac3e6ea1461028a5780637ecebe00146102aa578063a05c2616146102d7578063a200e1531461030b57600080fd5b8063316a7878116100f2578063316a7878146101ef5780633644e515146102055780633da6aaed1461021a57806342a0d9b41461022d57806359b6b86c1461024f57600080fd5b8062d48e461461012e5780630261d9421461016157806306534e0c14610177578063238ac933146101a15780632c0fd74c146101d9575b600080fd5b34801561013a57600080fd5b5061014e61014936600461112b565b6103df565b6040519081526020015b60405180910390f35b34801561016d57600080fd5b5061014e60075481565b34801561018357600080fd5b506001546101919060ff1681565b6040519015158152602001610158565b3480156101ad57600080fd5b50600a546101c1906001600160a01b031681565b6040516001600160a01b039091168152602001610158565b3480156101e557600080fd5b5061014e60025481565b3480156101fb57600080fd5b5061014e60085481565b34801561021157600080fd5b5061014e6103fc565b61014e61022836600461116d565b6104c3565b34801561023957600080fd5b5061024d61024836600461112b565b610702565b005b34801561025b57600080fd5b5061014e60065481565b34801561027157600080fd5b506001546101c19061010090046001600160a01b031681565b34801561029657600080fd5b506101916102a536600461112b565b61095d565b3480156102b657600080fd5b5061014e6102c53660046111f6565b600b6020526000908152604090205481565b3480156102e357600080fd5b506101c17f000000000000000000000000e55793f55df1f1b5037eba41881663583d4f9b2481565b34801561031757600080fd5b5061014e60045481565b34801561032d57600080fd5b506101c17f000000000000000000000000cd97405fb58e94954e825e46db192b916a45d41281565b34801561036157600080fd5b506101c17f00000000000000000000000013e3ee699d1909e989722e753853ae30b17e08c581565b34801561039557600080fd5b5061014e60095481565b3480156103ab57600080fd5b5061014e60035481565b3480156103c157600080fd5b5061014e60055481565b3480156103d757600080fd5b506001610191565b60006103f36103ee8484610a89565b610b11565b90505b92915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61045960408051808201909152601781527f5065726d697373696f6e6564537461626c654665654d77000000000000000000602082015290565b80516020918201206040805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60007f000000000000000000000000e55793f55df1f1b5037eba41881663583d4f9b246001600160a01b031633146105365760405162461bcd60e51b81526020600482015260116024820152704e4f545f4e414d455f524547495354525960781b60448201526064015b60405180910390fd5b60408051608081018252600080825260208201819052918101829052606081018290529061056685850186611228565b6060870191909152604086019190915260208086019290925260ff90921684529091506106a690610681907f523d280a8c9ac3e07cc82178e6169bbac469c25a6c09aea3e72b2fd602b02dc0906105bf908a018a611280565b6040516105cd9291906112c7565b60405180910390208960400160208101906105e891906111f6565b600b60006105fc60608e0160408f016111f6565b6001600160a01b0316815260208101919091526040016000908120805491610623836112ed565b909155506060808901516040805160208101979097528601949094526001600160a01b0390921691840191909152608083015260a082015283151560c082015260e00160405160208183030381529060405280519060200120610b37565b600a5484516020860151604087015160608801516001600160a01b0390941693610b7e565b80156106b7576000925050506106fb565b60006106c96101496020890189611280565b90506106f1816106df60608a0160408b016111f6565b6106ec60208b018b6111f6565b610d47565b92506106fb915050565b9392505050565b7f000000000000000000000000e55793f55df1f1b5037eba41881663583d4f9b246001600160a01b0316331461076e5760405162461bcd60e51b81526020600482015260116024820152704e4f545f4e414d455f524547495354525960781b604482015260640161052d565b600080808061077f8587018761131c565b929650909450925090506001600160a01b0383166107d05760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161052d565b600a80546001600160a01b0319166001600160a01b0385169081179091556001805460ff19168615151790556040517f5719a5656c5cfdaafa148ecf366fd3b0a7fae06449ce2a46225977fb7417e29d90600090a260018054610100600160a81b0319166101006001600160a01b03851602179055806000602002015160025580600160200201516003558060026020020151600455806003602002015160055580600460200201516006558060056020020151600755806006602002015160085580600760200201516009556001600160a01b0382167f097c620e2967565771aff084cc24984f90c9328ab70104448d21c3a79cf06e468583600060200201518460016020020151856002602002015186600360200201518760046020020151886005602002015189600660200201518a600760209081029190910151604080519a15158b52918a01989098528801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200160405180910390a2505050505050565b60008083838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060149091119050806109ad575060018151105b156109bc5760009150506103f6565b805160005b81811015610a7d5760008382815181106109dd576109dd6113d5565b01602001516001600160f81b0319169050600360fc1b8110801590610a105750603960f81b6001600160f81b0319821611155b80610a425750606160f81b6001600160f81b0319821610801590610a425750603d60f91b6001600160f81b0319821611155b80610a5a5750605f60f81b6001600160f81b03198216145b15610a6a57816001019150610a77565b60009450505050506103f6565b506109c1565b50600195945050505050565b60008181600c8210610a9e5750600954610b09565b60078210610aaf5750600854610b09565b81600603610ac05750600754610b09565b81600503610ad15750600654610b09565b81600403610ae25750600554610b09565b81600303610af35750600454610b09565b81600203610b045750600354610b09565b506002545b949350505050565b600080610b1c610f59565b905080610b2d846305f5e1006113eb565b6106fb919061140a565b6000610b416103fc565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b42811015610bc25760405162461bcd60e51b8152602060048201526011602482015270111150511312539157d15610d151511151607a1b604482015260640161052d565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115610c325760405162461bcd60e51b815260206004820152601960248201527f494e56414c49445f5349474e41545552455f535f5641554c4500000000000000604482015260640161052d565b6040805160008082526020820180845289905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015610c86573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610ce95760405162461bcd60e51b815260206004820152601960248201527f494e56414c49445f5245434f56455245445f4144445245535300000000000000604482015260640161052d565b856001600160a01b0316816001600160a01b031614610d3e5760405162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015260640161052d565b50505050505050565b82341015610d8c5760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f46554e445360701b604482015260640161052d565b34838103908414610e2c576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610de4576040519150601f19603f3d011682016040523d82523d6000602084013e610de9565b606091505b5050905080610e2a5760405162461bcd60e51b815260206004820152600d60248201526c14915195539117d19052531151609a1b604482015260640161052d565b505b60015460ff1615610eb95760405163b760faf960e01b81526001600160a01b0384811660048301527f000000000000000000000000cd97405fb58e94954e825e46db192b916a45d412169063b760faf99086906024016000604051808303818588803b158015610e9b57600080fd5b505af1158015610eaf573d6000803e3d6000fd5b5050505050610f53565b60015460405160009161010090046001600160a01b03169086908381818185875af1925050503d8060008114610f0b576040519150601f19603f3d011682016040523d82523d6000602084013e610f10565b606091505b5050905080610f515760405162461bcd60e51b815260206004820152600d60248201526c10d2105491d157d19052531151609a1b604482015260640161052d565b505b50505050565b6000806000807f00000000000000000000000013e3ee699d1909e989722e753853ae30b17e08c56001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe19190611446565b50935050925092508269ffffffffffffffffffff166000036110455760405162461bcd60e51b815260206004820152601760248201527f494e56414c49445f4f5241434c455f524f554e445f4944000000000000000000604482015260640161052d565b6000821361108c5760405162461bcd60e51b8152602060048201526014602482015273494e56414c49445f4f5241434c455f505249434560601b604482015260640161052d565b611098612a304261148a565b81116110db5760405162461bcd60e51b81526020600482015260126024820152715354414c455f4f5241434c455f505249434560701b604482015260640161052d565b5092915050565b60008083601f8401126110f457600080fd5b50813567ffffffffffffffff81111561110c57600080fd5b60208301915083602082850101111561112457600080fd5b9250929050565b6000806020838503121561113e57600080fd5b823567ffffffffffffffff81111561115557600080fd5b611161858286016110e2565b90969095509350505050565b60008060006040848603121561118257600080fd5b833567ffffffffffffffff8082111561119a57600080fd5b90850190606082880312156111ae57600080fd5b909350602085013590808211156111c457600080fd5b506111d1868287016110e2565b9497909650939450505050565b6001600160a01b03811681146111f357600080fd5b50565b60006020828403121561120857600080fd5b81356106fb816111de565b8035801515811461122357600080fd5b919050565b600080600080600060a0868803121561124057600080fd5b853560ff8116811461125157600080fd5b945060208601359350604086013592506060860135915061127460808701611213565b90509295509295909350565b6000808335601e1984360301811261129757600080fd5b83018035915067ffffffffffffffff8211156112b257600080fd5b60200191503681900382131561112457600080fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016112ff576112ff6112d7565b5060010190565b634e487b7160e01b600052604160045260246000fd5b60008060008061016080868803121561133457600080fd5b61133d86611213565b945060208087013561134e816111de565b9450604087013561135e816111de565b9350607f8701881361136f57600080fd5b604051610100810181811067ffffffffffffffff8211171561139357611393611306565b6040529187019180898411156113a857600080fd5b606089015b848110156113c457803582529083019083016113ad565b505080935050505092959194509250565b634e487b7160e01b600052603260045260246000fd5b6000816000190483118215151615611405576114056112d7565b500290565b60008261142757634e487b7160e01b600052601260045260246000fd5b500490565b805169ffffffffffffffffffff8116811461122357600080fd5b600080600080600060a0868803121561145e57600080fd5b6114678661142c565b94506020860151935060408601519250606086015191506112746080870161142c565b60008282101561149c5761149c6112d7565b50039056fea2646970667358221220977a9e22a7b5c652c597bf6aedc9ca83df6f932a6b8a8b5509cfddebc3026d5b64736f6c634300080e0033

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

00000000000000000000000013e3ee699d1909e989722e753853ae30b17e08c5000000000000000000000000cd97405fb58e94954e825e46db192b916a45d412000000000000000000000000e55793f55df1f1b5037eba41881663583d4f9b24

-----Decoded View---------------
Arg [0] : _oracleAddress (address): 0x13e3Ee699D1909E989722E753853AE30b17e08c5
Arg [1] : _tokenReceiver (address): 0xcd97405Fb58e94954E825E46dB192b916A45d412
Arg [2] : cyberId (address): 0xe55793f55dF1F1B5037ebA41881663583d4f9B24

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000013e3ee699d1909e989722e753853ae30b17e08c5
Arg [1] : 000000000000000000000000cd97405fb58e94954e825e46db192b916a45d412
Arg [2] : 000000000000000000000000e55793f55df1f1b5037eba41881663583d4f9b24


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.