More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 88 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Submit | 18712802 | 348 days ago | IN | 0 ETH | 0.01542029 | ||||
Submit | 18642079 | 358 days ago | IN | 0 ETH | 0.01450399 | ||||
Submit | 17462429 | 523 days ago | IN | 0 ETH | 0.00588721 | ||||
Submit | 17320799 | 543 days ago | IN | 0 ETH | 0.02459506 | ||||
Validate | 17239728 | 554 days ago | IN | 0 ETH | 0.00969674 | ||||
Validate | 17239727 | 554 days ago | IN | 0 ETH | 0.01976836 | ||||
Submit | 16975253 | 592 days ago | IN | 0 ETH | 0.00983927 | ||||
Submit | 16956081 | 594 days ago | IN | 0 ETH | 0.00979037 | ||||
Validate | 15264961 | 836 days ago | IN | 0 ETH | 0.00117816 | ||||
Submit | 15257290 | 837 days ago | IN | 0 ETH | 0.00709119 | ||||
Validate | 15120792 | 859 days ago | IN | 0 ETH | 0.00166818 | ||||
Submit | 15093947 | 863 days ago | IN | 0 ETH | 0.00854973 | ||||
Validate | 15038789 | 872 days ago | IN | 0 ETH | 0.00302924 | ||||
Submit | 15035556 | 872 days ago | IN | 0 ETH | 0.0624655 | ||||
Validate | 15034020 | 873 days ago | IN | 0 ETH | 0.003246 | ||||
Validate | 15034012 | 873 days ago | IN | 0 ETH | 0.00340244 | ||||
Submit | 15010719 | 877 days ago | IN | 0 ETH | 0.00863764 | ||||
Validate | 14995470 | 880 days ago | IN | 0 ETH | 0.0030153 | ||||
Submit | 14994520 | 880 days ago | IN | 0 ETH | 0.00635063 | ||||
Submit | 14912171 | 894 days ago | IN | 0 ETH | 0.05073694 | ||||
Validate | 14878947 | 900 days ago | IN | 0 ETH | 0.00296383 | ||||
Validate | 14808112 | 911 days ago | IN | 0 ETH | 0.00343314 | ||||
Submit | 14789223 | 914 days ago | IN | 0 ETH | 0.01521047 | ||||
Submit | 14787791 | 914 days ago | IN | 0 ETH | 0.01891561 | ||||
Validate | 14748747 | 921 days ago | IN | 0 ETH | 0.00670894 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
XiSpace
Compiler Version
v0.8.0+commit.c7dfd78e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/access/AccessControl.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; /** * The Purpose of this contract is to handle the booking of areas to display specific images at coordinates for a determined time. * The booking process is two steps, as validation from the contract operators is required. * Users can create and cancel submissions, identified by a unique ID. * The operator can accept and reject user submissions. Rejected submissions are refunded. */ contract XiSpace is AccessControl { bytes32 public constant VALIDATOR_ROLE = keccak256("VALIDATOR_ROLE"); bytes32 public constant TREASURER_ROLE = keccak256("TREASURER_ROLE"); bytes32 public constant PRICE_ROLE = keccak256("PRICE_ROLE"); uint256 public constant BETA_RHO_SUPPLY = 6790 * 10**18; uint256 public constant MAX_X = 1200; uint256 public constant MAX_Y = 1080; uint256 public PIXEL_X_PRICE = BETA_RHO_SUPPLY / MAX_X / 100; uint256 public PIXEL_Y_PRICE = BETA_RHO_SUPPLY / MAX_Y / 100; uint256 public SECOND_PRICE = 10**17; address public treasury = 0x1f7c453a4cccbF826A97F213706Ee72b79dba466; IERC20 public betaToken = IERC20(0x35F67c1D929E106FDfF8D1A55226AFe15c34dbE2); IERC20 public rhoToken = IERC20(0x3F3Cd642E81d030D7b514a2aB5e3a5536bEb90Ec); IERC20 public kappaToken = IERC20(0x5D2C6545d16e3f927a25b4567E39e2cf5076BeF4); IERC20 public gammaToken = IERC20(0x1E1EEd62F8D82ecFd8230B8d283D5b5c1bA81B55); IERC20 public xiToken = IERC20(0x295B42684F90c77DA7ea46336001010F2791Ec8c); event SUBMISSION(uint256 id, address indexed addr); event CANCELLED(uint256 id); event BOOKED(uint256 id); event REJECTED(uint256 id, bool fundsReturned); struct Booking { uint16 x; uint16 y; uint16 width; uint16 height; bool validated; uint256 time; uint256 duration; bytes32 sha; address owner; } struct Receipt { uint256 betaAmount; uint256 rhoAmount; uint256 kappaAmount; uint256 gammaAmount; uint256 xiAmount; } uint256 public bookingsCount = 0; // Store the booking submissions mapping(uint256 => Booking) public bookings; // Store the amounts of Kappa and Gamma provided by the user for an area mapping(uint256 => Receipt) public receipts; constructor(address beta, address rho, address kappa, address gamma, address xi) { // in case we want to override the addresses (for testnet) if(beta != address(0)) { betaToken = IERC20(beta); rhoToken = IERC20(rho); kappaToken = IERC20(kappa); gammaToken = IERC20(gamma); xiToken = IERC20(xi); } _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); _setupRole(VALIDATOR_ROLE, msg.sender); _setRoleAdmin(VALIDATOR_ROLE, DEFAULT_ADMIN_ROLE); _setupRole(TREASURER_ROLE, msg.sender); _setRoleAdmin(TREASURER_ROLE, DEFAULT_ADMIN_ROLE); _setupRole(PRICE_ROLE, msg.sender); _setRoleAdmin(PRICE_ROLE, DEFAULT_ADMIN_ROLE); } function setTreasury(address _treasury) external onlyRole(TREASURER_ROLE) { treasury = _treasury; } function setXiDivisor(uint256 divisor) external onlyRole(PRICE_ROLE) { SECOND_PRICE = 10**18 / divisor; } function setBetaAndRhoDivisor(uint256 divisor) external onlyRole(PRICE_ROLE) { PIXEL_X_PRICE = BETA_RHO_SUPPLY / MAX_X / divisor; PIXEL_Y_PRICE = BETA_RHO_SUPPLY / MAX_Y / divisor; } /** * @dev Called by the interface to submit a booking of an area to display an image. The user must have created 5 allowances for all tokens * At the time of submission, no collisions with previous bookings must be found or validation process will fail * User tokens are temporary stored in the contract and will be non refundable after validation * @param x X Coordinate of the upper left corner of the area, must be within screen boundaries: 0-MAX_X-1 * @param y Y Coordinate of the upper left corner of the area, must be within screen boundaries: 0-MAX_Y-1 * @param width Width of the area * @param height Height of the area * @param time Start timestamp for the display * @param duration Duration in seconds of the display * @param sha Must be the sha256 of the image as it is computed during IPFS storage * @param computedKappaAmount Amount of Kappa required to pay for the image pixels, this must be correct or the validation process will reject the submission * @param computedGammaAmount Amount of Gamma required to pay for the image pixels, this must be correct or the validation process will reject the submission */ function submit(uint16 x, uint16 y, uint16 width, uint16 height, uint256 time, uint256 duration, bytes32 sha, uint256 computedKappaAmount, uint256 computedGammaAmount) external { require(width > 0 && height > 0 && time > 0 && duration > 0 && computedKappaAmount > 0 && computedGammaAmount > 0 , "XiSpace: Invalid arguments"); require(x + width - 1 <= MAX_X, "XiSpace: Invalid area"); require(y + height - 1 <= MAX_Y, "XiSpace: Invalid area"); bookings[bookingsCount] = Booking(x, y, width, height, false, time, duration, sha, msg.sender); receipts[bookingsCount] = Receipt(PIXEL_X_PRICE * width, PIXEL_Y_PRICE * height, computedKappaAmount, computedGammaAmount, SECOND_PRICE * duration); emit SUBMISSION(bookingsCount, msg.sender); // Transfer the tokens from the user betaToken.transferFrom(msg.sender, address(this), receipts[bookingsCount].betaAmount); rhoToken.transferFrom(msg.sender, address(this), receipts[bookingsCount].rhoAmount); kappaToken.transferFrom(msg.sender, address(this), computedKappaAmount); gammaToken.transferFrom(msg.sender, address(this), computedGammaAmount); xiToken.transferFrom(msg.sender, address(this), receipts[bookingsCount].xiAmount); bookingsCount++; } /** * @dev Called by the user to cancel a submission before validation has been made * Tokens are then returned to the user * @param id ID of the booking to cancel. The address canceling must be the same as the one which created the submission */ function cancelSubmission(uint256 id) external { require(bookings[id].owner == msg.sender, "XiSpace: Access denied"); require(bookings[id].validated == false, "XiSpace: Already validated"); require(receipts[id].xiAmount > 0, "XiSpace: Booking not found"); // Transfer the tokens back to the user _moveTokens(id, msg.sender); delete bookings[id]; delete receipts[id]; emit CANCELLED(id); } /** * @dev Called by the validator: Accept or reject a booking submission * In case of rejection, tokens could be refunded, in case of acceptance the tokens are sent to treasury * @param id ID of the submission to validate * @param accept True to accept the submission, false to reject it * @param returnFunds True if the validator choses to return user funds */ function validate(uint256 id, bool accept, bool returnFunds) external onlyRole(VALIDATOR_ROLE) { require(bookings[id].validated == false, "XiSpace: Already validated"); if(accept) { // Transfer the tokens to the treasury _moveTokens(id, treasury); bookings[id].validated = true; emit BOOKED(id); } else { if(returnFunds) { // Transfer the tokens back to the user _moveTokens(id, bookings[id].owner); } else { // Transfer the tokens to the treasury _moveTokens(id, treasury); } delete bookings[id]; delete receipts[id]; emit REJECTED(id, returnFunds); } } /** * @dev Moves all 5 tokens from this contract to any destination * @param id ID of the submission to move the tokens of * @param destination Address to send the tokens to */ function _moveTokens(uint256 id, address destination) internal { Receipt memory receipt = receipts[id]; betaToken.transfer(destination, receipt.betaAmount); rhoToken.transfer(destination, receipt.rhoAmount); kappaToken.transfer(destination, receipt.kappaAmount); gammaToken.transfer(destination, receipt.gammaAmount); xiToken.transfer(destination, receipt.xiAmount); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/AccessControl.sol) pragma solidity ^0.8.0; import "./IAccessControl.sol"; import "../utils/Context.sol"; import "../utils/Strings.sol"; import "../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: * * ``` * 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}: * * ``` * 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. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role, _msgSender()); _; } /** * @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 override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @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 override 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. */ function grantRole(bytes32 role, address account) public virtual override 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. */ function revokeRole(bytes32 role, address account) public virtual override 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 `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @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 Grants `role` to `account`. * * Internal function without access restriction. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @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. * * _Available since v3.1._ */ 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, an admin role * bearer except when using {AccessControl-_setupRole}. */ 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 `account`. */ function renounceRole(bytes32 role, address account) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @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; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 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); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * 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[EIP 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); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"beta","type":"address"},{"internalType":"address","name":"rho","type":"address"},{"internalType":"address","name":"kappa","type":"address"},{"internalType":"address","name":"gamma","type":"address"},{"internalType":"address","name":"xi","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"BOOKED","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"CANCELLED","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bool","name":"fundsReturned","type":"bool"}],"name":"REJECTED","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":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"SUBMISSION","type":"event"},{"inputs":[],"name":"BETA_RHO_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_X","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_Y","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PIXEL_X_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PIXEL_Y_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SECOND_PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TREASURER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VALIDATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"betaToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bookings","outputs":[{"internalType":"uint16","name":"x","type":"uint16"},{"internalType":"uint16","name":"y","type":"uint16"},{"internalType":"uint16","name":"width","type":"uint16"},{"internalType":"uint16","name":"height","type":"uint16"},{"internalType":"bool","name":"validated","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"bytes32","name":"sha","type":"bytes32"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bookingsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"cancelSubmission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gammaToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"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":"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":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kappaToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"receipts","outputs":[{"internalType":"uint256","name":"betaAmount","type":"uint256"},{"internalType":"uint256","name":"rhoAmount","type":"uint256"},{"internalType":"uint256","name":"kappaAmount","type":"uint256"},{"internalType":"uint256","name":"gammaAmount","type":"uint256"},{"internalType":"uint256","name":"xiAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","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":[],"name":"rhoToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setBetaAndRhoDivisor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setXiDivisor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"x","type":"uint16"},{"internalType":"uint16","name":"y","type":"uint16"},{"internalType":"uint16","name":"width","type":"uint16"},{"internalType":"uint16","name":"height","type":"uint16"},{"internalType":"uint256","name":"time","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"bytes32","name":"sha","type":"bytes32"},{"internalType":"uint256","name":"computedKappaAmount","type":"uint256"},{"internalType":"uint256","name":"computedGammaAmount","type":"uint256"}],"name":"submit","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":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bool","name":"accept","type":"bool"},{"internalType":"bool","name":"returnFunds","type":"bool"}],"name":"validate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"xiToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405260646200001e6104b0690170162de109c658000062000436565b6200002a919062000436565b600155606462000047610438690170162de109c658000062000436565b62000053919062000436565b60025567016345785d8a0000600355600480546001600160a01b0319908116731f7c453a4cccbf826a97f213706ee72b79dba466179091556005805482167335f67c1d929e106fdff8d1a55226afe15c34dbe2179055600680548216733f3cd642e81d030d7b514a2ab5e3a5536beb90ec179055600780548216735d2c6545d16e3f927a25b4567e39e2cf5076bef4179055600880548216731e1eed62f8d82ecfd8230b8d283d5b5c1ba81b551790556009805490911673295b42684f90c77da7ea46336001010f2791ec8c1790556000600a553480156200013457600080fd5b50604051620021b3380380620021b38339810160408190526200015791620003c7565b6001600160a01b03851615620001be57600580546001600160a01b03199081166001600160a01b0388811691909117909255600680548216878416179055600780548216868416179055600880548216858416179055600980549091169183169190911790555b620001cb6000336200027b565b620001e660008051602062002173833981519152336200027b565b620002026000805160206200217383398151915260006200028b565b6200021d60008051602062002153833981519152336200027b565b620002396000805160206200215383398151915260006200028b565b6200025460008051602062002193833981519152336200027b565b620002706000805160206200219383398151915260006200028b565b505050505062000457565b620002878282620002e0565b5050565b600062000298836200036a565b600084815260208190526040808220600101859055519192508391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b620002ec828262000382565b62000287576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905562000326620003ab565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000818152602081905260409020600101545b919050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b3390565b80516001600160a01b03811681146200037d57600080fd5b600080600080600060a08688031215620003df578081fd5b620003ea86620003af565b9450620003fa60208701620003af565b93506200040a60408701620003af565b92506200041a60608701620003af565b91506200042a60808701620003af565b90509295509295909350565b6000826200045257634e487b7160e01b81526012600452602481fd5b500490565b611cec80620004676000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639c37f6a91161010f578063cba68cb3116100a2578063f0a3a97c11610071578063f0a3a97c146103a9578063f0f44260146103b1578063fb91758a146103c4578063fe00f275146103cc576101e5565b8063cba68cb314610373578063d547741f1461037b578063e6a837571461038e578063ef399b9614610396576101e5565b8063b1aaf17b116100de578063b1aaf17b14610353578063b6406b181461035b578063c49baebe14610363578063c57cce7a1461036b576101e5565b80639c37f6a914610312578063a217fddf14610325578063aa4c18591461032d578063aa68aea114610340576101e5565b80632f2ff15d116101875780635db6352d116101565780635db6352d146102dc57806361d027b3146102ef57806365b768e3146102f757806391d14854146102ff576101e5565b80632f2ff15d146102a457806336568abe146102b95780635944bc02146102cc5780635d5b31d8146102d4576101e5565b806311aa9aff116101c357806311aa9aff1461024c5780631dab301e14610254578063248a9ca31461027c57806324e5f13a1461029c576101e5565b806301ffc9a7146101ea5780630e471b94146102135780630f7ee1ec14610228575b600080fd5b6101fd6101f8366004611789565b6103d4565b60405161020a9190611939565b60405180910390f35b61021b610401565b60405161020a91906118e8565b61023b610236366004611746565b610410565b60405161020a959493929190611b6e565b61021b61043f565b610267610262366004611746565b61044e565b60405161020a99989796959493929190611b08565b61028f61028a366004611746565b6104b7565b60405161020a9190611944565b61028f6104cc565b6102b76102b236600461175e565b6104da565b005b6102b76102c736600461175e565b610503565b61028f610552565b61028f610558565b6102b76102ea366004611746565b61055e565b61021b6106ae565b61021b6106bd565b6101fd61030d36600461175e565b6106cc565b6102b7610320366004611746565b6106f5565b61028f61073b565b6102b761033b366004611746565b610740565b6102b761034e366004611832565b6107b9565b61021b610991565b61028f6109a0565b61028f6109a6565b61028f6109ca565b61028f6109d0565b6102b761038936600461175e565b6109d6565b61028f6109f5565b6102b76103a43660046117b1565b6109fb565b61028f611011565b6102b76103bf366004611710565b611035565b61028f611085565b61021b6110a9565b60006001600160e01b03198216637965db0b60e01b14806103f957506103f9826110b8565b90505b919050565b6006546001600160a01b031681565b600c60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b6005546001600160a01b031681565b600b602052600090815260409020805460018201546002830154600384015460049094015461ffff8085169562010000860482169564010000000081048316956601000000000000820490931694600160401b90910460ff16939091906001600160a01b031689565b60009081526020819052604090206001015490565b690170162de109c658000081565b6104e3826104b7565b6104f4816104ef6110d1565b6110d5565b6104fe8383611139565b505050565b61050b6110d1565b6001600160a01b0316816001600160a01b0316146105445760405162461bcd60e51b815260040161053b90611ab9565b60405180910390fd5b61054e82826111be565b5050565b6104b081565b61043881565b6000818152600b60205260409020600401546001600160a01b031633146105975760405162461bcd60e51b815260040161053b906119ec565b6000818152600b6020526040902054600160401b900460ff16156105cd5760405162461bcd60e51b815260040161053b90611a82565b6000818152600c60205260409020600401546105fb5760405162461bcd60e51b815260040161053b906119b5565b6106058133611241565b6000818152600b60209081526040808320805468ffffffffffffffffff19168155600180820185905560028083018690556003808401879055600493840180546001600160a01b0319169055600c90955283862086815591820186905581018590559283018490559190910191909155517f512422de3363151ad38cf749183d746a5a6632b5c0efcca697cb9244c459704b906106a3908390611944565b60405180910390a150565b6004546001600160a01b031681565b6009546001600160a01b031681565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b7fd4656a873938c6a54143cf99a88af3386da566bdef9cba62b37bbb4b88969b2d610722816104ef6110d1565b61073482670de0b6b3a7640000611bcf565b6003555050565b600081565b7fd4656a873938c6a54143cf99a88af3386da566bdef9cba62b37bbb4b88969b2d61076d816104ef6110d1565b816107846104b0690170162de109c6580000611bcf565b61078e9190611bcf565b600155816107a8610438690170162de109c6580000611bcf565b6107b29190611bcf565b6002555050565b7f21702c8af46127c7fa207f89d0b0a8441bb32959a0ac7df790e9ab1a25c989266107e6816104ef6110d1565b6000848152600b6020526040902054600160401b900460ff161561081c5760405162461bcd60e51b815260040161053b90611a82565b821561089a576004546108399085906001600160a01b0316611241565b6000848152600b602052604090819020805468ff00000000000000001916600160401b179055517f43b04423d89e4fdb0a267c1dc31ba38e1ef6dc8be1bdad3b54ba35a6013af49e9061088d908690611944565b60405180910390a161098b565b81156108cb576000848152600b60205260409020600401546108c69085906001600160a01b0316611241565b6108e2565b6004546108e29085906001600160a01b0316611241565b6000848152600b60209081526040808320805468ffffffffffffffffff19168155600180820185905560028083018690556003808401879055600493840180546001600160a01b0319169055600c90955283862086815591820186905581018590559283018490559190910191909155517f10708fc55212da8fe696ef91289fa6afa98a84b0c100445c150cfce9ad706851906109829086908590611b5e565b60405180910390a15b50505050565b6008546001600160a01b031681565b600a5481565b7f21702c8af46127c7fa207f89d0b0a8441bb32959a0ac7df790e9ab1a25c9892681565b60015481565b60025481565b6109df826104b7565b6109eb816104ef6110d1565b6104fe83836111be565b60035481565b60008761ffff16118015610a13575060008661ffff16115b8015610a1f5750600085115b8015610a2b5750600084115b8015610a375750600082115b8015610a435750600081115b610a5f5760405162461bcd60e51b815260040161053b90611a4b565b6104b06001610a6e898c611b91565b610a789190611c0e565b61ffff161115610a9a5760405162461bcd60e51b815260040161053b90611a1c565b6104386001610aa9888b611b91565b610ab39190611c0e565b61ffff161115610ad55760405162461bcd60e51b815260040161053b90611a1c565b6040518061012001604052808a61ffff1681526020018961ffff1681526020018861ffff1681526020018761ffff168152602001600015158152602001868152602001858152602001848152602001336001600160a01b0316815250600b6000600a54815260200190815260200160002060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555060408201518160000160046101000a81548161ffff021916908361ffff16021790555060608201518160000160066101000a81548161ffff021916908361ffff16021790555060808201518160000160086101000a81548160ff02191690831515021790555060a0820151816001015560c0820151816002015560e082015181600301556101008201518160040160006101000a8154816001600160a01b0302191690836001600160a01b031602179055509050506040518060a001604052808861ffff16600154610c5e9190611bef565b81526020018761ffff16600254610c759190611bef565b815260200183815260200182815260200185600354610c949190611bef565b9052600a80546000908152600c6020908152604091829020845181559084015160018201558382015160028201556060840151600382015560809093015160049093019290925554905133917fb3588f6ad9fa0d2dd8b22915f30ca1dd1661689b5e90a6551fd6315f2206e13e91610d0c9190611944565b60405180910390a2600554600a546000908152600c6020526040908190205490516323b872dd60e01b81526001600160a01b03909216916323b872dd91610d5991339130916004016118fc565b602060405180830381600087803b158015610d7357600080fd5b505af1158015610d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dab919061172a565b50600654600a546000908152600c6020526040908190206001015490516323b872dd60e01b81526001600160a01b03909216916323b872dd91610df491339130916004016118fc565b602060405180830381600087803b158015610e0e57600080fd5b505af1158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e46919061172a565b506007546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610e7b903390309087906004016118fc565b602060405180830381600087803b158015610e9557600080fd5b505af1158015610ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecd919061172a565b506008546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610f02903390309086906004016118fc565b602060405180830381600087803b158015610f1c57600080fd5b505af1158015610f30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f54919061172a565b50600954600a546000908152600c60205260409081902060049081015491516323b872dd60e01b81526001600160a01b03909316926323b872dd92610f9e923392309291016118fc565b602060405180830381600087803b158015610fb857600080fd5b505af1158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff0919061172a565b50600a805490600061100183611c74565b9190505550505050505050505050565b7f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d0781565b7f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07611062816104ef6110d1565b50600480546001600160a01b0319166001600160a01b0392909216919091179055565b7fd4656a873938c6a54143cf99a88af3386da566bdef9cba62b37bbb4b88969b2d81565b6007546001600160a01b031681565b6001600160e01b031981166301ffc9a760e01b14919050565b3390565b6110df82826106cc565b61054e576110f7816001600160a01b0316601461152e565b61110283602061152e565b604051602001611113929190611873565b60408051601f198184030181529082905262461bcd60e51b825261053b9160040161194d565b61114382826106cc565b61054e576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561117a6110d1565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6111c882826106cc565b1561054e576000828152602081815260408083206001600160a01b03851684529091529020805460ff191690556111fd6110d1565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000828152600c6020908152604091829020825160a0810184528154808252600183015493820193909352600282015481850152600382015460608201526004918201546080820152600554935163a9059cbb60e01b815290936001600160a01b03169263a9059cbb926112b89287929101611920565b602060405180830381600087803b1580156112d257600080fd5b505af11580156112e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130a919061172a565b50600654602082015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161134191869190600401611920565b602060405180830381600087803b15801561135b57600080fd5b505af115801561136f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611393919061172a565b50600754604080830151905163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916113ca91869190600401611920565b602060405180830381600087803b1580156113e457600080fd5b505af11580156113f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141c919061172a565b50600854606082015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161145391869190600401611920565b602060405180830381600087803b15801561146d57600080fd5b505af1158015611481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a5919061172a565b50600954608082015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916114dc91869190600401611920565b602060405180830381600087803b1580156114f657600080fd5b505af115801561150a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b919061172a565b6060600061153d836002611bef565b611548906002611bb7565b67ffffffffffffffff81111561156e57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611598576020820181803683370190505b509050600360fc1b816000815181106115c157634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106115fe57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000611622846002611bef565b61162d906001611bb7565b90505b60018111156116c1576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061166f57634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061169357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c936116ba81611c5d565b9050611630565b5083156116e05760405162461bcd60e51b815260040161053b90611980565b9392505050565b80356001600160a01b03811681146103fc57600080fd5b803561ffff811681146103fc57600080fd5b600060208284031215611721578081fd5b6116e0826116e7565b60006020828403121561173b578081fd5b81516116e081611ca5565b600060208284031215611757578081fd5b5035919050565b60008060408385031215611770578081fd5b82359150611780602084016116e7565b90509250929050565b60006020828403121561179a578081fd5b81356001600160e01b0319811681146116e0578182fd5b60008060008060008060008060006101208a8c0312156117cf578485fd5b6117d88a6116fe565b98506117e660208b016116fe565b97506117f460408b016116fe565b965061180260608b016116fe565b989b979a50959860808101359760a0820135975060c0820135965060e08201359550610100909101359350915050565b600080600060608486031215611846578283fd5b83359250602084013561185881611ca5565b9150604084013561186881611ca5565b809150509250925092565b60007f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000825283516118ab816017850160208801611c31565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118dc816028840160208801611c31565b01602801949350505050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b600060208252825180602084015261196c816040850160208701611c31565b601f01601f19169190910160400192915050565b6020808252818101527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604082015260600190565b6020808252601a908201527f586953706163653a20426f6f6b696e67206e6f7420666f756e64000000000000604082015260600190565b602080825260169082015275161a54dc1858d94e881058d8d95cdcc819195b9a595960521b604082015260600190565b602080825260159082015274586953706163653a20496e76616c6964206172656160581b604082015260600190565b6020808252601a908201527f586953706163653a20496e76616c696420617267756d656e7473000000000000604082015260600190565b6020808252601a908201527f586953706163653a20416c72656164792076616c696461746564000000000000604082015260600190565b6020808252602f908201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560408201526e103937b632b9903337b91039b2b63360891b606082015260800190565b61ffff998a16815297891660208901529588166040880152939096166060860152901515608085015260a084015260c083019390935260e08201929092526001600160a01b039091166101008201526101200190565b9182521515602082015260400190565b948552602085019390935260408401919091526060830152608082015260a00190565b600061ffff808316818516808303821115611bae57611bae611c8f565b01949350505050565b60008219821115611bca57611bca611c8f565b500190565b600082611bea57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611c0957611c09611c8f565b500290565b600061ffff83811690831681811015611c2957611c29611c8f565b039392505050565b60005b83811015611c4c578181015183820152602001611c34565b8381111561098b5750506000910152565b600081611c6c57611c6c611c8f565b506000190190565b6000600019821415611c8857611c88611c8f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b8015158114611cb357600080fd5b5056fea26469706673582212207866a6ea7edbf4375fc1a64fce96e9ab50bf4ca53bbd3e646b42f258cda75cda64736f6c634300080000333496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d0721702c8af46127c7fa207f89d0b0a8441bb32959a0ac7df790e9ab1a25c98926d4656a873938c6a54143cf99a88af3386da566bdef9cba62b37bbb4b88969b2d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639c37f6a91161010f578063cba68cb3116100a2578063f0a3a97c11610071578063f0a3a97c146103a9578063f0f44260146103b1578063fb91758a146103c4578063fe00f275146103cc576101e5565b8063cba68cb314610373578063d547741f1461037b578063e6a837571461038e578063ef399b9614610396576101e5565b8063b1aaf17b116100de578063b1aaf17b14610353578063b6406b181461035b578063c49baebe14610363578063c57cce7a1461036b576101e5565b80639c37f6a914610312578063a217fddf14610325578063aa4c18591461032d578063aa68aea114610340576101e5565b80632f2ff15d116101875780635db6352d116101565780635db6352d146102dc57806361d027b3146102ef57806365b768e3146102f757806391d14854146102ff576101e5565b80632f2ff15d146102a457806336568abe146102b95780635944bc02146102cc5780635d5b31d8146102d4576101e5565b806311aa9aff116101c357806311aa9aff1461024c5780631dab301e14610254578063248a9ca31461027c57806324e5f13a1461029c576101e5565b806301ffc9a7146101ea5780630e471b94146102135780630f7ee1ec14610228575b600080fd5b6101fd6101f8366004611789565b6103d4565b60405161020a9190611939565b60405180910390f35b61021b610401565b60405161020a91906118e8565b61023b610236366004611746565b610410565b60405161020a959493929190611b6e565b61021b61043f565b610267610262366004611746565b61044e565b60405161020a99989796959493929190611b08565b61028f61028a366004611746565b6104b7565b60405161020a9190611944565b61028f6104cc565b6102b76102b236600461175e565b6104da565b005b6102b76102c736600461175e565b610503565b61028f610552565b61028f610558565b6102b76102ea366004611746565b61055e565b61021b6106ae565b61021b6106bd565b6101fd61030d36600461175e565b6106cc565b6102b7610320366004611746565b6106f5565b61028f61073b565b6102b761033b366004611746565b610740565b6102b761034e366004611832565b6107b9565b61021b610991565b61028f6109a0565b61028f6109a6565b61028f6109ca565b61028f6109d0565b6102b761038936600461175e565b6109d6565b61028f6109f5565b6102b76103a43660046117b1565b6109fb565b61028f611011565b6102b76103bf366004611710565b611035565b61028f611085565b61021b6110a9565b60006001600160e01b03198216637965db0b60e01b14806103f957506103f9826110b8565b90505b919050565b6006546001600160a01b031681565b600c60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b6005546001600160a01b031681565b600b602052600090815260409020805460018201546002830154600384015460049094015461ffff8085169562010000860482169564010000000081048316956601000000000000820490931694600160401b90910460ff16939091906001600160a01b031689565b60009081526020819052604090206001015490565b690170162de109c658000081565b6104e3826104b7565b6104f4816104ef6110d1565b6110d5565b6104fe8383611139565b505050565b61050b6110d1565b6001600160a01b0316816001600160a01b0316146105445760405162461bcd60e51b815260040161053b90611ab9565b60405180910390fd5b61054e82826111be565b5050565b6104b081565b61043881565b6000818152600b60205260409020600401546001600160a01b031633146105975760405162461bcd60e51b815260040161053b906119ec565b6000818152600b6020526040902054600160401b900460ff16156105cd5760405162461bcd60e51b815260040161053b90611a82565b6000818152600c60205260409020600401546105fb5760405162461bcd60e51b815260040161053b906119b5565b6106058133611241565b6000818152600b60209081526040808320805468ffffffffffffffffff19168155600180820185905560028083018690556003808401879055600493840180546001600160a01b0319169055600c90955283862086815591820186905581018590559283018490559190910191909155517f512422de3363151ad38cf749183d746a5a6632b5c0efcca697cb9244c459704b906106a3908390611944565b60405180910390a150565b6004546001600160a01b031681565b6009546001600160a01b031681565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b7fd4656a873938c6a54143cf99a88af3386da566bdef9cba62b37bbb4b88969b2d610722816104ef6110d1565b61073482670de0b6b3a7640000611bcf565b6003555050565b600081565b7fd4656a873938c6a54143cf99a88af3386da566bdef9cba62b37bbb4b88969b2d61076d816104ef6110d1565b816107846104b0690170162de109c6580000611bcf565b61078e9190611bcf565b600155816107a8610438690170162de109c6580000611bcf565b6107b29190611bcf565b6002555050565b7f21702c8af46127c7fa207f89d0b0a8441bb32959a0ac7df790e9ab1a25c989266107e6816104ef6110d1565b6000848152600b6020526040902054600160401b900460ff161561081c5760405162461bcd60e51b815260040161053b90611a82565b821561089a576004546108399085906001600160a01b0316611241565b6000848152600b602052604090819020805468ff00000000000000001916600160401b179055517f43b04423d89e4fdb0a267c1dc31ba38e1ef6dc8be1bdad3b54ba35a6013af49e9061088d908690611944565b60405180910390a161098b565b81156108cb576000848152600b60205260409020600401546108c69085906001600160a01b0316611241565b6108e2565b6004546108e29085906001600160a01b0316611241565b6000848152600b60209081526040808320805468ffffffffffffffffff19168155600180820185905560028083018690556003808401879055600493840180546001600160a01b0319169055600c90955283862086815591820186905581018590559283018490559190910191909155517f10708fc55212da8fe696ef91289fa6afa98a84b0c100445c150cfce9ad706851906109829086908590611b5e565b60405180910390a15b50505050565b6008546001600160a01b031681565b600a5481565b7f21702c8af46127c7fa207f89d0b0a8441bb32959a0ac7df790e9ab1a25c9892681565b60015481565b60025481565b6109df826104b7565b6109eb816104ef6110d1565b6104fe83836111be565b60035481565b60008761ffff16118015610a13575060008661ffff16115b8015610a1f5750600085115b8015610a2b5750600084115b8015610a375750600082115b8015610a435750600081115b610a5f5760405162461bcd60e51b815260040161053b90611a4b565b6104b06001610a6e898c611b91565b610a789190611c0e565b61ffff161115610a9a5760405162461bcd60e51b815260040161053b90611a1c565b6104386001610aa9888b611b91565b610ab39190611c0e565b61ffff161115610ad55760405162461bcd60e51b815260040161053b90611a1c565b6040518061012001604052808a61ffff1681526020018961ffff1681526020018861ffff1681526020018761ffff168152602001600015158152602001868152602001858152602001848152602001336001600160a01b0316815250600b6000600a54815260200190815260200160002060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555060408201518160000160046101000a81548161ffff021916908361ffff16021790555060608201518160000160066101000a81548161ffff021916908361ffff16021790555060808201518160000160086101000a81548160ff02191690831515021790555060a0820151816001015560c0820151816002015560e082015181600301556101008201518160040160006101000a8154816001600160a01b0302191690836001600160a01b031602179055509050506040518060a001604052808861ffff16600154610c5e9190611bef565b81526020018761ffff16600254610c759190611bef565b815260200183815260200182815260200185600354610c949190611bef565b9052600a80546000908152600c6020908152604091829020845181559084015160018201558382015160028201556060840151600382015560809093015160049093019290925554905133917fb3588f6ad9fa0d2dd8b22915f30ca1dd1661689b5e90a6551fd6315f2206e13e91610d0c9190611944565b60405180910390a2600554600a546000908152600c6020526040908190205490516323b872dd60e01b81526001600160a01b03909216916323b872dd91610d5991339130916004016118fc565b602060405180830381600087803b158015610d7357600080fd5b505af1158015610d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dab919061172a565b50600654600a546000908152600c6020526040908190206001015490516323b872dd60e01b81526001600160a01b03909216916323b872dd91610df491339130916004016118fc565b602060405180830381600087803b158015610e0e57600080fd5b505af1158015610e22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e46919061172a565b506007546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610e7b903390309087906004016118fc565b602060405180830381600087803b158015610e9557600080fd5b505af1158015610ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecd919061172a565b506008546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610f02903390309086906004016118fc565b602060405180830381600087803b158015610f1c57600080fd5b505af1158015610f30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f54919061172a565b50600954600a546000908152600c60205260409081902060049081015491516323b872dd60e01b81526001600160a01b03909316926323b872dd92610f9e923392309291016118fc565b602060405180830381600087803b158015610fb857600080fd5b505af1158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff0919061172a565b50600a805490600061100183611c74565b9190505550505050505050505050565b7f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d0781565b7f3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07611062816104ef6110d1565b50600480546001600160a01b0319166001600160a01b0392909216919091179055565b7fd4656a873938c6a54143cf99a88af3386da566bdef9cba62b37bbb4b88969b2d81565b6007546001600160a01b031681565b6001600160e01b031981166301ffc9a760e01b14919050565b3390565b6110df82826106cc565b61054e576110f7816001600160a01b0316601461152e565b61110283602061152e565b604051602001611113929190611873565b60408051601f198184030181529082905262461bcd60e51b825261053b9160040161194d565b61114382826106cc565b61054e576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561117a6110d1565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6111c882826106cc565b1561054e576000828152602081815260408083206001600160a01b03851684529091529020805460ff191690556111fd6110d1565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000828152600c6020908152604091829020825160a0810184528154808252600183015493820193909352600282015481850152600382015460608201526004918201546080820152600554935163a9059cbb60e01b815290936001600160a01b03169263a9059cbb926112b89287929101611920565b602060405180830381600087803b1580156112d257600080fd5b505af11580156112e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130a919061172a565b50600654602082015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161134191869190600401611920565b602060405180830381600087803b15801561135b57600080fd5b505af115801561136f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611393919061172a565b50600754604080830151905163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916113ca91869190600401611920565b602060405180830381600087803b1580156113e457600080fd5b505af11580156113f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141c919061172a565b50600854606082015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161145391869190600401611920565b602060405180830381600087803b15801561146d57600080fd5b505af1158015611481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a5919061172a565b50600954608082015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916114dc91869190600401611920565b602060405180830381600087803b1580156114f657600080fd5b505af115801561150a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b919061172a565b6060600061153d836002611bef565b611548906002611bb7565b67ffffffffffffffff81111561156e57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611598576020820181803683370190505b509050600360fc1b816000815181106115c157634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106115fe57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000611622846002611bef565b61162d906001611bb7565b90505b60018111156116c1576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061166f57634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061169357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c936116ba81611c5d565b9050611630565b5083156116e05760405162461bcd60e51b815260040161053b90611980565b9392505050565b80356001600160a01b03811681146103fc57600080fd5b803561ffff811681146103fc57600080fd5b600060208284031215611721578081fd5b6116e0826116e7565b60006020828403121561173b578081fd5b81516116e081611ca5565b600060208284031215611757578081fd5b5035919050565b60008060408385031215611770578081fd5b82359150611780602084016116e7565b90509250929050565b60006020828403121561179a578081fd5b81356001600160e01b0319811681146116e0578182fd5b60008060008060008060008060006101208a8c0312156117cf578485fd5b6117d88a6116fe565b98506117e660208b016116fe565b97506117f460408b016116fe565b965061180260608b016116fe565b989b979a50959860808101359760a0820135975060c0820135965060e08201359550610100909101359350915050565b600080600060608486031215611846578283fd5b83359250602084013561185881611ca5565b9150604084013561186881611ca5565b809150509250925092565b60007f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000825283516118ab816017850160208801611c31565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118dc816028840160208801611c31565b01602801949350505050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b600060208252825180602084015261196c816040850160208701611c31565b601f01601f19169190910160400192915050565b6020808252818101527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604082015260600190565b6020808252601a908201527f586953706163653a20426f6f6b696e67206e6f7420666f756e64000000000000604082015260600190565b602080825260169082015275161a54dc1858d94e881058d8d95cdcc819195b9a595960521b604082015260600190565b602080825260159082015274586953706163653a20496e76616c6964206172656160581b604082015260600190565b6020808252601a908201527f586953706163653a20496e76616c696420617267756d656e7473000000000000604082015260600190565b6020808252601a908201527f586953706163653a20416c72656164792076616c696461746564000000000000604082015260600190565b6020808252602f908201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560408201526e103937b632b9903337b91039b2b63360891b606082015260800190565b61ffff998a16815297891660208901529588166040880152939096166060860152901515608085015260a084015260c083019390935260e08201929092526001600160a01b039091166101008201526101200190565b9182521515602082015260400190565b948552602085019390935260408401919091526060830152608082015260a00190565b600061ffff808316818516808303821115611bae57611bae611c8f565b01949350505050565b60008219821115611bca57611bca611c8f565b500190565b600082611bea57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611c0957611c09611c8f565b500290565b600061ffff83811690831681811015611c2957611c29611c8f565b039392505050565b60005b83811015611c4c578181015183820152602001611c34565b8381111561098b5750506000910152565b600081611c6c57611c6c611c8f565b506000190190565b6000600019821415611c8857611c88611c8f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b8015158114611cb357600080fd5b5056fea26469706673582212207866a6ea7edbf4375fc1a64fce96e9ab50bf4ca53bbd3e646b42f258cda75cda64736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : beta (address): 0x0000000000000000000000000000000000000000
Arg [1] : rho (address): 0x0000000000000000000000000000000000000000
Arg [2] : kappa (address): 0x0000000000000000000000000000000000000000
Arg [3] : gamma (address): 0x0000000000000000000000000000000000000000
Arg [4] : xi (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.003756 | 87,810.9 | $329.82 |
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.