web3wagmi
← All standards

ERC-6220 Composable NFTs utilizing Equippable Parts

FinalERCcreated 2022-12-20requires ERC-165, ERC-721, ERC-5773, ERC-6059

An interface for Composable non-fungible tokens through fixed and slot parts equipping.

Authors: Bruno Škvorc (@Swader), Cicada (@CicadaNCR), Steven Pineda (@steven2308), Stevan Bogosavljevic (@stevyhacker), Jan Turk (@ThunderDeliverer)

ERC-165 interface ids

Computed here as the XOR of the selectors each interface defines.

IERC62200x28bc9ae4

Functions this standard introduces (6)

0x074334fbcanTokenBeEquippedWithAssetIntoSlot(address,uint256,uint64,uint64)view
0x38dcf74cequip((uint256,uint256,uint64,uint64,uint64))
0x4e60edbagetAssetAndEquippableData(uint256,uint64)view
0x7507e2aegetEquipment(uint256,address,uint64)view
0xee1dffcfisChildEquipped(uint256,address,uint256)view
0xc259a988unequip(uint256,uint64,uint64)

Inherited (14)

0xfc3517c8acceptAsset(uint256,uint256,uint64)ERC-5773
0x5ea72f36approveForAssets(address,uint256)ERC-5773
0x5e94354agetActiveAssetPriorities(uint256)ERC-5773
0x7280281egetActiveAssets(uint256)ERC-5773
0xe467a48fgetApprovedForAssets(uint256)ERC-5773
0x5e2e3292getAssetMetadata(uint256,uint64)ERC-5773
0xdf6f556bgetAssetReplacements(uint256,uint64)ERC-5773
0x51532e5agetPendingAssets(uint256)ERC-5773
0x22e6d160isApprovedForAllForAssets(address,address)ERC-5773
0xe7de4de4rejectAllAssets(uint256,uint256)ERC-5773
0x22f6da9crejectAsset(uint256,uint256,uint64)ERC-5773
0x8507dc28setApprovalForAllForAssets(address,bool)ERC-5773
0xde8e602csetPriority(uint256,uint64[])ERC-5773
0x01ffc9a7supportsInterface(bytes4)ERC-165

Optional extensions (1)

Interfaces the spec defines alongside the core one, which an implementation may or may not carry.

ICatalog0xd912401f

0x86a92af7getMetadataURI()
0x15dae03egetType()
0xdcb79d56checkIsEquippable(uint64,address)
0xdc477d2fcheckIsEquippableToAll(uint64)
0xd297ac43getPart(uint64)
0x9806c6ecgetParts(uint64[])

Events (7)

Topic0 is the keccak256 hash of the signature, which is what a log filter matches on.

0x1f5de02b1d9c93ca468f54630e1daf13f6dc458a63f8061ff73e85bf9bc38884ChildAssetEquipped(uint256,uint64,uint64,uint256,address,uint64)
0x438e039ebbba8f290f3b5d41aaf3295eccc9b5e6b0e1d52ace700772afb7da13ChildAssetUnequipped(uint256,uint64,uint64,uint256,address,uint64)
0x5b5af0622001a9b735a56357ddc1abd65e6a640126498674daf9d2fb05160725ValidParentEquippableGroupIdSet(uint64,uint64,address)
0xc4715b52aed3b9dfb2fbdc63e39e234892ec1dd3811d2c671646dbfd3d32d92eAddedPart(uint64,uint8,uint8,address[],string)
0x379edf7304a765a58c7eba1fef9bc8675355bf31e276de44d60da39bb04c76baAddedEquippables(uint64,address[])
0x507a75726ac34d3eb68ebf61f034616ee2030c6193bd4a9efb7e131de6c6adccSetEquippables(uint64,address[])
0x540b0b22993accb6c2b7b0f4a5bd1b7e6419708ef2a68c39f09f01c848ba4fbcSetEquippableToAll(uint64)

Depends on (4)

Proposals this one names in its requires field.

What the specification covers

Compare with

Parsed from the canonical specification · discussion