web3wagmi
← All standards

ERC-3525 Semi-Fungible Token

FinalERCcreated 2020-12-012 later proposals build on itrequires ERC-20, ERC-165, ERC-721

Defines a specification where ERC-721 compatible tokens with the same SLOT and different IDs are fungible.

Authors: Will Wang (@will42w), Mike Meng, Yi Cai (@YeeTsai), Ryan Chow, Zhongxin Wu (@Nerverwind), AlvisDu (@AlvisDu)

ERC-165 interface ids

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

IERC35250xd5358140

Functions this standard introduces (7)

0xe345e0bcallowance(uint256,address)view
0x8cb0a511approve(uint256,address,uint256)payable
0x9cc7f708balanceOf(uint256)view
0x263f3e7eslotOf(uint256)view
0x0f485c02transferFrom(uint256,address,uint256)payable
0x310ed7f0transferFrom(uint256,uint256,uint256)payable
0x3e7e8669valueDecimals()view

Inherited (10)

0x095ea7b3approve(address,uint256)ERC-721
0x70a08231balanceOf(address)ERC-721
0x081812fcgetApproved(uint256)ERC-721
0xe985e9c5isApprovedForAll(address,address)ERC-721
0x6352211eownerOf(uint256)ERC-721
0xb88d4fdesafeTransferFrom(address,address,uint256,bytes)ERC-721
0x42842e0esafeTransferFrom(address,address,uint256)ERC-721
0xa22cb465setApprovalForAll(address,bool)ERC-721
0x01ffc9a7supportsInterface(bytes4)ERC-165
0x23b872ddtransferFrom(address,address,uint256)ERC-721

Optional extensions (3)

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

IERC3525SlotEnumerable0x3b741b9e

0xed08fa80slotCount()
0x993bef8dslotByIndex(uint256)
0x4f8a0f83tokenSupplyInSlot(uint256)
0x00cd0110tokenInSlotByIndex(uint256,uint256)

IERC3525SlotApprovable0xb688be58

0x55cd4e06setApprovalForSlot(address,uint256,address,bool)
0xe345f05eisApprovedForSlot(address,uint256,address)

IERC3525Metadata0xe1600902

0xe8a3d485contractURI()
0x09c3dd87slotURI(uint256)

Events (4)

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

0x0b2aac84f3ec956911fd78eae5311062972ff949f38412e8da39069d9f068cc6TransferValue(uint256,uint256,uint256)
0x621b050de0ad08b51d19b48b3e6df75348c4de6bdd93e81b252ca62e28265b1bApprovalValue(uint256,address,uint256)
0xe4f48c240d3b994948aa54f3e2f5fca59263dfe1d52b6e4cf39a5d249b5ccb65SlotChanged(uint256,uint256,uint256)
0x7bdf71e6625aa496095bf08b60c677cf81c963f402cf258981e3bd7507d3480cApprovalForSlot(address,uint256,address,bool)

Depends on (3)

Proposals this one names in its requires field.

Built on by (2)

Later proposals that name this one in their requires field.

What the specification covers

Compare with

Parsed from the canonical specification · discussion