ERC-7280: 类似于 JSON-LD 的 NFT 元数据扩展
让 NFT 元数据具有等同于 JSON-LD 的语义功能。
Authors | Yohei Nishikubo (@yoheinishikubo) |
---|---|
Created | 2023-07-04 |
Discussion Link | https://ethereum-magicians.org/t/eip-7280-nft-metadata-extension-like-json-ld/14935 |
Requires | EIP-721, EIP-1155, EIP-3525 |
摘要
本提案扩展了非同质化代币(ERC-721, ERC-1155, ERC-3525, 以及其他)的元数据格式,添加了对类似 JSON-LD 格式的关联数据的支持。 附加数据存储在元数据 JSON 中的 linked_data 键下。
动机
现有的非同质化代币的元数据格式有限,不支持包含结构化和语义上有意义的数据。 通过集成 JSON-LD(关联数据),我们可以增强与 NFT 关联的元数据的丰富性和互操作性。
这允许复杂的元数据结构可以链接到外部模式和数据,从而提高 NFT 在各种应用程序中的上下文相关性和可用性。
规范
本文档中的关键词 “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, 和 “OPTIONAL” 按照 RFC 2119 和 RFC 8174 中的描述进行解释。
基于 JSON-LD 的元数据存储在元数据 JSON 中的一个新的 linked_data
键下。linked_data
键是一个对象数组,其中每个对象包含两个键:schema
和 data
。
名称 | 合规级别 | 类型 | 描述 |
---|---|---|---|
schema | MUST | object | 关联数据的模式。 |
data | MUST | object | 关联数据的数据。 |
模式
名称 | 合规级别 | 类型 | 描述 |
---|---|---|---|
uri | MUST | string | 模式的 URI。 |
name | MUST | string | 模式的名称。 |
description | OPTIONAL | string | 模式的描述。 |
数据
名称 | 合规级别 | 类型 | 描述 |
---|---|---|---|
uri | MUST | string | 数据的 URI。 |
lang | OPTIONAL | string | 数据的语言。如 en-US 的 IETF 语言标签。 |
name | OPTIONAL | string | 数据的名称。 |
description | OPTIONAL | string | 数据的描述。 |
理由
为了为 NFT 提供典型的网页,使用此扩展在 HTML header 标签中包含 JSON-LD 要简单得多。 只需从 linked_data
数组中查找符合 JSON-LD 值的 uri,获取它并将其内容嵌入到 HTML header 标签中即可。
这意味着 NFT 的铸造者可以控制在 Google 搜索结果中的外观,例如。
在更常见的互操作性情况下,NFT 元数据可以使用此扩展包含任何模式和数据。 这意味着 NFT 元数据可以用作任何应用程序的数据源。 有了模式,实现起来就容易多了。
向后兼容性
拟议的 NFT 元数据格式扩展与现有实现向后兼容。 不包含 linked_data
键的 NFT 将继续像以前一样运行,并且使用 NFT 元数据的现有应用程序不会受到影响。
参考实现
这是一个元数据 JSON 示例,演示了新的 linked_data 结构:
{
"name": "NFT Name",
"description": "This NFT represents...",
"image": "https://example.org/images/nft.png",
"linked_data": [
{
"schema": {
"name": "VideoObject",
"uri": "https://example.org/schemas/VideoObject.json"
},
"data": {
"uri": "https://example.org/data/video1.json"
}
},
{
"schema": {
"name": "MusicRecording",
"uri": "https://example.org/schemas/MusicRecording.json"
},
"data": {
"uri": "https://example.org/data/music1.json"
}
},
{
"schema": {
"name": "GoogleTravelImpactModel",
"uri": "https://example.org/schemas/GoogleTravelImpactModel.json"
},
"data": {
"uri": "https://example.org/data/gtim1.json"
}
}
]
}
在上面的示例中,NFT 元数据包含三个链接的数据对象,每个对象具有不同的模式和数据:
第一个。VideoObject 数据可以用作 HTML header 标签中的 JSON-LD,并在 Google 搜索结果中实现丰富的摘要。
第二个。MusicRecording 数据基于 schema.org
中的模式。但是,这一个无法实现丰富的摘要。
第三个。GoogleTravelImpactModel 数据是 Google Travel Impact Model 的专用模式。
最重要的一点是,可以使用如上的标准包含任何模式和数据。
示例文件
- VideoObject.json
- MusicRecording.json
- GoogleTravelImpactModel.json
- video1.json
- music1.json
- gtim1.json
安全考虑
除了已经与 NFT 和关联数据相关的安全考虑之外,拟议的扩展不会引入任何额外的安全考虑。 实现应遵守安全处理和验证来自外部来源的元数据的最佳实践。
版权
版权及相关权利通过 CC0 放弃。
Citation
Please cite this document as:
Yohei Nishikubo (@yoheinishikubo), "ERC-7280: 类似于 JSON-LD 的 NFT 元数据扩展 [DRAFT]," Ethereum Improvement Proposals, no. 7280, July 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7280.