Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 141 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Items | 20624397 | 42 hrs ago | IN | 0 ETH | 0.0003476 | ||||
Set Items | 20556816 | 11 days ago | IN | 0 ETH | 0.00080974 | ||||
Set Items | 20556309 | 11 days ago | IN | 0 ETH | 0.00079604 | ||||
Set Items | 20495552 | 19 days ago | IN | 0 ETH | 0.00033515 | ||||
Set Items | 20495527 | 19 days ago | IN | 0 ETH | 0.00031493 | ||||
Set Items | 20469301 | 23 days ago | IN | 0 ETH | 0.00079735 | ||||
Set Items | 20458460 | 24 days ago | IN | 0 ETH | 0.0004604 | ||||
Set Items | 20435017 | 28 days ago | IN | 0 ETH | 0.00680695 | ||||
Set Items | 20404430 | 32 days ago | IN | 0 ETH | 0.00057098 | ||||
Set Items | 20303357 | 46 days ago | IN | 0 ETH | 0.00087239 | ||||
Set Items | 20275932 | 50 days ago | IN | 0 ETH | 0.00147701 | ||||
Set Items | 20241729 | 55 days ago | IN | 0 ETH | 0.00327348 | ||||
Set Items | 20223804 | 57 days ago | IN | 0 ETH | 0.0010325 | ||||
Set Items | 20222632 | 57 days ago | IN | 0 ETH | 0.00045363 | ||||
Set Items | 20071323 | 78 days ago | IN | 0 ETH | 0.00506661 | ||||
Set Items | 20036863 | 83 days ago | IN | 0 ETH | 0.00465288 | ||||
Set Items | 20015637 | 86 days ago | IN | 0 ETH | 0.00203158 | ||||
Set Items | 20015632 | 86 days ago | IN | 0 ETH | 0.00189291 | ||||
Set Items | 20015626 | 86 days ago | IN | 0 ETH | 0.0018983 | ||||
Set Items | 20015621 | 86 days ago | IN | 0 ETH | 0.00176718 | ||||
Set Items | 20015616 | 86 days ago | IN | 0 ETH | 0.00174579 | ||||
Set Items | 20015606 | 86 days ago | IN | 0 ETH | 0.00185655 | ||||
Set Items | 20015599 | 86 days ago | IN | 0 ETH | 0.00204669 | ||||
Set Items | 19995690 | 89 days ago | IN | 0 ETH | 0.0012752 | ||||
Set Items | 19974879 | 92 days ago | IN | 0 ETH | 0.00355031 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
SlothEquipmentForSpecialSloth
Compiler Version
v0.8.17+commit.8df45f5f
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.17; import "./interfaces/ISlothItemV4.sol"; import "./interfaces/ISpecialSlothItemV3.sol"; import "./interfaces/IItemTypeV2.sol"; import "./interfaces/IEquipmentV2.sol"; import "./interfaces/ISlothBodyV2.sol"; import "./interfaces/ISlothV3.sol"; import "./interfaces/ISpecialSloth.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; contract SlothEquipmentForSpecialSloth is Ownable { event SetItem ( uint256 indexed _tokenId, uint256[] _itemIds, IItemTypeV2.ItemMintType[] _itemMintType, address[] _slothItemAddr, uint256 _setAt ); address private _slothAddr; address private _slothItemAddr; address private _specialSlothItemAddr; address private _specialSlothAddr; address private _userGeneratedSlothItemAddr; uint8 private constant _ITEM_NUM = 6; bool private _itemAvailable; function _getSpecialType(uint256 _itemTokenId) internal view returns (uint256) { ISpecialSlothItemV3 specialSlothItem = ISpecialSlothItemV3(_specialSlothItemAddr); return specialSlothItem.getSpecialType(_itemTokenId); } function _getSpecialBodyType(uint256 _itemTokenId) internal view returns (uint256) { ISpecialSloth specialSloth = ISpecialSloth(_specialSlothAddr); return specialSloth.getSpecialBodyType(_itemTokenId); } function _getCombinationalCollabo(uint256 _specialType) internal view returns (bool) { ISpecialSlothItemV3 specialSlothItem = ISpecialSlothItemV3(_specialSlothItemAddr); return specialSlothItem.isCombinational(_specialType); } function _getCombinableMapping(uint256 _specialBodyType, uint256 _specialType) internal view returns (bool) { ISpecialSloth specialSloth = ISpecialSloth(_specialSlothAddr); return specialSloth.isCombinable(_specialBodyType, _specialType); } function setItems(uint256 tokenId, IEquipmentV2.EquipmentTargetItem[] memory _targetItems, address _contractAddress) external { require(_itemAvailable, "item not available"); require(ISlothBodyV2(_contractAddress).exists(tokenId), "not exist"); require(ISlothBodyV2(_contractAddress).ownerOf(tokenId) == msg.sender, "not owner"); require(_targetItems.length == _ITEM_NUM, "invalid itemIds length"); IEquipmentV2.Equipment[_ITEM_NUM] memory _equipments = ISlothBodyV2(_contractAddress).getEquipments(tokenId); uint256[] memory _equipmentItemIds = new uint256[](_ITEM_NUM); for (uint8 i = 0; i < _ITEM_NUM; i++) { _equipmentItemIds[i] = _equipments[i].itemId; } uint256 _specialBodyType = _getSpecialBodyType(tokenId); validateSetItems(_specialBodyType, _equipmentItemIds, _targetItems, msg.sender); address[] memory itemAddrs = new address[](_ITEM_NUM); uint256[] memory _itemIds = new uint256[](_ITEM_NUM); IItemTypeV2.ItemMintType[] memory _itemMintTypes = new IItemTypeV2.ItemMintType[](_ITEM_NUM); for (uint8 i = 0; i < _ITEM_NUM; i++) { itemAddrs[i] = ISlothV3(_contractAddress).setItem(tokenId, _targetItems[i], IItemTypeV2.ItemType(i), msg.sender); _itemIds[i] = _targetItems[i].itemTokenId; _itemMintTypes[i] = _targetItems[i].itemMintType; } // _lastSetAt[tokenId] = block.timestamp; emit SetItem(tokenId, _itemIds, _itemMintTypes, itemAddrs, block.timestamp); } function _checkOwner(uint256 _itemTokenId, IItemTypeV2.ItemMintType _itemMintType, address sender) internal view { if (_itemMintType == IItemTypeV2.ItemMintType.SLOTH_ITEM) { ISlothItemV4 slothItem = ISlothItemV4(_slothItemAddr); require(slothItem.exists(_itemTokenId), "token not exists"); require(slothItem.ownerOf(_itemTokenId) == sender, "not owner"); return; } if (uint(_itemMintType) == uint(IItemTypeV2.ItemMintType.SPECIAL_SLOTH_ITEM)) { ISpecialSlothItemV3 specialSlothItem = ISpecialSlothItemV3(_specialSlothItemAddr); require(specialSlothItem.exists(_itemTokenId), "token not exists"); require(specialSlothItem.ownerOf(_itemTokenId) == sender, "not owner"); return; } revert("not owner"); } function _checkItemType(uint256 _itemTokenId, IItemTypeV2.ItemMintType _itemMintType, IItemTypeV2.ItemType _itemType) internal view { if (_itemMintType == IItemTypeV2.ItemMintType.SLOTH_ITEM) { ISlothItemV4 slothItem = ISlothItemV4(_slothItemAddr); require(slothItem.getItemType(_itemTokenId) == _itemType, "wrong item type"); return; } if (_itemMintType == IItemTypeV2.ItemMintType.SPECIAL_SLOTH_ITEM) { ISpecialSlothItemV3 specialSlothItem = ISpecialSlothItemV3(_specialSlothItemAddr); require(specialSlothItem.getItemType(_itemTokenId) == _itemType, "wrong item type"); return; } revert("wrong item type"); } function validateSetItems(uint256 _specialBodyType, uint256[] memory equipmentItemIds, IEquipmentV2.EquipmentTargetItem[] memory equipmentTargetItems, address sender) internal view returns (bool) { for (uint8 i = 0; i < _ITEM_NUM; i++) { uint256 _itemTokenId = equipmentTargetItems[i].itemTokenId; IItemTypeV2.ItemMintType _itemMintType = equipmentTargetItems[i].itemMintType; // token存在チェック、オーナーチェック if (_itemTokenId == 0) { continue; } if (equipmentItemIds[i] != _itemTokenId) { _checkOwner(_itemTokenId, _itemMintType, sender); } _checkItemType(_itemTokenId, _itemMintType, IItemTypeV2.ItemType(i)); if (_itemMintType == IItemTypeV2.ItemMintType.SPECIAL_SLOTH_ITEM) { // コラボアイテムだった場合に、併用可不可のチェックを行う uint256 _specialType = _getSpecialType(_itemTokenId); bool isAbleCombine = _getCombinableMapping(_specialBodyType, _specialType); // 対象のコラボは着用可能なアイテムか bool combinationable = _getCombinationalCollabo(_specialType); // すろコレ等のどのコラボに着用可能なアイテムか if (isAbleCombine || combinationable) { // 着用可の場合は何もしない } else { // 併用不可の場合はエラーを返す revert("unable combine"); } } } return true; } function getTargetItemContractAddress(IItemTypeV2.ItemMintType _itemMintType) external view returns (address) { if (_itemMintType == IItemTypeV2.ItemMintType.SLOTH_ITEM) { return _slothItemAddr; } else if (_itemMintType == IItemTypeV2.ItemMintType.SPECIAL_SLOTH_ITEM) { return _specialSlothItemAddr; } else if (_itemMintType == IItemTypeV2.ItemMintType.USER_GENERATED_SLOTH_ITEM) { return _userGeneratedSlothItemAddr; } else { revert("invalid itemMintType"); } } function setItemAvailable(bool newItemAvailable) external onlyOwner { _itemAvailable = newItemAvailable; } function setSlothAddr(address newSlothAddr) external onlyOwner { _slothAddr = newSlothAddr; } function setSpecialSlothAddr(address newSpecialSlothAddr) external onlyOwner { _specialSlothAddr = newSpecialSlothAddr; } function setSlothItemAddr(address newSlothItemAddr) external onlyOwner { _slothItemAddr = newSlothItemAddr; } function setSpecialSlothItemAddr(address newSpecialSlothItemAddr) external onlyOwner { _specialSlothItemAddr = newSpecialSlothItemAddr; } }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.17; interface IItemTypeV2 { enum ItemType { CLOTHES, HEAD, HAND, FOOT, STAMP, BACKGROUND } enum ItemMintType { SLOTH_ITEM, SPECIAL_SLOTH_ITEM, USER_GENERATED_SLOTH_ITEM } }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import { IEquipmentV2 } from "./IEquipmentV2.sol"; interface ISlothBodyV2 { function exists(uint256 tokenId) external view returns (bool); function ownerOf(uint256 tokenId) external view returns (address); function getEquipments(uint256 tokenId) external view returns (IEquipmentV2.Equipment[6] memory); }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import "./IItemTypeV2.sol"; interface IEquipmentV2 { struct EquipmentTargetItem { uint256 itemTokenId; IItemTypeV2.ItemMintType itemMintType; } struct Equipment { uint256 itemId; address itemAddr; } struct EquipmentTargetSpecial { uint256 specialType; bool combinationable; } }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import "./IItemTypeV2.sol"; import { IERC721AQueryableUpgradeable } from "erc721a-upgradeable/contracts/interfaces/IERC721AQueryableUpgradeable.sol"; interface ISpecialSlothItemV3 is IERC721AQueryableUpgradeable, IItemTypeV2 { function getItemType(uint256 tokenId) external view returns (IItemTypeV2.ItemType); function getSpecialType(uint256 tokenId) external view returns (uint256); function getClothType(uint256 tokenId) external view returns (uint256); function exists(uint256 tokenId) external view returns (bool); function isCombinational(uint256 _specialType) external view returns (bool); function mintPoupelle(address sender, uint256 quantity) external; function mintCollaboCloth(address sender, uint256 quantity, uint256 _specialType) external; function mintHalloweenJiangshiSet(address sender, uint256 quantity) external; function mintHalloweenJacKOLanternSet(address sender, uint256 quantity) external; function mintHalloweenGhostSet(address sender, uint256 quantity) external; function mintSlothCollectionNovember(address sender, uint256 quantity, uint8 clothType) external; }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import { IERC721AQueryableUpgradeable } from "erc721a-upgradeable/contracts/interfaces/IERC721AQueryableUpgradeable.sol"; import { IEquipmentV2 } from "./IEquipmentV2.sol"; import { IItemTypeV2 } from "./IItemTypeV2.sol"; interface ISlothV3 is IERC721AQueryableUpgradeable { function mint(address sender, uint8 quantity) external; function numberMinted(address sender) external view returns (uint256); function setItem(uint256 _tokenId, IEquipmentV2.EquipmentTargetItem memory _targetItem, IItemTypeV2.ItemType _targetItemType, address sender) external returns (address); function receiveItem(address tokenOwner, address itemContractAddress, uint256 itemTokenId) external; function sendItem(address tokenOwner, address itemContractAddress, uint256 itemTokenId) external; }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.17; interface ISpecialSloth { function getSpecialBodyType(uint256 _specialType) external view returns (uint256); function isCombinable(uint256 _specialBodyType, uint256 _specialType) external view returns (bool); }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import { IERC721AQueryableUpgradeable } from "erc721a-upgradeable/contracts/interfaces/IERC721AQueryableUpgradeable.sol"; import "./IItemTypeV2.sol"; interface ISlothItemV4 is IERC721AQueryableUpgradeable { function getItemType(uint256 tokenId) external view returns (IItemTypeV2.ItemType); function getItemMintCount(address sender) external view returns (uint256); function exists(uint256 tokenId) external view returns (bool); function clothesMint(address sender, uint256 quantity) external; function itemMint(address sender, uint256 quantity) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // ERC721A Contracts v4.2.2 // Creator: Chiru Labs pragma solidity ^0.8.4; import '../extensions/IERC721AQueryableUpgradeable.sol';
// SPDX-License-Identifier: MIT // ERC721A Contracts v4.2.2 // Creator: Chiru Labs pragma solidity ^0.8.4; import '../IERC721AUpgradeable.sol'; /** * @dev Interface of ERC721AQueryable. */ interface IERC721AQueryableUpgradeable is IERC721AUpgradeable { /** * Invalid query range (`start` >= `stop`). */ error InvalidQueryRange(); /** * @dev Returns the `TokenOwnership` struct at `tokenId` without reverting. * * If the `tokenId` is out of bounds: * * - `addr = address(0)` * - `startTimestamp = 0` * - `burned = false` * - `extraData = 0` * * If the `tokenId` is burned: * * - `addr = <Address of owner before token was burned>` * - `startTimestamp = <Timestamp when token was burned>` * - `burned = true` * - `extraData = <Extra data when token was burned>` * * Otherwise: * * - `addr = <Address of owner>` * - `startTimestamp = <Timestamp of start of ownership>` * - `burned = false` * - `extraData = <Extra data at start of ownership>` */ function explicitOwnershipOf(uint256 tokenId) external view returns (TokenOwnership memory); /** * @dev Returns an array of `TokenOwnership` structs at `tokenIds` in order. * See {ERC721AQueryable-explicitOwnershipOf} */ function explicitOwnershipsOf(uint256[] memory tokenIds) external view returns (TokenOwnership[] memory); /** * @dev Returns an array of token IDs owned by `owner`, * in the range [`start`, `stop`) * (i.e. `start <= tokenId < stop`). * * This function allows for tokens to be queried if the collection * grows too big for a single call of {ERC721AQueryable-tokensOfOwner}. * * Requirements: * * - `start < stop` */ function tokensOfOwnerIn( address owner, uint256 start, uint256 stop ) external view returns (uint256[] memory); /** * @dev Returns an array of token IDs owned by `owner`. * * This function scans the ownership mapping and is O(`totalSupply`) in complexity. * It is meant to be called off-chain. * * See {ERC721AQueryable-tokensOfOwnerIn} for splitting the scan into * multiple smaller scans if the collection is large enough to cause * an out-of-gas error (10K collections should be fine). */ function tokensOfOwner(address owner) external view returns (uint256[] memory); }
// SPDX-License-Identifier: MIT // ERC721A Contracts v4.2.2 // Creator: Chiru Labs pragma solidity ^0.8.4; /** * @dev Interface of ERC721A. */ interface IERC721AUpgradeable { /** * The caller must own the token or be an approved operator. */ error ApprovalCallerNotOwnerNorApproved(); /** * The token does not exist. */ error ApprovalQueryForNonexistentToken(); /** * The caller cannot approve to their own address. */ error ApproveToCaller(); /** * Cannot query the balance for the zero address. */ error BalanceQueryForZeroAddress(); /** * Cannot mint to the zero address. */ error MintToZeroAddress(); /** * The quantity of tokens minted must be more than zero. */ error MintZeroQuantity(); /** * The token does not exist. */ error OwnerQueryForNonexistentToken(); /** * The caller must own the token or be an approved operator. */ error TransferCallerNotOwnerNorApproved(); /** * The token must be owned by `from`. */ error TransferFromIncorrectOwner(); /** * Cannot safely transfer to a contract that does not implement the * ERC721Receiver interface. */ error TransferToNonERC721ReceiverImplementer(); /** * Cannot transfer to the zero address. */ error TransferToZeroAddress(); /** * The token does not exist. */ error URIQueryForNonexistentToken(); /** * The `quantity` minted with ERC2309 exceeds the safety limit. */ error MintERC2309QuantityExceedsLimit(); /** * The `extraData` cannot be set on an unintialized ownership slot. */ error OwnershipNotInitializedForExtraData(); // ============================================================= // STRUCTS // ============================================================= struct TokenOwnership { // The address of the owner. address addr; // Stores the start time of ownership with minimal overhead for tokenomics. uint64 startTimestamp; // Whether the token has been burned. bool burned; // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}. uint24 extraData; } // ============================================================= // TOKEN COUNTERS // ============================================================= /** * @dev Returns the total number of tokens in existence. * Burned tokens will reduce the count. * To get the total number of tokens minted, please see {_totalMinted}. */ function totalSupply() external view returns (uint256); // ============================================================= // IERC165 // ============================================================= /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified) * to learn more about how these ids are created. * * This function call must use less than 30000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); // ============================================================= // IERC721 // ============================================================= /** * @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`, * checking first that contract recipients are aware of the ERC721 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 be 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, bytes calldata data ) external; /** * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} * whenever possible. * * 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 caller. * * 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); // ============================================================= // IERC721Metadata // ============================================================= /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); // ============================================================= // IERC2309 // ============================================================= /** * @dev Emitted when tokens in `fromTokenId` to `toTokenId` * (inclusive) is transferred from `from` to `to`, as defined in the * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard. * * See {_mintERC2309} for more details. */ event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to); }
// 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; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"_itemIds","type":"uint256[]"},{"indexed":false,"internalType":"enum IItemTypeV2.ItemMintType[]","name":"_itemMintType","type":"uint8[]"},{"indexed":false,"internalType":"address[]","name":"_slothItemAddr","type":"address[]"},{"indexed":false,"internalType":"uint256","name":"_setAt","type":"uint256"}],"name":"SetItem","type":"event"},{"inputs":[{"internalType":"enum IItemTypeV2.ItemMintType","name":"_itemMintType","type":"uint8"}],"name":"getTargetItemContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newItemAvailable","type":"bool"}],"name":"setItemAvailable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"components":[{"internalType":"uint256","name":"itemTokenId","type":"uint256"},{"internalType":"enum IItemTypeV2.ItemMintType","name":"itemMintType","type":"uint8"}],"internalType":"struct IEquipmentV2.EquipmentTargetItem[]","name":"_targetItems","type":"tuple[]"},{"internalType":"address","name":"_contractAddress","type":"address"}],"name":"setItems","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSlothAddr","type":"address"}],"name":"setSlothAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSlothItemAddr","type":"address"}],"name":"setSlothItemAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSpecialSlothAddr","type":"address"}],"name":"setSpecialSlothAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSpecialSlothItemAddr","type":"address"}],"name":"setSpecialSlothItemAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6114ad8061007e6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80637c707fe0116100665780637c707fe0146100f95780638da5cb5b146101285780639bcbee3814610139578063df4475411461014c578063f2fde38b1461015f57600080fd5b80630e81e8d8146100a35780633d60fb2e146100b8578063615829f1146100cb5780636a712f94146100de578063715018a6146100f1575b600080fd5b6100b66100b1366004610fb6565b610172565b005b6100b66100c6366004610fe1565b61019c565b6100b66100d9366004610fb6565b6101c2565b6100b66100ec366004610fb6565b6101ec565b6100b6610216565b61010c61010736600461100d565b61022a565b6040516001600160a01b03909116815260200160405180910390f35b6000546001600160a01b031661010c565b6100b6610147366004610fb6565b6102f2565b6100b661015a3660046110bb565b61031c565b6100b661016d366004610fb6565b61084b565b61017a6108c4565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6101a46108c4565b60058054911515600160a01b0260ff60a01b19909216919091179055565b6101ca6108c4565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6101f46108c4565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b61021e6108c4565b610228600061091e565b565b60008082600281111561023f5761023f6111ac565b036102555750506002546001600160a01b031690565b6001826002811115610269576102696111ac565b0361027f5750506003546001600160a01b031690565b6002826002811115610293576102936111ac565b036102a95750506005546001600160a01b031690565b60405162461bcd60e51b8152602060048201526014602482015273696e76616c6964206974656d4d696e745479706560601b60448201526064015b60405180910390fd5b919050565b6102fa6108c4565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600554600160a01b900460ff1661036a5760405162461bcd60e51b81526020600482015260126024820152716974656d206e6f7420617661696c61626c6560701b60448201526064016102e4565b604051634f558e7960e01b8152600481018490526001600160a01b03821690634f558e7990602401602060405180830381865afa1580156103af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d391906111c2565b61040b5760405162461bcd60e51b81526020600482015260096024820152681b9bdd08195e1a5cdd60ba1b60448201526064016102e4565b6040516331a9108f60e11b81526004810184905233906001600160a01b03831690636352211e90602401602060405180830381865afa158015610452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047691906111df565b6001600160a01b03161461049c5760405162461bcd60e51b81526004016102e4906111fc565b81516006146104e65760405162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d2e8cada92c8e640d8cadccee8d60531b60448201526064016102e4565b60405163b4e4c5db60e01b8152600481018490526000906001600160a01b0383169063b4e4c5db9060240161018060405180830381865afa15801561052f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610553919061121f565b60408051600680825260e08201909252919250600091906020820160c08036833701905050905060005b600660ff821610156105d957828160ff166006811061059e5761059e6112b0565b602002015160000151828260ff16815181106105bc576105bc6112b0565b6020908102919091010152806105d1816112c6565b91505061057d565b5060006105e58661096e565b90506105f3818387336109e8565b5060408051600680825260e082019092526000916020820160c080368337505060408051600680825260e0820190925292935060009291506020820160c080368337505060408051600680825260e0820190925292935060009291506020820160c08036833701905050905060005b600660ff8216101561080157876001600160a01b0316639bb8eb898b8b8460ff1681518110610693576106936112b0565b60200260200101518460ff1660058111156106b0576106b06111ac565b336040518563ffffffff1660e01b81526004016106d09493929190611307565b6020604051808303816000875af11580156106ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071391906111df565b848260ff1681518110610728576107286112b0565b60200260200101906001600160a01b031690816001600160a01b031681525050888160ff168151811061075d5761075d6112b0565b602002602001015160000151838260ff168151811061077e5761077e6112b0565b602002602001018181525050888160ff168151811061079f5761079f6112b0565b602002602001015160200151828260ff16815181106107c0576107c06112b0565b602002602001019060028111156107d9576107d96111ac565b908160028111156107ec576107ec6111ac565b905250806107f9816112c6565b915050610662565b50887f95485ec05ddcd87a82af4c1372441afbf33efc8cfe6a7389fbdd965fa7073b7e8383864260405161083894939291906113a0565b60405180910390a2505050505050505050565b6108536108c4565b6001600160a01b0381166108b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102e4565b6108c18161091e565b50565b6000546001600160a01b031633146102285760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102e4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60048054604051631302528560e21b81529182018390526000916001600160a01b03909116908190634c094a14906024015b602060405180830381865afa1580156109bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e1919061143d565b9392505050565b6000805b600660ff82161015610b3e576000848260ff1681518110610a0f57610a0f6112b0565b60200260200101516000015190506000858360ff1681518110610a3457610a346112b0565b602002602001015160200151905081600003610a51575050610b2c565b81878460ff1681518110610a6757610a676112b0565b602002602001015114610a7f57610a7f828287610b4a565b610a9e82828560ff166005811115610a9957610a996111ac565b610d10565b6001816002811115610ab257610ab26111ac565b03610b29576000610ac283610e71565b90506000610ad08a83610ea5565b90506000610add83610f26565b90508180610ae85750805b610b255760405162461bcd60e51b815260206004820152600e60248201526d756e61626c6520636f6d62696e6560901b60448201526064016102e4565b5050505b50505b80610b36816112c6565b9150506109ec565b50600195945050505050565b6000826002811115610b5e57610b5e6111ac565b03610cac57600254604051634f558e7960e01b8152600481018590526001600160a01b03909116908190634f558e79906024015b602060405180830381865afa158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd391906111c2565b610c125760405162461bcd60e51b815260206004820152601060248201526f746f6b656e206e6f742065786973747360801b60448201526064016102e4565b6040516331a9108f60e11b8152600481018590526001600160a01b038084169190831690636352211e90602401602060405180830381865afa158015610c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8091906111df565b6001600160a01b031614610ca65760405162461bcd60e51b81526004016102e4906111fc565b50505050565b6001826002811115610cc057610cc06111ac565b03610cf857600354604051634f558e7960e01b8152600481018590526001600160a01b03909116908190634f558e7990602401610b92565b60405162461bcd60e51b81526004016102e4906111fc565b6000826002811115610d2457610d246111ac565b03610e00576002546001600160a01b0316816005811115610d4757610d476111ac565b60405163c19a4ef560e01b8152600481018690526001600160a01b0383169063c19a4ef590602401602060405180830381865afa158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db09190611456565b6005811115610dc157610dc16111ac565b14610ca65760405162461bcd60e51b815260206004820152600f60248201526e77726f6e67206974656d207479706560881b60448201526064016102e4565b6001826002811115610e1457610e146111ac565b03610e37576003546001600160a01b0316816005811115610d4757610d476111ac565b60405162461bcd60e51b815260206004820152600f60248201526e77726f6e67206974656d207479706560881b60448201526064016102e4565b60035460405163184c334d60e01b8152600481018390526000916001600160a01b031690819063184c334d906024016109a0565b60048054604051639fe3af5b60e01b8152918201849052602482018390526000916001600160a01b03909116908190639fe3af5b90604401602060405180830381865afa158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1e91906111c2565b949350505050565b60035460405163907f1c9160e01b8152600481018390526000916001600160a01b031690819063907f1c9190602401602060405180830381865afa158015610f72573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e191906111c2565b6001600160a01b03811681146108c157600080fd5b80356102ed81610f96565b600060208284031215610fc857600080fd5b81356109e181610f96565b80151581146108c157600080fd5b600060208284031215610ff357600080fd5b81356109e181610fd3565b8035600381106102ed57600080fd5b60006020828403121561101f57600080fd5b6109e182610ffe565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561106157611061611028565b60405290565b60405160c0810167ffffffffffffffff8111828210171561106157611061611028565b604051601f8201601f1916810167ffffffffffffffff811182821017156110b3576110b3611028565b604052919050565b6000806000606084860312156110d057600080fd5b8335925060208085013567ffffffffffffffff808211156110f057600080fd5b818701915087601f83011261110457600080fd5b81358181111561111657611116611028565b611124848260051b0161108a565b818152848101925060069190911b83018401908982111561114457600080fd5b928401925b8184101561118f576040848b0312156111625760008081fd5b61116a61103e565b84358152611179868601610ffe565b8187015283526040939093019291840191611149565b80965050505050506111a360408501610fab565b90509250925092565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156111d457600080fd5b81516109e181610fd3565b6000602082840312156111f157600080fd5b81516109e181610f96565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b600061018080838503121561123357600080fd5b83601f84011261124257600080fd5b61124a611067565b90830190808583111561125c57600080fd5b845b838110156112a657604081880312156112775760008081fd5b61127f61103e565b8151815260208083015161129281610f96565b82820152908452929092019160400161125e565b5095945050505050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff81036112ea57634e487b7160e01b600052601160045260246000fd5b60010192915050565b60038110611303576113036111ac565b9052565b600060a08201905085825284516020830152602085015161132b60408401826112f3565b506006841061133c5761133c6111ac565b60608201939093526001600160a01b039190911660809091015292915050565b600081518084526020808501945080840160005b838110156113955781516001600160a01b031687529582019590820190600101611370565b509495945050505050565b6080808252855190820181905260009060209060a0840190828901845b828110156113d9578151845292840192908401906001016113bd565b5050508381038285015286518082528783019183019060005b81811015611415576114058385516112f3565b92840192918401916001016113f2565b50508481036040860152611429818861135c565b935050505082606083015295945050505050565b60006020828403121561144f57600080fd5b5051919050565b60006020828403121561146857600080fd5b8151600681106109e157600080fdfea2646970667358221220893a2819ff70094eb0cb080952072885737abb39085f3ab53afedcf7235ef27d64736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80637c707fe0116100665780637c707fe0146100f95780638da5cb5b146101285780639bcbee3814610139578063df4475411461014c578063f2fde38b1461015f57600080fd5b80630e81e8d8146100a35780633d60fb2e146100b8578063615829f1146100cb5780636a712f94146100de578063715018a6146100f1575b600080fd5b6100b66100b1366004610fb6565b610172565b005b6100b66100c6366004610fe1565b61019c565b6100b66100d9366004610fb6565b6101c2565b6100b66100ec366004610fb6565b6101ec565b6100b6610216565b61010c61010736600461100d565b61022a565b6040516001600160a01b03909116815260200160405180910390f35b6000546001600160a01b031661010c565b6100b6610147366004610fb6565b6102f2565b6100b661015a3660046110bb565b61031c565b6100b661016d366004610fb6565b61084b565b61017a6108c4565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6101a46108c4565b60058054911515600160a01b0260ff60a01b19909216919091179055565b6101ca6108c4565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6101f46108c4565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b61021e6108c4565b610228600061091e565b565b60008082600281111561023f5761023f6111ac565b036102555750506002546001600160a01b031690565b6001826002811115610269576102696111ac565b0361027f5750506003546001600160a01b031690565b6002826002811115610293576102936111ac565b036102a95750506005546001600160a01b031690565b60405162461bcd60e51b8152602060048201526014602482015273696e76616c6964206974656d4d696e745479706560601b60448201526064015b60405180910390fd5b919050565b6102fa6108c4565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600554600160a01b900460ff1661036a5760405162461bcd60e51b81526020600482015260126024820152716974656d206e6f7420617661696c61626c6560701b60448201526064016102e4565b604051634f558e7960e01b8152600481018490526001600160a01b03821690634f558e7990602401602060405180830381865afa1580156103af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d391906111c2565b61040b5760405162461bcd60e51b81526020600482015260096024820152681b9bdd08195e1a5cdd60ba1b60448201526064016102e4565b6040516331a9108f60e11b81526004810184905233906001600160a01b03831690636352211e90602401602060405180830381865afa158015610452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047691906111df565b6001600160a01b03161461049c5760405162461bcd60e51b81526004016102e4906111fc565b81516006146104e65760405162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d2e8cada92c8e640d8cadccee8d60531b60448201526064016102e4565b60405163b4e4c5db60e01b8152600481018490526000906001600160a01b0383169063b4e4c5db9060240161018060405180830381865afa15801561052f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610553919061121f565b60408051600680825260e08201909252919250600091906020820160c08036833701905050905060005b600660ff821610156105d957828160ff166006811061059e5761059e6112b0565b602002015160000151828260ff16815181106105bc576105bc6112b0565b6020908102919091010152806105d1816112c6565b91505061057d565b5060006105e58661096e565b90506105f3818387336109e8565b5060408051600680825260e082019092526000916020820160c080368337505060408051600680825260e0820190925292935060009291506020820160c080368337505060408051600680825260e0820190925292935060009291506020820160c08036833701905050905060005b600660ff8216101561080157876001600160a01b0316639bb8eb898b8b8460ff1681518110610693576106936112b0565b60200260200101518460ff1660058111156106b0576106b06111ac565b336040518563ffffffff1660e01b81526004016106d09493929190611307565b6020604051808303816000875af11580156106ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071391906111df565b848260ff1681518110610728576107286112b0565b60200260200101906001600160a01b031690816001600160a01b031681525050888160ff168151811061075d5761075d6112b0565b602002602001015160000151838260ff168151811061077e5761077e6112b0565b602002602001018181525050888160ff168151811061079f5761079f6112b0565b602002602001015160200151828260ff16815181106107c0576107c06112b0565b602002602001019060028111156107d9576107d96111ac565b908160028111156107ec576107ec6111ac565b905250806107f9816112c6565b915050610662565b50887f95485ec05ddcd87a82af4c1372441afbf33efc8cfe6a7389fbdd965fa7073b7e8383864260405161083894939291906113a0565b60405180910390a2505050505050505050565b6108536108c4565b6001600160a01b0381166108b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102e4565b6108c18161091e565b50565b6000546001600160a01b031633146102285760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102e4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60048054604051631302528560e21b81529182018390526000916001600160a01b03909116908190634c094a14906024015b602060405180830381865afa1580156109bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e1919061143d565b9392505050565b6000805b600660ff82161015610b3e576000848260ff1681518110610a0f57610a0f6112b0565b60200260200101516000015190506000858360ff1681518110610a3457610a346112b0565b602002602001015160200151905081600003610a51575050610b2c565b81878460ff1681518110610a6757610a676112b0565b602002602001015114610a7f57610a7f828287610b4a565b610a9e82828560ff166005811115610a9957610a996111ac565b610d10565b6001816002811115610ab257610ab26111ac565b03610b29576000610ac283610e71565b90506000610ad08a83610ea5565b90506000610add83610f26565b90508180610ae85750805b610b255760405162461bcd60e51b815260206004820152600e60248201526d756e61626c6520636f6d62696e6560901b60448201526064016102e4565b5050505b50505b80610b36816112c6565b9150506109ec565b50600195945050505050565b6000826002811115610b5e57610b5e6111ac565b03610cac57600254604051634f558e7960e01b8152600481018590526001600160a01b03909116908190634f558e79906024015b602060405180830381865afa158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd391906111c2565b610c125760405162461bcd60e51b815260206004820152601060248201526f746f6b656e206e6f742065786973747360801b60448201526064016102e4565b6040516331a9108f60e11b8152600481018590526001600160a01b038084169190831690636352211e90602401602060405180830381865afa158015610c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8091906111df565b6001600160a01b031614610ca65760405162461bcd60e51b81526004016102e4906111fc565b50505050565b6001826002811115610cc057610cc06111ac565b03610cf857600354604051634f558e7960e01b8152600481018590526001600160a01b03909116908190634f558e7990602401610b92565b60405162461bcd60e51b81526004016102e4906111fc565b6000826002811115610d2457610d246111ac565b03610e00576002546001600160a01b0316816005811115610d4757610d476111ac565b60405163c19a4ef560e01b8152600481018690526001600160a01b0383169063c19a4ef590602401602060405180830381865afa158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db09190611456565b6005811115610dc157610dc16111ac565b14610ca65760405162461bcd60e51b815260206004820152600f60248201526e77726f6e67206974656d207479706560881b60448201526064016102e4565b6001826002811115610e1457610e146111ac565b03610e37576003546001600160a01b0316816005811115610d4757610d476111ac565b60405162461bcd60e51b815260206004820152600f60248201526e77726f6e67206974656d207479706560881b60448201526064016102e4565b60035460405163184c334d60e01b8152600481018390526000916001600160a01b031690819063184c334d906024016109a0565b60048054604051639fe3af5b60e01b8152918201849052602482018390526000916001600160a01b03909116908190639fe3af5b90604401602060405180830381865afa158015610efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1e91906111c2565b949350505050565b60035460405163907f1c9160e01b8152600481018390526000916001600160a01b031690819063907f1c9190602401602060405180830381865afa158015610f72573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e191906111c2565b6001600160a01b03811681146108c157600080fd5b80356102ed81610f96565b600060208284031215610fc857600080fd5b81356109e181610f96565b80151581146108c157600080fd5b600060208284031215610ff357600080fd5b81356109e181610fd3565b8035600381106102ed57600080fd5b60006020828403121561101f57600080fd5b6109e182610ffe565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561106157611061611028565b60405290565b60405160c0810167ffffffffffffffff8111828210171561106157611061611028565b604051601f8201601f1916810167ffffffffffffffff811182821017156110b3576110b3611028565b604052919050565b6000806000606084860312156110d057600080fd5b8335925060208085013567ffffffffffffffff808211156110f057600080fd5b818701915087601f83011261110457600080fd5b81358181111561111657611116611028565b611124848260051b0161108a565b818152848101925060069190911b83018401908982111561114457600080fd5b928401925b8184101561118f576040848b0312156111625760008081fd5b61116a61103e565b84358152611179868601610ffe565b8187015283526040939093019291840191611149565b80965050505050506111a360408501610fab565b90509250925092565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156111d457600080fd5b81516109e181610fd3565b6000602082840312156111f157600080fd5b81516109e181610f96565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b600061018080838503121561123357600080fd5b83601f84011261124257600080fd5b61124a611067565b90830190808583111561125c57600080fd5b845b838110156112a657604081880312156112775760008081fd5b61127f61103e565b8151815260208083015161129281610f96565b82820152908452929092019160400161125e565b5095945050505050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff81036112ea57634e487b7160e01b600052601160045260246000fd5b60010192915050565b60038110611303576113036111ac565b9052565b600060a08201905085825284516020830152602085015161132b60408401826112f3565b506006841061133c5761133c6111ac565b60608201939093526001600160a01b039190911660809091015292915050565b600081518084526020808501945080840160005b838110156113955781516001600160a01b031687529582019590820190600101611370565b509495945050505050565b6080808252855190820181905260009060209060a0840190828901845b828110156113d9578151845292840192908401906001016113bd565b5050508381038285015286518082528783019183019060005b81811015611415576114058385516112f3565b92840192918401916001016113f2565b50508481036040860152611429818861135c565b935050505082606083015295945050505050565b60006020828403121561144f57600080fd5b5051919050565b60006020828403121561146857600080fd5b8151600681106109e157600080fdfea2646970667358221220893a2819ff70094eb0cb080952072885737abb39085f3ab53afedcf7235ef27d64736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.