Alert Source Discuss
🚧 Stagnant Standards Track: ERC

ERC-5409: EIP-1155 非同质化 Token 扩展

允许 EIP-1155 表示非同质化 Token(具有唯一所有者的 token)

Authors Ronan Sandford (@wighawag)
Created 2022-07-23
Discussion Link https://ethereum-magicians.org/t/eip-5409-non-fungible-token-extension-for-eip-1155/10240
Requires EIP-165, EIP-721, EIP-1155

摘要

此标准是 EIP-1155 的扩展。它提出了一个额外的函数 ownerOf,允许 EIP-1155 token 支持非同质化(唯一所有者)。通过实现这个额外的函数,EIP-1155 token 可以受益于 EIP-721 的核心功能,而无需在同一合约中实现(效率较低的)EIP-721 规范。

动机

目前,EIP-1155 不允许外部调用者检测 token 是否真正唯一(只能有一个所有者)或同质化。这是因为 EIP-1155 没有公开一种机制来检测 token 的供应量是否保持为 “1”。此外,它不允许外部调用者直接在链上检索所有者。

EIP-1155 规范确实提到了使用拆分 id 来表示非同质化 token,但这需要一个预先建立且不属于标准一部分的约定,并且不如 EIP-721 的 ownerOf 那么简单。

获取 token 所有者的能力能够实现新颖的用例,包括所有者将数据与它相关联的能力。

规范

本文档中的关键词 “MUST”,“MUST NOT”,“REQUIRED”,“SHALL”,“SHALL NOT”,“SHOULD”,“SHOULD NOT”,“RECOMMENDED”,“MAY” 和 “OPTIONAL” 按照 RFC 2119 中的描述进行解释。

合约接口

interface IERC1155OwnerOf {

    /// @notice 查找 NFT 的所有者
    /// @dev 零地址表示没有所有者:token 不存在或它不是 NFT(供应量可能大于 1)
    /// @param tokenId NFT 的标识符
    /// @return NFT 所有者的地址
    function ownerOf(uint256 tokenId) external view returns (address);
}

ownerOf(uint256 tokenId) 函数可以实现为 pureview

当使用 0x6352211e 调用时,supportsInterface 方法必须返回 true

理由

当 token 不存在(或没有所有者)时,ownerOf 不会抛出异常。这简化了这种情况的处理。由于假设所有 EIP-721 实现都会抛出异常存在安全风险,因此在使用此 EIP-1155 扩展时,不应破坏与处理 EIP-721 的合约的兼容性。

向后兼容性

此 EIP 与 EIP-1155 完全向后兼容。

安全考虑

需要讨论。

版权

版权及相关权利通过 CC0 放弃。

Citation

Please cite this document as:

Ronan Sandford (@wighawag), "ERC-5409: EIP-1155 非同质化 Token 扩展 [DRAFT]," Ethereum Improvement Proposals, no. 5409, July 2022. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-5409.