Alert Source Discuss
⚠️ Draft Standards Track: ERC

ERC-7729: 带有元数据的 Token

用于带有元数据的 token 的 ERC-20 扩展。

Authors msfew (@fewwwww)
Created 2023-06-24
Discussion Link https://ethereum-magicians.org/t/erc-7729-token-with-metadata/20939
Requires EIP-20

摘要

此标准扩展了 ERC-20 标准,以包含 metadata 函数接口和用于元数据的 JSON 模式。

动机

Memecoin 已经展示了将 token 与可视元数据相关联的价值。通过标准化一种在 ERC-20 token 中包含元数据的方式,开发人员可以创建更具吸引力和交互性的 token,从而促进社区参与。

规范

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

每个符合标准的合约必须实现 IERC7729ERC20 接口。

此标准包括以下接口:

pragma solidity ^0.8.0;

interface IERC20Metadata is IERC20 {
    /// @dev 返回与 token 关联的元数据 URI。
    ///  URI 可能指向符合 "ERCX Metadata JSON Schema" 的 JSON 文件。
    function metadata() external view returns (string memory);
}

这是上面引用的 “ERC-7729 元数据 JSON 模式”。

{
    "title": "Token Metadata",
    "type": "object",
    "properties": {
        "name": {
            "type": "string",
            "description": "标识此 token 代表的资产"
        },
        "description": {
            "type": "string",
            "description": "描述此 token 代表的资产"
        },
        "image": {
            "type": "string",
            "description": "一个 URI,指向具有 mime type image/* 的资源,代表此 token 代表的资产。"
        }
    }
}

原理

metadata 函数的选择基于标准和应用程序中的现有实现。

向后兼容性

此标准与 ERC-20 向后兼容,因为它使用新接口扩展了现有功能。

参考实现

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

interface IERC7729 is IERC20 {
    function metadata() external view returns (string memory);
}

contract ERC7729 is ERC20, IERCX {
    string _metadata = "ipfs://QmakTsyRRmvihYwiAstYPYAeHBfaPYz3v9z2mkA1tYLA4w";

    function metadata() external view returns (string memory) {
        return _metadata;
    }
}

安全注意事项

元数据 URI 可能会被操纵以指向恶意内容或钓鱼网站。链下索引器应执行验证检查,以确保用户元数据 URI 的安全性和完整性。

版权

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

Citation

Please cite this document as:

msfew (@fewwwww), "ERC-7729: 带有元数据的 Token [DRAFT]," Ethereum Improvement Proposals, no. 7729, June 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7729.