Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH | ||||
4067304 | 6 days ago | 0 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
GameRegistry
Compiler Version
v0.8.28+commit.7893614a
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.9; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/access/AccessControl.sol"; import "@openzeppelin/contracts/utils/Pausable.sol"; import {GAME_LOGIC_CONTRACT_ROLE, MANAGER_ROLE, DEPLOYER_ROLE, PAUSER_ROLE, MINTER_ROLE} from "../constants/RoleConstants.sol"; import "./IGameRegistry.sol"; /** @title Contract to track and limit access by accounts in the same block */ contract GameRegistry is AccessControl, Ownable, Pausable, IGameRegistry { /** MEMBERS **/ /// @notice System registry mapping(uint256 => address) private _systemRegistry; /** EVENTS **/ /// @notice Emitted when a System address is registered event SystemRegistered(uint256 indexed id, address indexed systemAddress); /** ERRORS **/ /// @notice Not authorized to perform action error MissingRole(address account, bytes32 expectedRole); /** SETUP **/ constructor(address admin) Ownable(admin) // Call Ownable constructor AccessControl() // Call AccessControl constructor Pausable() // Call Pausable constructor { _initialize(admin); } /** * Initializer for this upgradeable contract */ function _initialize(address admin) internal { // Move ownership to deployer _transferOwnership(admin); // Give admin access role to owner _grantRole(DEFAULT_ADMIN_ROLE, admin); _grantRole(GAME_LOGIC_CONTRACT_ROLE, admin); _grantRole(MANAGER_ROLE, admin); _grantRole(MINTER_ROLE, admin); _grantRole(DEPLOYER_ROLE, admin); _grantRole(PAUSER_ROLE, admin); _setRoleAdmin(PAUSER_ROLE, DEFAULT_ADMIN_ROLE); _setRoleAdmin(MINTER_ROLE, DEFAULT_ADMIN_ROLE); _setRoleAdmin(MANAGER_ROLE, DEFAULT_ADMIN_ROLE); _setRoleAdmin(DEPLOYER_ROLE, DEFAULT_ADMIN_ROLE); _setRoleAdmin(GAME_LOGIC_CONTRACT_ROLE, DEFAULT_ADMIN_ROLE); _pause(); } /** EXTERNAL **/ /** * Pause/Unpause the game and ALL the systems that utilize this game * * @param _paused Whether or pause or unpause */ function setPaused(bool _paused) external { if (msg.sender == owner() || hasRole(PAUSER_ROLE, msg.sender)) { if (_paused) { _pause(); } else { _unpause(); } } else { revert MissingRole(msg.sender, PAUSER_ROLE); } } /** * @inheritdoc IGameRegistry */ function paused() public view override(IGameRegistry, Pausable) returns (bool) { return Pausable.paused(); } /** * @inheritdoc IGameRegistry */ function registerSystem( uint256 systemId, address systemAddress, bool isGameLogicContract ) external onlyRole(DEPLOYER_ROLE) { _systemRegistry[systemId] = systemAddress; if (isGameLogicContract) { _grantRole(GAME_LOGIC_CONTRACT_ROLE, systemAddress); } emit SystemRegistered(systemId, systemAddress); } /** * @inheritdoc IGameRegistry */ function getSystem(uint256 systemId) external view returns (address) { return _systemRegistry[systemId]; } /** * @inheritdoc IERC165 */ function supportsInterface( bytes4 interfaceId ) public view virtual override(IERC165, AccessControl) returns (bool) { return interfaceId == type(IGameRegistry).interfaceId || interfaceId == type(IERC165).interfaceId || AccessControl.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasAccessRole( bytes32 role, address account ) public view override returns (bool) { return AccessControl.hasRole(role, account); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {Context} from "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/AccessControl.sol) pragma solidity ^0.8.20; import {IAccessControl} from "./IAccessControl.sol"; import {Context} from "../utils/Context.sol"; import {ERC165} from "../utils/introspection/ERC165.sol"; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ```solidity * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ```solidity * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} * to enforce additional security measures for this role. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address account => bool) hasRole; bytes32 adminRole; } mapping(bytes32 role => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with an {AccessControlUnauthorizedAccount} error including the required role. */ modifier onlyRole(bytes32 role) { _checkRole(role); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view virtual returns (bool) { return _roles[role].hasRole[account]; } /** * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()` * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier. */ function _checkRole(bytes32 role) internal view virtual { _checkRole(role, _msgSender()); } /** * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account` * is missing `role`. */ function _checkRole(bytes32 role, address account) internal view virtual { if (!hasRole(role, account)) { revert AccessControlUnauthorizedAccount(account, role); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. * * May emit a {RoleGranted} event. */ function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. * * May emit a {RoleRevoked} event. */ function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `callerConfirmation`. * * May emit a {RoleRevoked} event. */ function renounceRole(bytes32 role, address callerConfirmation) public virtual { if (callerConfirmation != _msgSender()) { revert AccessControlBadConfirmation(); } _revokeRole(role, callerConfirmation); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted. * * Internal function without access restriction. * * May emit a {RoleGranted} event. */ function _grantRole(bytes32 role, address account) internal virtual returns (bool) { if (!hasRole(role, account)) { _roles[role].hasRole[account] = true; emit RoleGranted(role, account, _msgSender()); return true; } else { return false; } } /** * @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked. * * Internal function without access restriction. * * May emit a {RoleRevoked} event. */ function _revokeRole(bytes32 role, address account) internal virtual returns (bool) { if (hasRole(role, account)) { _roles[role].hasRole[account] = false; emit RoleRevoked(role, account, _msgSender()); return true; } else { return false; } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol) pragma solidity ^0.8.20; import {Context} from "../utils/Context.sol"; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { bool private _paused; /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); /** * @dev The operation failed because the contract is paused. */ error EnforcedPause(); /** * @dev The operation failed because the contract is not paused. */ error ExpectedPause(); /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { if (paused()) { revert EnforcedPause(); } } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { if (!paused()) { revert ExpectedPause(); } } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
// SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.9; // Pauser Role - Can pause the game bytes32 constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); // Minter Role - Can mint items, NFTs, and ERC20 currency bytes32 constant MINTER_ROLE = keccak256("MINTER_ROLE"); // Manager Role - Can manage the shop, loot tables, and other game data bytes32 constant MANAGER_ROLE = keccak256("MANAGER_ROLE"); // Depoloyer Role - Can Deploy new Systems bytes32 constant DEPLOYER_ROLE = keccak256("DEPLOYER_ROLE"); // Game Logic Contract - Contract that executes game logic and accesses other systems bytes32 constant GAME_LOGIC_CONTRACT_ROLE = keccak256("GAME_LOGIC_CONTRACT_ROLE"); // For functions callable from game server bytes32 constant SERVER_JUDGE_ROLE = keccak256("SERVER_JUDGE_ROLE");
// SPDX-License-Identifier: MIT LICENSE pragma solidity ^0.8.9; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; // @title Interface the game's ACL / Management Layer interface IGameRegistry is IERC165 { /** * @dev Returns `true` if `account` has been granted `role`. * @param role The role to query * @param account The address to query */ function hasAccessRole( bytes32 role, address account ) external view returns (bool); /** * @return Whether or not the registry is paused */ function paused() external view returns (bool); /** * Registers a system by id * * @param systemId Id of the system * @param systemAddress Address of the system contract */ function registerSystem(uint256 systemId, address systemAddress, bool isGameLogicContract) external; /** * @param systemId Id of the system * @return System based on an id */ function getSystem(uint256 systemId) external view returns (address); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (access/IAccessControl.sol) pragma solidity ^0.8.20; /** * @dev External interface of AccessControl declared to support ERC-165 detection. */ interface IAccessControl { /** * @dev The `account` is missing a role. */ error AccessControlUnauthorizedAccount(address account, bytes32 neededRole); /** * @dev The caller of a function is not the expected one. * * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}. */ error AccessControlBadConfirmation(); /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). * Expected in cases where the role was granted using the internal {AccessControl-_grantRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `callerConfirmation`. */ function renounceRole(bytes32 role, address callerConfirmation) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol) pragma solidity ^0.8.20; import {IERC165} from "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC-165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[ERC]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
{ "viaIR": false, "codegen": "yul", "remappings": [ "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "forge-zksync-std/=lib/forge-zksync-std/src/", "halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/" ], "evmVersion": "cancun", "outputSelection": { "*": { "*": [ "abi", "metadata" ], "": [ "ast" ] } }, "optimizer": { "enabled": true, "mode": "3", "fallback_to_optimizing_for_size": false, "disable_system_request_memoization": true }, "metadata": {}, "libraries": {}, "enableEraVMExtensions": false, "forceEVMLA": false }
[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"expectedRole","type":"bytes32"}],"name":"MissingRole","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"systemAddress","type":"address"}],"name":"SystemRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"systemId","type":"uint256"}],"name":"getSystem","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasAccessRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"systemId","type":"uint256"},{"internalType":"address","name":"systemAddress","type":"address"},{"internalType":"bool","name":"isGameLogicContract","type":"bool"}],"name":"registerSystem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
9c4d535b00000000000000000000000000000000000000000000000000000000000000000100018dc770ed64ec85b439a09a6279dc071822c147a1f59ae4cee7f4e69ea2000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000001804c8ab1f12e6bbf3894d4083f33e07309d1f38
Deployed Bytecode
0x00030000000000020000006003100270000001420330019700000001002001900000001a0000c13d0000008002000039000000400020043f000000040030008c000004620000413d000000000201043b000000e002200270000001630020009c000000440000a13d000001640020009c0000005d0000213d0000016a0020009c000000790000213d0000016d0020009c000002950000613d0000016e0020009c000004620000c13d0000000001000416000000000001004b000004620000c13d00000001010000390000036b0000013d0000000002000416000000000002004b000004620000c13d0000001f0230003900000143022001970000008002200039000000400020043f0000001f0430018f000001440530019800000080025000390000002b0000613d0000008006000039000000000701034f000000007807043c0000000006860436000000000026004b000000270000c13d000000000004004b000000380000613d000000000151034f0000000304400210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000200030008c000004620000413d000000800600043d000001450060009c000004620000213d000000000006004b000000b20000c13d0000017a01000041000000000010043f000000040000043f000001790100004100000507000104300000016f0020009c000000640000a13d000001700020009c000000830000213d000001730020009c000002ad0000613d000001740020009c000004620000c13d000000440030008c000004620000413d0000000002000416000000000002004b000004620000c13d0000002402100370000000000302043b000001450030009c000004620000213d0000000002000411000000000023004b000003910000c13d0000000401100370000000000101043b0505049f0000040f0000000001000019000005060001042e000001650020009c0000008e0000213d000001680020009c000002ef0000613d000001690020009c0000027b0000613d000004620000013d000001750020009c0000031e0000613d000001760020009c000003310000613d000001770020009c000004620000c13d000000240030008c000004620000413d0000000002000416000000000002004b000004620000c13d0000000401100370000000000101043b050504640000040f000000400200043d0000000000120435000001420020009c0000014202008041000000400120021000000181011001c7000005060001042e0000016b0020009c0000027b0000613d0000016c0020009c000004620000c13d0000000001000416000000000001004b000004620000c13d000000800000043f0000017b01000041000005060001042e000001710020009c000003600000613d000001720020009c000004620000c13d0000000001000416000000000001004b000004620000c13d0000000101000039000000000101041a0000015d00100198000002900000013d000001660020009c000003700000613d000001670020009c000004620000c13d000000240030008c000004620000413d0000000002000416000000000002004b000004620000c13d0000000401100370000000000201043b000001450020009c000004620000213d0000000101000039000000000301041a00000145053001970000000004000411000000000045004b000003950000c13d00000145062001980000003f0000613d0000014602300197000000000262019f000000000021041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d0200003900000003030000390000014804000041050504fb0000040f0000000100200190000004620000613d000003c40000013d0000000103000039000000000103041a0000014602100197000000000262019f000000000023041b00000000020004140000014505100197000001420020009c0000014202008041000000c00120021000000147011001c70000800d0200003900000003030000390000014804000041000300000006001d0000000306000029050504fb0000040f00000003040000290000000100200190000004620000613d0000000103000039000000000103041a0000014902100197000000000242019f000000000023041b00000000020004140000014505100197000001420020009c0000014202008041000000c00120021000000147011001c70000800d02000039000000030300003900000148040000410000000306000029050504fb0000040f00000003010000290000000100200190000004620000613d000000000010043f0000014a01000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f00000003030000290000000100200190000004620000613d000000000101043b000000000101041a000000ff001001900000010a0000c13d000000000030043f0000014a01000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b000000000201041a0000018a0220019700000001022001bf000000000021041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d02000039000000040300003900000000070004110000014c0400004100000000050000190000000306000029050504fb0000040f00000003030000290000000100200190000004620000613d000000000030043f0000014d01000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f00000003030000290000000100200190000004620000613d000000000101043b000000000101041a000000ff001001900000013b0000c13d000000000030043f0000014d01000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b000000000201041a0000018a0220019700000001022001bf000000000021041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d02000039000000040300003900000000070004110000014c040000410000014e050000410000000306000029050504fb0000040f00000003030000290000000100200190000004620000613d000000000030043f0000014f01000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f00000003030000290000000100200190000004620000613d000000000101043b000000000101041a000000ff001001900000016c0000c13d000000000030043f0000014f01000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b000000000201041a0000018a0220019700000001022001bf000000000021041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d02000039000000040300003900000000070004110000014c0400004100000150050000410000000306000029050504fb0000040f00000003030000290000000100200190000004620000613d000000000030043f0000015101000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f00000003030000290000000100200190000004620000613d000000000101043b000000000101041a000000ff001001900000019d0000c13d000000000030043f0000015101000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b000000000201041a0000018a0220019700000001022001bf000000000021041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d02000039000000040300003900000000070004110000014c0400004100000152050000410000000306000029050504fb0000040f00000003030000290000000100200190000004620000613d000000000030043f0000015301000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f00000003030000290000000100200190000004620000613d000000000101043b000000000101041a000000ff00100190000001ce0000c13d000000000030043f0000015301000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b000000000201041a0000018a0220019700000001022001bf000000000021041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d02000039000000040300003900000000070004110000014c0400004100000154050000410000000306000029050504fb0000040f00000003030000290000000100200190000004620000613d000000000030043f0000015501000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f00000003030000290000000100200190000004620000613d000000000101043b000000000101041a000000ff00100190000001fe0000c13d000000000030043f0000015501000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f00000003060000290000000100200190000004620000613d000000000101043b000000000201041a0000018a0220019700000001022001bf000000000021041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d02000039000000040300003900000000070004110000014c040000410000015605000041050504fb0000040f0000000100200190000004620000613d0000015701000041000000000601041a0000015602000041000000000020043f000000200000043f000000000001041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d020000390000000403000039000001580400004100000156050000410000000007000019050504fb0000040f0000000100200190000004620000613d0000015901000041000000000601041a0000015202000041000000000020043f000000200000043f000000000001041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d020000390000000403000039000001580400004100000152050000410000000007000019050504fb0000040f0000000100200190000004620000613d0000015a01000041000000000601041a0000015002000041000000000020043f000000200000043f000000000001041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d020000390000000403000039000001580400004100000150050000410000000007000019050504fb0000040f0000000100200190000004620000613d0000015b01000041000000000601041a0000015402000041000000000020043f000000200000043f000000000001041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d020000390000000403000039000001580400004100000154050000410000000007000019050504fb0000040f0000000100200190000004620000613d0000015c01000041000000000601041a0000014e02000041000000000020043f000000200000043f000000000001041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d02000039000000040300003900000158040000410000014e050000410000000007000019050504fb0000040f0000000100200190000004620000613d0000000101000039000000000101041a0000015d00100198000003ae0000c13d0000015e011001970000015f011001c70000000103000039000000000013041b0000000001000411000000400200043d0000000000120435000001420020009c000001420200804100000040012002100000000002000414000001420020009c0000014202008041000000c002200210000000000112019f00000160011001c70000800d020000390000016104000041050504fb0000040f0000000100200190000004620000613d0000002001000039000001000010044300000120000004430000016201000041000005060001042e000000440030008c000004620000413d0000000002000416000000000002004b000004620000c13d0000002402100370000000000202043b000300000002001d000001450020009c000004620000213d0000000401100370000000000101043b000000000010043f000000200000043f050504ee0000040f0000000302000029000000000020043f000000200010043f050504ee0000040f000000000101041a000000ff001001900000000001000039000000010100c039000000800010043f0000017b01000041000005060001042e0000000001000416000000000001004b000004620000c13d0000000101000039000000000201041a00000145052001970000000003000411000000000035004b000003840000c13d0000014602200197000000000021041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d02000039000000030300003900000148040000410000000006000019050504fb0000040f0000000100200190000004620000613d000003c40000013d000000440030008c000004620000413d0000000002000416000000000002004b000004620000c13d0000000402100370000000000202043b000300000002001d0000002401100370000000000101043b000200000001001d000001450010009c000004620000213d0000000301000029000000000010043f000000200000043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b0000000101100039000000000101041a000100000001001d000000000010043f000000200000043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b00000000020004110000014502200197000000000020043f000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b000000000101041a000000ff00100190000004190000c13d0000017d01000041000000000010043f0000000001000411000000040010043f0000000101000029000000240010043f0000017e010000410000050700010430000000640030008c000004620000413d0000000002000416000000000002004b000004620000c13d0000000402100370000000000202043b000300000002001d0000002402100370000000000202043b000200000002001d000001450020009c000004620000213d0000004401100370000000000201043b000000000002004b0000000001000039000000010100c039000100000002001d000000000012004b000004620000c13d00000000010004110000014501100197000000000010043f0000015301000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b000000000101041a000000ff00100190000003c60000c13d0000017d01000041000000000010043f0000000001000411000000040010043f0000015401000041000000240010043f0000017e010000410000050700010430000000240030008c000004620000413d0000000002000416000000000002004b000004620000c13d0000000401100370000000000201043b0000018600200198000004620000c13d0000000101000039000001870020009c0000036d0000613d000001880020009c0000036d0000613d000001890020009c000000000100c019000000800010043f0000017b01000041000005060001042e000000240030008c000004620000413d0000000002000416000000000002004b000004620000c13d0000000401100370000000000201043b000000000002004b0000000001000039000000010100c039000300000002001d000000000012004b000004620000c13d0000000103000039000000000403041a00000145014001970000000002000411000000000012004b000003890000613d000200000004001d0000014501200197000000000010043f0000015501000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b000000000101041a000000ff00100190000000010300003900000000020004110000000204000029000003890000c13d0000018201000041000000000010043f000000040020043f0000015601000041000000240010043f0000017e010000410000050700010430000000240030008c000004620000413d0000000002000416000000000002004b000004620000c13d0000000401100370000000000101043b000000000010043f0000000201000039000000200010043f050504ee0000040f000000000101041a0000014501100197000000800010043f0000017b01000041000005060001042e000000440030008c000004620000413d0000000002000416000000000002004b000004620000c13d0000002402100370000000000202043b000300000002001d000001450020009c000004620000213d0000000401100370000000000101043b000200000001001d050504640000040f050504750000040f000000020100002900000003020000290505049f0000040f0000000001000019000005060001042e0000017801000041000000000010043f000000040030043f00000179010000410000050700010430000000030000006b0000039a0000c13d0000015d00400198000003b20000c13d0000018501000041000000000010043f000001800100004100000507000104300000017f01000041000000000010043f000001800100004100000507000104300000017801000041000000000010043f000000040040043f00000179010000410000050700010430000000000103041a0000015d00100198000003ae0000c13d0000015e011001970000015f011001c7000000000013041b000000400100043d0000000000210435000001420010009c000001420100804100000040011002100000000002000414000001420020009c0000014202008041000000c002200210000000000112019f00000160011001c70000800d020000390000016104000041000003c10000013d0000018301000041000000000010043f000001800100004100000507000104300000015e01400197000000000013041b000000400100043d0000000000210435000001420010009c000001420100804100000040011002100000000002000414000001420020009c0000014202008041000000c002200210000000000112019f00000160011001c70000800d020000390000018404000041050504fb0000040f0000000100200190000004620000613d0000000001000019000005060001042e0000000301000029000000000010043f0000000201000039000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b000000000201041a000001460220019700000002022001af000000000021041b000000010000006b0000040b0000613d0000000201000029000000000010043f0000014d01000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b000000000101041a000000ff001001900000040b0000c13d0000000201000029000000000010043f0000014d01000041000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b000000000201041a0000018a0220019700000001022001bf000000000021041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d0200003900000004030000390000014c040000410000014e0500004100000002060000290000000007000411050504fb0000040f0000000100200190000004620000613d0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d0200003900000003030000390000017c0400004100000003050000290000000206000029050504fb0000040f0000000100200190000004620000613d000003c40000013d0000000301000029000000000010043f000000200000043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b0000000202000029000000000020043f000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b000000000101041a000000ff00100190000003c40000c13d0000000301000029000000000010043f000000200000043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b0000000202000029000000000020043f000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004620000613d000000000101043b000000000201041a0000018a0220019700000001022001bf000000000021041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d0200003900000004030000390000014c04000041000000030500002900000002060000290000000007000411050504fb0000040f0000000100200190000003c40000c13d00000000010000190000050700010430000000000010043f000000200000043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004730000613d000000000101043b0000000101100039000000000101041a000000000001042d000000000100001900000507000104300001000000000002000100000001001d000000000010043f000000200000043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004950000613d000000000101043b00000000020004110000014502200197000000000020043f000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004950000613d000000000101043b000000000101041a000000ff00100190000004970000613d000000000001042d000000000100001900000507000104300000017d01000041000000000010043f0000000001000411000000040010043f0000000101000029000000240010043f0000017e0100004100000507000104300002000000000002000100000002001d000200000001001d000000000010043f000000200000043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004ec0000613d000000000101043b00000001020000290000014502200197000100000002001d000000000020043f000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004ec0000613d000000000101043b000000000101041a000000ff00100190000004eb0000613d0000000201000029000000000010043f000000200000043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004ec0000613d000000000101043b0000000102000029000000000020043f000000200010043f0000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004ec0000613d000000000101043b000000000201041a0000018a02200197000000000021041b0000000001000414000001420010009c0000014201008041000000c00110021000000147011001c70000800d02000039000000040300003900000000070004110000018b0400004100000002050000290000000106000029050504fb0000040f0000000100200190000004ec0000613d000000000001042d000000000100001900000507000104300000000001000414000001420010009c0000014201008041000000c0011002100000014b011001c70000801002000039050505000000040f0000000100200190000004f90000613d000000000101043b000000000001042d00000000010000190000050700010430000004fe002104210000000102000039000000000001042d0000000002000019000000000001042d00000503002104230000000102000039000000000001042d0000000002000019000000000001042d0000050500000432000005060001042e000005070001043000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ffffffffffffffffffffff000000000000000000000000000000000000000000ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb502000000000000000000000000000000000000400000000000000000000000002f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0dc61a984514949cac1d59f8eed2df66e5047198b4d9abbe2667b988aa1210dc0cd3dc2a3a14cbd0cdbf3069fc3927e48506f271b9dda2c21625b93e6a99d3eb53e84508f2c7fa9c351146748b3025cb78b45df37d868e48c6a75102fecdeee645241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b080781d7cac9c378efa22a7481e4d4d29704a680ddf504b3bc50b517700ee11e6c9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6740c5e3e456bed56f053f960110118ba9b95a1f5359a82283516fb2e81b6e37efc425f2263d0df187444b70e47283d622c70181c5baebb1306a01edba1ce184cf7c9542c591017a21c74b6f3fab6263c7952fc0aaf9db4c22a2a04ddc7f8674f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862af7c9542c591017a21c74b6f3fab6263c7952fc0aaf9db4c22a2a04ddc7f86750bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff0781d7cac9c378efa22a7481e4d4d29704a680ddf504b3bc50b517700ee11e6de84508f2c7fa9c351146748b3025cb78b45df37d868e48c6a75102fecdeee646740c5e3e456bed56f053f960110118ba9b95a1f5359a82283516fb2e81b6e37fc61a984514949cac1d59f8eed2df66e5047198b4d9abbe2667b988aa1210dc0d0000000000000000000000ff0000000000000000000000000000000000000000ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff0000000000000000000000010000000000000000000000000000000000000000020000000000000000000000000000000000002000000000000000000000000062e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000715018a500000000000000000000000000000000000000000000000000000000b26d7f1600000000000000000000000000000000000000000000000000000000d547741e00000000000000000000000000000000000000000000000000000000d547741f00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000b26d7f1700000000000000000000000000000000000000000000000000000000c36dd7ea0000000000000000000000000000000000000000000000000000000091d148530000000000000000000000000000000000000000000000000000000091d1485400000000000000000000000000000000000000000000000000000000a217fddf00000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000002f2ff15c0000000000000000000000000000000000000000000000000000000053e41c1d0000000000000000000000000000000000000000000000000000000053e41c1e000000000000000000000000000000000000000000000000000000005c975abb000000000000000000000000000000000000000000000000000000002f2ff15d0000000000000000000000000000000000000000000000000000000036568abe0000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000016c38b3c00000000000000000000000000000000000000000000000000000000248a9ca3118cdaa70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000001e4fbdf70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000004ad49251ddae0b218995a7fd001ab79155bdbb25933c94a417e2d67103cfe349e2517d3f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000006697b23200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000161a64a00000000000000000000000000000000000000000000000000000000d93c0665000000000000000000000000000000000000000000000000000000005db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa8dfc202b0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffc9a7000000000000000000000000000000000000000000000000000000007965db0b000000000000000000000000000000000000000000000000000000007e73ee5800000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5b4a73b0641897c63e8dbcc8f878b00e2b8f48bf1e27de6e02be657fb6022349
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001804c8ab1f12e6bbf3894d4083f33e07309d1f38
-----Decoded View---------------
Arg [0] : admin (address): 0x1804c8AB1F12E6bbf3894d4083f33e07309d1f38
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001804c8ab1f12e6bbf3894d4083f33e07309d1f38
Loading...
Loading
Loading...
Loading
[ 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.