Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Latest 21 from a total of 21 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint With Como M... | 6827515 | 32 hrs ago | IN | 0 ETH | 0.00003652 | ||||
Mint With Como M... | 6650310 | 4 days ago | IN | 0 ETH | 0.00000377 | ||||
Mint With Como M... | 6649733 | 4 days ago | IN | 0 ETH | 0.00000412 | ||||
Mint With Como M... | 6649720 | 4 days ago | IN | 0 ETH | 0.00000544 | ||||
Mint With Como M... | 6647547 | 4 days ago | IN | 0 ETH | 0.00000541 | ||||
Grant Role | 6647504 | 4 days ago | IN | 0 ETH | 0.00000216 | ||||
Grant Role | 6647498 | 4 days ago | IN | 0 ETH | 0.00000216 | ||||
Grant Role | 6647491 | 4 days ago | IN | 0 ETH | 0.00000216 | ||||
Grant Role | 6647476 | 4 days ago | IN | 0 ETH | 0.00000216 | ||||
Grant Role | 6647468 | 4 days ago | IN | 0 ETH | 0.00000216 | ||||
Grant Role | 6647461 | 4 days ago | IN | 0 ETH | 0.00000216 | ||||
Grant Role | 6647454 | 4 days ago | IN | 0 ETH | 0.00000216 | ||||
Grant Role | 6647449 | 4 days ago | IN | 0 ETH | 0.00000271 | ||||
Grant Role | 6645431 | 4 days ago | IN | 0 ETH | 0.00000216 | ||||
Grant Role | 6645424 | 4 days ago | IN | 0 ETH | 0.00000216 | ||||
Grant Role | 6645417 | 4 days ago | IN | 0 ETH | 0.00000216 | ||||
Grant Role | 6645409 | 4 days ago | IN | 0 ETH | 0.00000216 | ||||
Grant Role | 6645403 | 4 days ago | IN | 0 ETH | 0.00000216 | ||||
Grant Role | 6645397 | 4 days ago | IN | 0 ETH | 0.00000216 | ||||
Grant Role | 6645392 | 4 days ago | IN | 0 ETH | 0.00000216 | ||||
Grant Role | 6645387 | 4 days ago | IN | 0 ETH | 0.00000221 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
6827515 | 32 hrs ago | 0 ETH | ||||
6827515 | 32 hrs ago | 0 ETH | ||||
6827515 | 32 hrs ago | 0 ETH | ||||
6827515 | 32 hrs ago | 0 ETH | ||||
6827515 | 32 hrs ago | 0 ETH | ||||
6827515 | 32 hrs ago | 0 ETH | ||||
6827515 | 32 hrs ago | 0 ETH | ||||
6827515 | 32 hrs ago | 0 ETH | ||||
6827515 | 32 hrs ago | 0 ETH | ||||
6650310 | 4 days ago | 0 ETH | ||||
6650310 | 4 days ago | 0 ETH | ||||
6650310 | 4 days ago | 0 ETH | ||||
6650310 | 4 days ago | 0 ETH | ||||
6650310 | 4 days ago | 0 ETH | ||||
6650310 | 4 days ago | 0 ETH | ||||
6650310 | 4 days ago | 0 ETH | ||||
6650310 | 4 days ago | 0 ETH | ||||
6650310 | 4 days ago | 0 ETH | ||||
6649733 | 4 days ago | 0 ETH | ||||
6649733 | 4 days ago | 0 ETH | ||||
6649733 | 4 days ago | 0 ETH | ||||
6649733 | 4 days ago | 0 ETH | ||||
6649733 | 4 days ago | 0 ETH | ||||
6649733 | 4 days ago | 0 ETH | ||||
6649733 | 4 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:
ObjektMinter
Compiler Version
v0.8.28+commit.7893614a
ZkSolc Version
v1.5.8
Optimization Enabled:
Yes with Mode z
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Unlicense pragma solidity ^0.8.20; import "@openzeppelin/contracts/access/AccessControl.sol"; import "../objekt/IObjekt.sol"; import "../como/IComo.sol"; /** * ObjektMinter는 Objekt와 Como 토큰을 함께 발행(mint)하는 역할을 합니다. * 이 컨트랙트를 사용할 때에는 두 가지 중요한 역할 설정이 있습니다 * - Objekt 컨트랙트에 MINTER_ROLE이 부여되어야 합니다. * - Como 컨트랙트에 MINTER_ROLE이 부여되어야 합니다. */ contract ObjektMinter is AccessControl { string private constant ERROR_INVALID_LENGTH = "ObjektMinter: Invalid length"; struct ComoMintPair { uint256 tokenId; uint256 amount; bytes data; } struct ObjektMintPair { uint256 tokenId; bool transferable; } struct ObjektWithComoMintManyPair { address[] to; uint256[] objektTokenIds; bool[] objektTransferable; uint256[] comoTokenId; uint256[] comoAmountPerObjekt; } struct ObjektWithComoMintManyEfficientPair { address[] to; uint256[] objektTokenIds; bool objektTransferable; uint256[] comoTokenId; uint256 comoAmountPerObjekt; } // operators can mint Objekt. bytes32 public constant OPERATOR_ROLE = keccak256("OPERATOR_ROLE"); IObjekt public objekt; IComo public como; constructor(address objektAddress, address comoAddress) { objekt = IObjekt(objektAddress); como = IComo(comoAddress); _grantRole(AccessControl.DEFAULT_ADMIN_ROLE, msg.sender); } /** * Objekt 와 Como를 동시에 민팅합니다 */ function mintWithComo( address to, ObjektMintPair memory objektMintPair, ComoMintPair memory comoMintPair ) public onlyRole(OPERATOR_ROLE) { objekt.mint(to, objektMintPair.tokenId, objektMintPair.transferable); como.mint( to, comoMintPair.tokenId, comoMintPair.amount, comoMintPair.data ); } /** * Objekt 와 Como 쌍을 여러 개 민팅합니다 */ function mintWithComoMany( ObjektWithComoMintManyPair memory objektWithComoMintManyPair ) public onlyRole(OPERATOR_ROLE) { // 배열 길이를 로컬 변수에 저장 uint256 len = objektWithComoMintManyPair.to.length; // 배열 길이 동일 여부를 한 번에 체크 require( len == objektWithComoMintManyPair.objektTokenIds.length && len == objektWithComoMintManyPair.comoTokenId.length && len == objektWithComoMintManyPair.comoAmountPerObjekt.length, ERROR_INVALID_LENGTH ); // for문에서 unchecked를 사용하여 약간의 가스 최적화 for (uint256 i = 0; i < len; ) { mintWithComo( objektWithComoMintManyPair.to[i], ObjektMintPair({ tokenId: objektWithComoMintManyPair.objektTokenIds[i], transferable: objektWithComoMintManyPair.objektTransferable[ i ] }), ComoMintPair({ tokenId: objektWithComoMintManyPair.comoTokenId[i], amount: objektWithComoMintManyPair.comoAmountPerObjekt[i], data: "" }) ); unchecked { i++; } } } /** * Objekt 와 Como 쌍을 여러 개 민팅합니다 (como량, objektTransferable 통일) * 가스비를 줄이기 위해 objektTransferable와 comoAmountPerObjekt를 배열이 아닌 하나의 값으로 받습니다. */ function mintWithComoManyEfficient( ObjektWithComoMintManyEfficientPair memory objektWithComoMintManyPair ) public onlyRole(OPERATOR_ROLE) { // 배열 길이를 로컬 변수에 저장 uint256 len = objektWithComoMintManyPair.objektTokenIds.length; // 배열 길이 동일 여부를 한 번에 체크 require( len == objektWithComoMintManyPair.comoTokenId.length, ERROR_INVALID_LENGTH ); // for문에서 unchecked를 사용하여 약간의 가스 최적화 for (uint256 i = 0; i < len; ) { mintWithComo( objektWithComoMintManyPair.to[i], ObjektMintPair({ tokenId: objektWithComoMintManyPair.objektTokenIds[i], transferable: objektWithComoMintManyPair.objektTransferable }), ComoMintPair({ tokenId: objektWithComoMintManyPair.comoTokenId[i], amount: objektWithComoMintManyPair.comoAmountPerObjekt, data: "" }) ); unchecked { i++; } } } /** * Objekt만 민팅합니다 */ function mintOnlyObjekt( address to, uint256 objektTokenId, bool objektTransferable ) public onlyRole(OPERATOR_ROLE) { objekt.mint(to, objektTokenId, objektTransferable); } /** * Objekt를 여러개 민팅합니다 */ function mintOnlyObjektMany( address[] memory to, uint256[] memory objektTokenId, bool[] memory objektTransferable ) public onlyRole(OPERATOR_ROLE) { // 배열 길이를 로컬 변수에 저장 uint256 len = to.length; // 배열 길이 동일 여부를 한 번에 체크 require( len == objektTokenId.length && len == objektTransferable.length, ERROR_INVALID_LENGTH ); // for문에서 unchecked를 사용하여 약간의 가스 최적화 for (uint256 i = 0; i < len; ) { objekt.mint(to[i], objektTokenId[i], objektTransferable[i]); unchecked { i++; } } } /** * Objekt를 여러개 민팅합니다 (transferable 통일) */ function mintOnlyObjektEfficient( address[] memory to, uint256[] memory objektTokenIds, bool objektTransferable ) public onlyRole(OPERATOR_ROLE) { // 배열 길이를 로컬 변수에 저장 uint256 len = objektTokenIds.length; // 배열 길이 동일 여부를 한 번에 체크 require(len == to.length, ERROR_INVALID_LENGTH); // for문에서 unchecked를 사용하여 약간의 가스 최적화 for (uint256 i = 0; i < len; ) { objekt.mint(to[i], objektTokenIds[i], objektTransferable); unchecked { i++; } } } }
// SPDX-License-Identifier: Unlicense pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; interface IObjekt is IERC721 { /** * ================================================= * =================== Objekt ====================== * ================================================= * * Objekt 는 Cosmo 의 NFT 컨트렉트입니다. */ // ==== PUBLIC METHODS ============================= function mint(address to, uint256 tokenId, bool transferrable) external; function mintBatch( address to, uint256 startTokenId, uint256 endTokenId, bool transferrable ) external; function burn(uint256 tokenId) external; function batchUpdateObjektTransferability( uint256[] calldata tokenIds, bool transferrable ) external; function setApprovalWhitelist(address addr, bool isWhitelisted) external; function setBlacklist(address addr, bool isBlacklisted) external; }
// SPDX-License-Identifier: Unlicense pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; interface IComo is IERC1155 { /** * ================================================= * =================== Como ======================= * ================================================= * * Como 는 Cosmo 서비스에서 투표 목적으로 개발된 컨트렉트입니다. */ // ==== STRUCTS ==================================== /** * 토큰을 보낼 수 있는 화이트리스트 */ struct Whitelist { bool isWhitelistCheckEnabled; mapping(address => bool) addresses; } // ==== PUBLIC METHODS ============================= /** * 토큰 id 별 화이트리스트를 설정합니다 */ function setWhitelistCheck( uint256 id, bool isWhitelistCheckEnabled ) external; /** * 화이트리스트 대상 주소를 1개 추가합니다 */ function addWhitelist(uint256 id, address addr) external; /** * 화이트리스트 대상 주소를 1개 제거합니다 */ function removeWhitelist(uint256 id, address addr) external; /** * 토큰을 민팅합니다 */ function mint( address to, uint256 id, uint256 amount, bytes memory data ) external; /** * 1개의 주소에 여러 토큰 id 에 대하여 민팅합니다 */ function mintBatch( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) external; /** * 토큰을 소각합니다 */ function burn(address account, uint256 id, uint256 value) external; /** * 토큰의 metadata uri 를 설정합니다 */ function setURI(string memory uri) external; }
// 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.1.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.20; import {IERC165} from "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC-721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon * a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC-721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or * {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon * a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom(address from, address to, uint256 tokenId) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must * understand this adds an external call which potentially creates a reentrancy vulnerability. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 tokenId) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the address zero. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.20; import {IERC165} from "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC-1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[ERC]. */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the value of tokens of token type `id` owned by `account`. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch( address[] calldata accounts, uint256[] calldata ids ) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the zero address. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers a `value` amount of tokens of type `id` from `from` to `to`. * * WARNING: This function can potentially allow a reentrancy attack when transferring tokens * to an untrusted contract, when invoking {onERC1155Received} on the receiver. * Ensure to follow the checks-effects-interactions pattern and consider employing * reentrancy guards when interacting with untrusted contracts. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `value` amount. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes calldata data) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * WARNING: This function can potentially allow a reentrancy attack when transferring tokens * to an untrusted contract, when invoking {onERC1155BatchReceived} on the receiver. * Ensure to follow the checks-effects-interactions pattern and consider employing * reentrancy guards when interacting with untrusted contracts. * * Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments. * * Requirements: * * - `ids` and `values` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external; }
// 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) (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) (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/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); }
{ "optimizer": { "enabled": true, "mode": "z" }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "abi" ] } }, "detectMissingLibraries": false, "forceEVMLA": false, "enableEraVMExtensions": true, "libraries": {} }
[{"inputs":[{"internalType":"address","name":"objektAddress","type":"address"},{"internalType":"address","name":"comoAddress","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"},{"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"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"como","outputs":[{"internalType":"contract IComo","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"objektTokenId","type":"uint256"},{"internalType":"bool","name":"objektTransferable","type":"bool"}],"name":"mintOnlyObjekt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"objektTokenIds","type":"uint256[]"},{"internalType":"bool","name":"objektTransferable","type":"bool"}],"name":"mintOnlyObjektEfficient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"objektTokenId","type":"uint256[]"},{"internalType":"bool[]","name":"objektTransferable","type":"bool[]"}],"name":"mintOnlyObjektMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bool","name":"transferable","type":"bool"}],"internalType":"struct ObjektMinter.ObjektMintPair","name":"objektMintPair","type":"tuple"},{"components":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ObjektMinter.ComoMintPair","name":"comoMintPair","type":"tuple"}],"name":"mintWithComo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"objektTokenIds","type":"uint256[]"},{"internalType":"bool[]","name":"objektTransferable","type":"bool[]"},{"internalType":"uint256[]","name":"comoTokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"comoAmountPerObjekt","type":"uint256[]"}],"internalType":"struct ObjektMinter.ObjektWithComoMintManyPair","name":"objektWithComoMintManyPair","type":"tuple"}],"name":"mintWithComoMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"objektTokenIds","type":"uint256[]"},{"internalType":"bool","name":"objektTransferable","type":"bool"},{"internalType":"uint256[]","name":"comoTokenId","type":"uint256[]"},{"internalType":"uint256","name":"comoAmountPerObjekt","type":"uint256"}],"internalType":"struct ObjektMinter.ObjektWithComoMintManyEfficientPair","name":"objektWithComoMintManyPair","type":"tuple"}],"name":"mintWithComoManyEfficient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"objekt","outputs":[{"internalType":"contract IObjekt","name":"","type":"address"}],"stateMutability":"view","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
9c4d535b0000000000000000000000000000000000000000000000000000000000000000010001e95158aa8143a22d8f81cd1b6926799f9e559863b7b431528f27c1767a00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000040000000000000000000000000568cdc24eb5e8eb8951f41c29f40fffef3f1760b0000000000000000000000008f130f569f2729668bd0f9e79a3d5e939df6efb7
Deployed Bytecode
0x0004000000000002001600000000000200000000030200190000006004100270000001b20240019700030000002103550002000000010355000001b20040019d00000001003001900000000005000416000000440000c13d0000008003000039000000400030043f000000040020008c000000690000413d000000000301043b000000e008300270000001bb0080009c000000f00000613d000001bc0080009c000000970000613d000001bd0080009c000000f40000613d000001be0080009c00000004041003700000009b0000613d000001bf0080009c0000002406100370000000a60000613d000001c00080009c000000d20000613d000001c10080009c0000004407100370000000fb0000613d000001c20080009c0000012003000039000001420000613d000001c30080009c0000020b0000613d000001c40080009c000002890000613d000001c50080009c0000029c0000613d000001c60080009c000002a30000613d000001c70080009c0000034f0000613d000001c80080009c000000de0000613d000001c90080009c000003610000613d000001ca0080009c000000690000c13d000000240020008c000000690000413d000000000005004b000000690000c13d000000000104043b000001da001001980000035e0000c13d000001db0010009c00000000020000390000000102006039000001dc0010009c00000001022061bf000000800020043f000001dd01000041000006c30001042e000000000005004b000000690000c13d0000001f03200039000001b3033001970000008003300039000000400030043f0000001f0420018f000001b4052001980000008003500039000000540000613d0000008006000039000000000701034f000000007807043c0000000006860436000000000036004b000000500000c13d000000000004004b000000610000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000000400020008c000000690000413d000000800100043d000001b50010009c000000690000213d000000a00200043d000001b50020009c0000006b0000a13d0000000001000019000006c4000104300000000103000039000000000403041a000001b604400197000000000114019f000000000013041b0000000201000039000000000301041a000001b603300197000000000223019f000000000021041b0000000001000411000001b501100197000d00000001001d000000000010043f000001b701000041000000200010043f000000000100001906c2061a0000040f000000000201041a000000ff00200190000000920000c13d000001000300008a000000000232016f00000001022001bf000000000021041b0000000001000414000001b20010009c000001b201008041000000c001100210000001b8011001c70000800d020000390000000403000039000001b90400004100000000050000190000000d06000029000000000700041106c2063c0000040f0000000100200190000000690000613d000000200100003900000100001004430000012000000443000001ba01000041000006c30001042e000000000005004b000000690000c13d0000000101000039000000f70000013d000000240020008c000000690000413d000000000005004b000000690000c13d000000000104043b06c2058e0000040f000000400300043d000000000013043500000020020000390000000001030019000002a10000013d000000440020008c000000690000413d000000000005004b000000690000c13d000000000104043b000d00000001001d000000000106043b000c00000001001d000001b50010009c000000690000213d0000000d01000029000000000010043f000000200000043f000000000100001906c2061a0000040f0000000101100039000000000101041a06c205cc0000040f000100ba0000003d000006bb0000013d000100bc0000003d0000067e0000013d000000ed0000c13d000100bf0000003d000006bb0000013d000100c10000003d0000069e0000013d00000001022001bf000000000021041b0000000001000414000001b20010009c000001b201008041000000c001100210000001b8011001c70000800d0200003900000004030000390000000007000411000001b9040000410000000d050000290000000c0600002906c2063c0000040f0000000100200190000000ed0000c13d000000690000013d000000440020008c000000690000413d000000000005004b000000690000c13d000000000106043b000001b50010009c000000690000213d0000000002000411000000000021004b000003990000c13d000000000104043b000000ec0000013d000000440020008c000000690000413d000000000005004b000000690000c13d000000000206043b000001b50020009c000000690000213d000000000104043b000c00000001001d000d00000002001d06c2058e0000040f06c205cc0000040f0000000c010000290000000d0200002906c205e00000040f00000000010000190000000002000019000002a10000013d000000000005004b000000690000c13d000001cb01000041000000f90000013d000000000005004b000000690000c13d0000000201000039000000000101041a000001b501100197000000800010043f0000029f0000013d000000640020008c000000690000413d000000000005004b000000690000c13d000000000204043b000001b50020009c000000690000213d000000000307043b000000000003004b0000000001000039000000010100c039000000000013004b000000690000c13d000c00000003001d000d00000002001d06c205b90000040f0000000101000039000000000101041a000b00000001001d001601b50010019b0000000001000415000000160110008a000101130000003d000006890000013d0000035e0000613d0000000b01000029000001b502100197000000400500043d000001d001000041000000000015043500000024010000390000000201100367000000000101043b00000044035000390000000c0400002900000000004304350000002403500039000000000013043500000004015000390000000d030000290000000000310435000000000100041400000064040000390000000003050019000d00000005001d0001012a0000003d000006850000013d000003b30000c13d0001012d0000003d000006960000013d000001340000613d000000000704034f0000000008010019000000007907043c0000000008980436000000000038004b000001300000c13d000000000006004b000001410000613d000000000454034f0000000305600210000000000603043300000000065601cf000000000656022f000000000404043b0000010005500089000000000454022f00000000045401cf000000000464019f000000000043043506c206080000040f000000240020008c000000690000413d000000000005004b000000690000c13d000000000404043b000001cc0040009c0000035e0000213d0000000005420049000001cd0050009c0000035e0000213d000000a40050008c0000035e0000413d000000400030043f0000000403400039000000000131034f000000000101043b000001cc0010009c0000035e0000213d000101560000003d0000068d0000013d000001cc0010009c0000035e0000213d00000000012100190000000002000031000c00000003001d06c205190000040f0000000d02000029000000a00010043f0000000c0100002900000020031000390000000201300367000000000101043b000001cc0010009c0000035e0000213d00000000012100190000000002000031000c00000003001d06c205510000040f0000000d02000029000000c00010043f0000000c0100002900000020031000390000000201300367000000000101043b000001cc0010009c0000035e0000213d00000000012100190000000002000031000c00000003001d06c205190000040f0000000d02000029000000e00010043f0000000c0100002900000020011000390000000201100367000000000101043b000001cc0010009c0000035e0000213d0000000001210019000000000200003106c205190000040f000001000010043f06c205b90000040f000000800100043d0000000002010433000000a00100043d0000000001010433000300000002001d000000000012004b0000000001000019000001930000c13d000000e00100043d0000000001010433000000030010006b0000000001000019000001930000c13d000001000100043d0000000001010433000000030010006b00000000010000390000000101006039000000400200043d000001d70020009c000003af0000813d0000004003200039000000400030043f0000002003200039000001d40400004100000000004304350000001c030000390000000000320435000000010110018f06c205a70000040f0000000005000019000000030050006c000000ed0000813d000000800200043d0000000001020433000000000051004b000004040000a13d000000a00300043d0000000001030433000000000051004b000004040000a13d000000c00400043d0000000001040433000000000051004b000004040000a13d000000400700043d000001d30070009c000003af0000213d000101b30000003d000006ad0000013d000000000314001900000000030304330000004004700039000000400040043f0000000008270436000000000003004b000101bb0000003d000006a60000013d000004040000a13d000001000300043d0000000004030433000000000054004b000004040000a13d000d00000008001d000c00000006001d000000400400043d000001d50040009c000003af0000213d00000000021200190000000002020433000000000113001900000000010104330000006003400039000000400030043f00000000022404360000000000120435000000400100043d000001d60010009c000003af0000213d000800000002001d000101d30000003d0000065a0000013d001501b50010019b0000000001000415000000150110008a000101d80000003d000006890000013d0000035e0000613d0000000c01000029000001b5041001970000000d01000029000001b502100197000000400300043d000001d001000041000101e10000003d0000066e0000013d00000000010004140000006404000039000d00000003001d0000000005030019000101e70000003d000006850000013d0000048f0000613d0000000d01000029000001cc0010009c00000009020000290000000803000029000003af0000213d0000000d01000029000000400010043f00000007010000290000000001010433000700000001001d0000000001030433000101f50000003d000006b40000013d001401b50010019b0000000001000415000000140110008a000101fa0000003d000006890000013d0000035e0000613d0000000401000029000401b50010019b000001d101000041000102000000003d000006460000013d000000000100041400000004020000290000000005030019000102050000003d000006850000013d0000048f0000613d0000000d01000029000000400010043f00000006050000290000000105500039000001a00000013d000000640020008c000000690000413d000000000005004b000000690000c13d000000000104043b000001cc0010009c0000035e0000213d000000040110003906c204df0000040f000800000001001d00000024010000390000000201100367000000000101043b000001cc0010009c0000035e0000213d0000000002000031000000040110003906c205190000040f000700000001001d00000044010000390000000201100367000000000101043b000001cc0010009c0000035e0000213d0000000002000031000000040110003906c205510000040f000600000001001d06c205b90000040f0000000801000029000000000201043300000007010000290000000001010433000500000002001d000000000012004b0000000001000019000002350000c13d00000006010000290000000001010433000000050010006b00000000010000390000000101006039000000400200043d000001d30020009c000003af0000213d0000004003200039000000400030043f0000002003200039000001d40400004100000000004304350000001c030000390000000000320435000000010110018f06c205a70000040f0000000601000029000400200010003d0000000701000029000300200010003d0000000801000029000200200010003d0000000002000019000000050020006c000000ed0000813d00000008010000290000000001010433000000000021004b000004040000a13d00000007010000290000000001010433000000000021004b000004040000a13d00000006010000290000000001010433000000000021004b000004040000a13d0000000101000039000000000101041a000001b503100197000900000002001d000000050120021000000002021000290000000002020433000b00000002001d00000003021000290000000002020433000c00000002001d00000004011000290000000001010433000a00000001001d000d00000003001d001300000003001d0000000001000415000000130110008a0001026a0000003d000006890000013d0000035e0000613d0000000b01000029000001b5011001970000000a0000006b0000000002000039000000010200c039000000400500043d0000004403500039000000000023043500000024025000390000000c030000290000000000320435000001d00200004100000000002504350000000402500039000000000012043500000000010004140000000d0200002900000000030500190000006404000039000d00000005001d000102810000003d000006850000013d0000012b0000613d0000000d01000029000001cc0010009c0000000902000029000003af0000213d000000400010043f0000000102200039000002480000013d000000440020008c000000690000413d000000000005004b000000690000c13d000000000106043b000001b50010009c000000690000213d000d00000001001d000000000104043b000000000010043f000000200000043f000000000100001906c2061a0000040f0000000d02000029000102990000003d0000067e0000013d0000000001000039000000010100c039000000f90000013d000000000005004b000000690000c13d000000800000043f00000080010000390000002002000039000000000300001906c206100000040f000000240020008c000000690000413d000000000005004b000000690000c13d000000000404043b000001cc0040009c0000035e0000213d0000000005420049000001cd0050009c0000035e0000213d000000a40050008c0000035e0000413d000000400030043f0000000403400039000000000131034f000000000101043b000001cc0010009c0000035e0000213d000102b70000003d0000068d0000013d000001cc0010009c0000035e0000213d00000000012100190000000002000031000c00000003001d06c205190000040f000000a00010043f0000000c0100002900000020021000390000000201000367000000000321034f000000000303043b000000000003004b0000000004000039000000010400c039000000000043004b000000690000c13d000000c00030043f0000002003200039000000000131034f000000000101043b000001cc0010009c0000000d020000290000035e0000213d00000000012100190000000002000031000d00000003001d06c205190000040f000000e00010043f0000000d0100002900000020011000390000000201100367000000000101043b000001000010043f06c205b90000040f000000400200043d000001d30020009c000003af0000213d000000a00100043d0000000005010433000000e00100043d00000000010104330000004003200039000000400030043f0000002003200039000001d40400004100000000004304350000001c030000390000000000320435000300000005001d000000000015004b0000000001000039000000010100603906c205a70000040f0000000005000019000000030050006c000000ed0000813d000000800200043d0000000001020433000000000051004b000004040000a13d000000a00300043d0000000001030433000000000051004b000004040000a13d000000400700043d000001d30070009c000003af0000213d000102fd0000003d000006ad0000013d0000004003700039000000c00400043d000000400030043f0000000008270436000000000004004b000103040000003d000006a60000013d000004040000a13d000d00000008001d000c00000006001d000000400400043d000001d50040009c000003af0000213d000000000112001900000000010104330000006002400039000001000300043d000000400020043f0000000001140436000800000001001d0000000000310435000000400100043d000001d60010009c000003af0000213d000103170000003d0000065a0000013d001201b50010019b0000000001000415000000120110008a0001031c0000003d000006890000013d0000035e0000613d0000000c01000029000001b5041001970000000d01000029000001b502100197000000400300043d000001d001000041000103250000003d0000066e0000013d00000000010004140000006404000039000d00000003001d00000000050300190001032b0000003d000006850000013d0000048f0000613d0000000d01000029000001cc0010009c0000000902000029000003af0000213d0000000d01000029000000400010043f00000007010000290000000001010433000700000001001d00000008010000290000000001010433000103390000003d000006b40000013d001101b50010019b0000000001000415000000110110008a0001033e0000003d000006890000013d0000035e0000613d0000000401000029000401b50010019b000001d101000041000103440000003d000006460000013d000000000100041400000004020000290000000005030019000103490000003d000006850000013d0000048f0000613d0000000d01000029000000400010043f00000006050000290000000105500039000002ee0000013d000000640020008c000000690000413d000000000005004b000000690000c13d000000000104043b000001cc0010009c0000035e0000213d000000040110003906c204df0000040f000900000001001d00000024010000390000000201100367000000000101043b000001cc0010009c0000039e0000a13d0000000001000019000000000200001906c206080000040f000000840020008c000000690000413d000000000005004b000000690000c13d000000000904043b000001b50090009c000000690000213d000000c004000039000000400040043f000000000406043b000000800040043f000000000407043b000000000004004b0000000005000039000000010500c039000000000054004b000000690000c13d000000a00040043f0000006404100370000000000404043b000001cc0040009c0000035e0000213d0000000005420049000001cd0050009c0000035e0000213d000000640050008c0000035e0000413d000000400030043f0000000405400039000000000551034f000000000505043b000000c00050043f0000002405400039000000000551034f000000000505043b000000e00050043f0000004405400039000000000551034f000000000505043b000001cc0050009c0000035e0000213d00000000054500190000002304500039000000000024004b0000035e0000813d0000000406500039000000000461034f000000000404043b000001ce0040009c0000040a0000413d000001d201000041000000000010043f0000004101000039000000040010043f00000024020000390000039c0000013d000001d901000041000000000010043f0000000402000039000000000100001906c206080000040f0000000002000031000000040110003906c205190000040f000800000001001d00000044010000390000000201100367000000000201043b000000000002004b0000000001000039000000010100c039000700000002001d000000000012004b000000690000c13d06c205b90000040f000000400200043d000001d30020009c000003b70000a13d000001d201000041000000000010043f0000004101000039000004070000013d0000000d01000029000000000200001906c204cc0000040f000000ed0000013d00000008010000290000000005010433000000090100002900000000010104330000004003200039000000400030043f0000002003200039000001d40400004100000000004304350000001c030000390000000000320435000600000005001d000000000015004b0000000001000039000000010100603906c205a70000040f0000000801000029000500200010003d0000000901000029000400200010003d0000000002000019000000060020006c000000ed0000813d00000009010000290000000001010433000000000021004b000004040000a13d00000008010000290000000001010433000000000021004b000004040000a13d0000000101000039000000000101041a000001b503100197000a00000002001d000000050120021000000004021000290000000002020433000b00000002001d00000005011000290000000001010433000c00000001001d000d00000003001d001000000003001d0000000001000415000000100110008a000103e70000003d000006890000013d0000035e0000613d0000000b01000029000001b501100197000000400500043d00000044025000390000000703000029000000000032043500000024025000390000000c030000290000000000320435000001d00200004100000000002504350000000402500039000000000012043500000000010004140000000d0200002900000000030500190000006404000039000d00000005001d000103fc0000003d000006850000013d0000012b0000613d0000000d01000029000001cc0010009c0000000a02000029000003af0000213d000000400010043f0000000102200039000003cc0000013d000001d201000041000000000010043f0000003201000039000000040010043f000001d801000041000006c4000104300000001f07400039000000200800008a000000000787016f0000003f07700039000000000787016f000001cf0070009c000003af0000213d0000012007700039000000400070043f000001200040043f00000000054500190000002405500039000000000025004b0000035e0000213d000d00000009001d0000002002600039000000000221034f000000200100008a00000000051401700000001f0640018f0000014001500039000004260000613d0000014007000039000000000802034f000000008908043c0000000007970436000000000017004b000004220000c13d000000000006004b000004330000613d000000000252034f0000000305600210000000000601043300000000065601cf000000000656022f000000000202043b0000010005500089000000000252022f00000000025201cf000000000262019f000000000021043500000140014000390000000000010435000001000030043f06c205b90000040f0000000101000039000000000201041a000000a00100043d000b00000001001d000000800100043d000c00000001001d000a00000002001d000f01b50020019b00000000010004150000000f0110008a000104430000003d000006890000013d0000000d030000290000035e0000613d0000000a01000029000001b502100197000000400500043d000001d00100004100000000001504350000000b0000006b0000000001000039000000010100c0390000004404500039000b00000004001d00000000001404350000002401500039000900000001001d0000000c0400002900000000004104350000000401500039000c00000001001d0000000000310435000000000100041400000064040000390000000003050019000a00000005001d0001045d0000003d000006850000013d0000012b0000613d0000000a01000029000001cc0010009c000003af0000213d0000000a01000029000000400010043f0000000201000039000000000201041a000001000100043d000800000001001d000000e00100043d000700000001001d000000c00100043d000600000001001d000500000002001d000e01b50020019b00000000010004150000000e0110008a000000050110021006c2062b0000040f0000000d02000029000000000001004b0000035e0000613d0000000501000029000501b50010019b000001d1010000410000000a0300002900000000001304350000000c0100002900000000002104350000000901000029000000060200002900000000002104350000000b01000029000000070200002900000000002104350000006401300039000000800200003900000000002104350000008402300039000000080100002906c205950000040f0000000a0300002900000000043100490000000001000414000000050200002900000000050300190001048e0000003d000006850000013d000004990000c13d000104910000003d000006960000013d000001340000613d000000000704034f0000000008010019000000007907043c0000000008980436000000000038004b000004940000c13d000001340000013d0000000a01000029000000400010043f000000ed0000013d0002000000000002000200000006001d000100000005001d000001b20030009c000001b2030080410000004003300210000001b20040009c000001b2040080410000006004400210000000000334019f000001b20010009c000001b201008041000000c001100210000000000113019f06c2063c0000040f00000001090000290000006003100270000001b203300197000000020030006c000000020400002900000000040340190000001f0540018f000001b4064001980000000004690019000004ba0000613d000000000701034f000000007807043c0000000009890436000000000049004b000004b60000c13d000000010220018f000000000005004b000004c80000613d000000000661034f0000000305500210000000000704043300000000075701cf000000000757022f000000000606043b0000010005500089000000000656022f00000000055601cf000000000575019f0000000000540435000100000003001f00030000000103550000000001020019000000000001042d0000001f02200039000000200300008a000000000232016f0000000001120019000000000021004b00000000020000390000000102004039000001cc0010009c000004d90000213d0000000100200190000004d90000c13d000000400010043f000000000001042d000001d201000041000000000010043f0000004101000039000000040010043f000001d801000041000006c4000104300000001f03100039000000000023004b0000000004000019000001de04004041000001de05200197000001de03300197000000000653013f000000000053004b0000000003000019000001de03002041000001de0060009c000000000304c019000000000003004b000005110000613d0000000204000367000000000314034f000000000503043b000001ce0050009c000005130000813d00000005065002100000003f03600039000001df07300197000000400300043d0000000007730019000000000037004b00000000080000390000000108004039000001cc0070009c000005130000213d0000000100800190000005130000c13d000000400070043f000000000053043500000000056100190000002005500039000000000025004b000005110000213d00000000020300190000002001100039000000000051004b0000050f0000813d000000000614034f000000000606043b000001b50060009c000005110000213d00000020022000390000000000620435000005050000013d0000000001030019000000000001042d0000000001000019000006c400010430000001d201000041000000000010043f0000004101000039000000040010043f000001d801000041000006c4000104300000001f03100039000000000023004b0000000004000019000001de04004041000001de05200197000001de03300197000000000653013f000000000053004b0000000003000019000001de03002041000001de0060009c000000000304c019000000000003004b0000054f0000613d0000000204000367000000000314034f000000000503043b000001ce0050009c000005490000813d00000005065002100000003f03600039000001df07300197000000400300043d0000000007730019000000000037004b00000000080000390000000108004039000001cc0070009c000005490000213d0000000100800190000005490000c13d000000400070043f000000000053043500000000056100190000002005500039000000000025004b0000054f0000213d00000000020300190000002001100039000000000051004b000005470000813d000000000614034f000000000606043b000000200220003900000000006204350000053f0000013d0000000001030019000000000001042d000001d201000041000000000010043f0000004101000039000000040010043f000001d801000041000006c4000104300000000001000019000006c4000104300000001f03100039000000000023004b0000000004000019000001de04004041000001de05200197000001de03300197000000000653013f000000000053004b0000000003000019000001de03002041000001de0060009c000000000304c019000000000003004b000005860000613d0000000204000367000000000314034f000000000503043b000001ce0050009c000005880000813d00000005065002100000003f03600039000001df07300197000000400300043d0000000007730019000000000037004b00000000080000390000000108004039000001cc0070009c000005880000213d0000000100800190000005880000c13d000000400070043f000000000053043500000000056100190000002005500039000000000025004b000005860000213d00000000020300190000002001100039000000000051004b000005840000813d000000000614034f000000000606043b000000000006004b0000000007000039000000010700c039000000000076004b000005860000c13d00000020022000390000000000620435000005770000013d0000000001030019000000000001042d0000000001000019000006c400010430000001d201000041000000000010043f0000004101000039000000040010043f000001d801000041000006c400010430000000000010043f000000200000043f000000000100001906c2061a0000040f0000000101100039000000000101041a000000000001042d000000004301043400000000013204360000000002000019000000000032004b000005a00000813d00000000052100190000000006240019000000000606043300000000006504350000002002200039000005980000013d000000000231001900000000000204350000001f02300039000000200300008a000000000232016f0000000001210019000000000001042d0001000000000002000000000001004b000005ab0000613d000000000001042d000000400400043d000100000004001d000001e001000041000000000014043500000004014000390000002003000039000000000031043500000024034000390000000001020019000000000203001906c205950000040f000000010210006a000000010100002906c206080000040f0000000001000411000001b501100197000000000010043f000001e101000041000000200010043f000000000100001906c2061a0000040f000000000101041a000000ff00100190000005c40000613d000000000001042d000001e201000041000000000010043f0000000001000411000000040010043f000001cb01000041000000240010043f000001e301000041000006c4000104300002000000000002000200000001001d000000000010043f000000200000043f000000000100001906c2061a0000040f0000000002000411000001b502200197000105d60000003d0000067e0000013d000005d80000613d000000000001042d000001e201000041000000000010043f0000000001000411000000040010043f0000000201000029000000240010043f000001e301000041000006c4000104300003000000000002000200000002001d000300000001001d000000000010043f000000200000043f000000000100001906c2061a0000040f0000000202000029000001b502200197000200000002001d000105ec0000003d0000067e0000013d000006040000613d0000000301000029000000000010043f000000200000043f000000000100001906c2061a0000040f0000000202000029000105f50000003d0000069e0000013d000000000021041b0000000001000414000001b20010009c000001b201008041000000c001100210000001b8011001c70000800d0200003900000004030000390000000007000411000001e4040000410000000305000029000000020600002906c2063c0000040f0000000100200190000006050000613d000000000001042d0000000001000019000006c400010430000000000001042f000001b20010009c000001b2010080410000004001100210000001b20020009c000001b2020080410000006002200210000000000112019f000006c400010430000001b20010009c000001b2010080410000004001100210000001b20020009c000001b2020080410000006002200210000000000112019f000000e002300210000000000121019f000006c30001042e0000000002000414000001b20020009c000001b202008041000000c002200210000001b20010009c000001b2010080410000004001100210000000000121019f000001e5011001c7000080100200003906c206410000040f0000000100200190000006290000613d000000000101043b000000000001042d0000000001000019000006c400010430000001e60200004100000000002004430000000501100270000000000101003100000004001004430000000001000414000001b20010009c000001b201008041000000c001100210000001e7011001c7000080020200003906c206410000040f00000001002001900000063b0000613d000000000101043b000000000001042d000000000001042f0000063f002104210000000102000039000000000001042d0000000002000019000000000001042d00000644002104230000000102000039000000000001042d0000000002000019000000000001042d0000000d0300002900000000001304350000000c010000290000000b0200002900000000001204350000000501000029000000090200002900000000002104350000000a01000029000000080200002900000000002104350000006401300039000000800200003900000000002104350000008402300039000000070100002906c205950000040f0000000d030000290000000004310049000000010000013b000600000005001d0000002002100039000000400020043f0000000000010435000900000004001d0000004002400039000700000002001d0000000000120435000b00000007001d06c205b90000040f0000000d010000290000000001010433000a00000001001d0000000b010000290000000001010433000b00000001001d0000000101000039000000000101041a000d00000001001d000000010000013b00000000001304350000000a0000006b0000000001000039000000010100c0390000004405300039000a00000005001d00000000001504350000002401300039000500000001001d0000000b0500002900000000005104350000000401300039000c00000004001d000b00000001001d0000000000410435000000010000013b000000000020043f000000200010043f000000000100001906c2061a0000040f000000000101041a000000ff00100190000000010000013b000000000600001906c2049c0000040f000000000001004b000000010000013b000000050110021006c2062b0000040f000000000001004b000000010000013b0000000001310019000d00000003001d06c204df0000040f0000000d02000029000000800010043f00000020032000390000000201300367000000000101043b000000010000013b00000003040003670000000102000031000000200100008a00000000051201700000001f0620018f000000400100043d0000000003510019000000010000013b000000000020043f000000200010043f000000000100001906c2061a0000040f000001000200008a000000000301041a000000000223016f000000010000013b0000000002000039000000010200c0390000000000280435000000e00200043d0000000003020433000000000053004b000000010000013b000000050150021000000020011000390000000002120019000000000602043300000000021300190000000002020433000000010000013b000800000001001d0000000001020433000900000001001d0000000201000039000000000101041a000400000001001d000000010000013b0000000d01000029000000000010043f000000200000043f000000000100001906c2061a0000040f0000000c02000029000000010000013b000006c200000432000006c30001042e000006c40001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb502000000000000000000000000000000000000000000000000000000000000002f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000f5b541a6000000000000000000000000000000000000000000000000000000001284aa4f000000000000000000000000000000000000000000000000000000001bcf0c7900000000000000000000000000000000000000000000000000000000248a9ca3000000000000000000000000000000000000000000000000000000002f2ff15d0000000000000000000000000000000000000000000000000000000036568abe0000000000000000000000000000000000000000000000000000000039efb85600000000000000000000000000000000000000000000000000000000689edd9e000000000000000000000000000000000000000000000000000000008a87ced80000000000000000000000000000000000000000000000000000000091d1485400000000000000000000000000000000000000000000000000000000a217fddf00000000000000000000000000000000000000000000000000000000ab9b713600000000000000000000000000000000000000000000000000000000aef9baa900000000000000000000000000000000000000000000000000000000d547741f00000000000000000000000000000000000000000000000000000000d619f4050000000000000000000000000000000000000000000000000000000001ffc9a797667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929000000000000000000000000000000000000000000000000ffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000fffffffffffffedfd1a1beb400000000000000000000000000000000000000000000000000000000731133e9000000000000000000000000000000000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf4f626a656b744d696e7465723a20496e76616c6964206c656e67746800000000000000000000000000000000000000000000000000000000ffffffffffffff9f000000000000000000000000000000000000000000000000ffffffffffffffdf000000000000000000000000000000000000000000000000ffffffffffffffc000000000000000000000000000000000000000240000000000000000000000006697b2320000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffc9a7000000000000000000000000000000000000000000000000000000007965db0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000080000000000000000080000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe008c379a000000000000000000000000000000000000000000000000000000000ee57cd81e84075558e8fcc182a1f4393f91fc97f963a136e66b7f949a62f319fe2517d3f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b02000000000000000000000000000000000000400000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000009614265485aaf3f7106efc5f3c9d93654ae962974f45a9529c736af4276a6ee9
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000568cdc24eb5e8eb8951f41c29f40fffef3f1760b0000000000000000000000008f130f569f2729668bd0f9e79a3d5e939df6efb7
-----Decoded View---------------
Arg [0] : objektAddress (address): 0x568cdc24eB5e8EB8951f41c29f40fffef3F1760B
Arg [1] : comoAddress (address): 0x8F130f569f2729668BD0f9e79a3D5e939DF6eFb7
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000568cdc24eb5e8eb8951f41c29f40fffef3f1760b
Arg [1] : 0000000000000000000000008f130f569f2729668bd0f9e79a3d5e939df6efb7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.