⚠️ Draft
Standards Track: ERC
ERC-7729: 带有元数据的 Token
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 中的描述进行解释。
每个符合标准的合约必须实现 IERC7729
和 ERC20
接口。
此标准包括以下接口:
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.