Alert Source Discuss
⚠️ Draft Standards Track: ERC

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 键是一个对象数组,其中每个对象包含两个键:schemadata

名称 合规级别 类型 描述
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 的专用模式。 最重要的一点是,可以使用如上的标准包含任何模式和数据。

示例文件

安全考虑

除了已经与 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.