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)
函数可以实现为 pure
或 view
。
当使用 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.