From 683fa57e21d398c8e6d56c92db8d2820281a1664 Mon Sep 17 00:00:00 2001 From: Will Riches Date: Sat, 25 Jun 2022 22:05:55 +0100 Subject: [PATCH 01/14] Add CHIP for metadata format --- CHIPs/chip-will-riches-metadata.md | 101 +++++++++++++++++++++++++ assets/chip-XXXX/dialect.json | 114 +++++++++++++++++++++++++++++ assets/chip-XXXX/example.json | 48 ++++++++++++ 3 files changed, 263 insertions(+) create mode 100644 CHIPs/chip-will-riches-metadata.md create mode 100644 assets/chip-XXXX/dialect.json create mode 100644 assets/chip-XXXX/example.json diff --git a/CHIPs/chip-will-riches-metadata.md b/CHIPs/chip-will-riches-metadata.md new file mode 100644 index 00000000..be48a230 --- /dev/null +++ b/CHIPs/chip-will-riches-metadata.md @@ -0,0 +1,101 @@ +CHIP Number | < Creator must leave this blank. Editor will assign a number.> +:-------------|:---- +Title | Off-chain metadata format for NFT1 +Description | A standard for formatting off-chain metadata for NFT1-compliant NFTs on Chia's blockchain +Author | [Will Riches](https://github.com/wriches) +Comments-URI | < Creator must leave this blank. Editor will assign a URI.> +Status | < Creator must leave this blank. Editor will assign a status.> +Category | Process +Sub-Category | Other +Created | 2022-06-25 +Requires | 0005 +Replaces | None +Superseded-By | None + +## Abstract +The Chia NFT1 standard enables an off-chain metadata file to be referenced by Non-Fungible Tokens (NFTs) on chain, along with a hash of the file that ensures its immutability. This CHIP describes a standard format for off-chain metadata files. It is intended to be used with image-based NFTs but could be used with other types of media. + +## Motivation +The NFT1 standard does not require compliant NFTs to reference an off-chain metadata file. If an off-chain metadata file **is** used, it is not required to be in any particular file format or conform to a particular data model or schema. + +For projects in the Chia ecosystem to be able to create, display and interact with NFTs in a consistent manner, some coordination of metadata file formats is necessary. + +## Backwards Compatibility +If this CHIP is accepted and the data format becomes widely used by projects in the Chia NFT ecosystem, it is possible that non-compliant NFTs which have already been minted will not be displayed correctly, or at least will have their full metadata displayed. However, the same risk is present without this CHIP being put forward, since there would be little standardization. + +## Rationale + * For wide compatibility with developers, JSON format was selected. + * To avoid low quality data being used unnecessarily, only a minimal set of fields are required to be compliant with the format. + * A collection object is included, which would result in collection information being duplicated across each NFT in the collection. Although storage is not a large problem since the metadata is off chain, this data structure is not ideal since NFT tools will have to parse collection information from each NFT and potentially deal with mismatches. However, this is seen as an acceptable interim measure until collection information is directly referenced on chain. + * Collection data is optional, but if it is included it must include both a collection `id` and `name` to enable collections to be grouped more easily. + +## Specification +The metadata file must be in JSON format. Typically, the metadata file will have a `.json` extension, but this is not required. + +In this section, the schema of the root JSON object is described. + +### Properties + +| Property | Type | Required | Description | +|----------------|-------------------------|----------|----------------------------------------------------------------------| +| `description` | string | **Yes** | Description of the NFT | +| `format` | string | **Yes** | CHIP number of the metadata format. Possible values are: `CHIP-XXXX`. | +| `name` | string | **Yes** | Name of the NFT | +| `attributes` | [object](#attributes)[] | No | Attributes of the NFT | +| `collection` | [object](#collection) | No | NFT collection information | +| `minting_tool` | string | No | Name or short tag of the minting tool used to create this NFT | + +### `attributes` +Attributes of the NFT + +#### Properties + +| Property | Type | Required | Description | +|-------------|-------------------|----------|--------------------------------------------------------------------------------------------| +| `type` | integer or string | **Yes** | Name of the NFT attribute | +| `value` | integer or string | **Yes** | Value of the NFT attribute | +| `max_value` | integer | No | Maximum value of the NFT attribute in relation to other NFTs. Only applicable to integers. | +| `min_value` | integer | No | Minimum value of the NFT attribute in relation to other NFTs. Only applicable to integers. | + +### `collection` +NFT collection information + +#### Properties + +| Property | Type | Required | Description | +|--------------|-------------------------|----------|----------------------------------| +| `id` | string | **Yes** | ID of the NFT collection | +| `name` | string | **Yes** | Name of the NFT collection | +| `attributes` | [object](#attributes)[] | No | Attributes of the NFT collection | + +#### `attributes` +Attributes of the NFT collection + +##### Properties + +| Property | Type | Required | Description | +|----------|-------------------|----------|---------------------------------------| +| `type` | integer or string | **Yes** | Name of the NFT collection attribute | +| `value` | integer or string | **Yes** | Value of the NFT collection attribute | + + +## Reference Implementation +The schema is [made available for consumption as a JSON Schema dialect](assets/chip-XXXX/schema.json). The dialect can be used to validate that metadata files are compliant with the schema. + +An [example metadata file](assets/chip-XXXX/example.json) has also been included. + +## Security +Currently, there are no requirements of the metadata's file format or data structure. From a security perspective, introducing a standard format is only a net gain. + +This format includes collection information, which itself does not verify the legitimacy of the collection. It is incumbent on NFT tools and services to combine this collection information with verifiable ownership data, such as the DID of the creator. The risk of NFT tools not implementing these checks is not introduced by this format, but it's possible that the availability of collection information in a standard metadata format could infer that this information is verified. This can be prevented by providing clear information and documentation to developers. + +## Additional Assets + * JSON Schema dialect: [assets/chip-XXXX/schema.json](assets/chip-XXXX/schema.json) + * Example off-chain metadata file: [assets/chip-XXXX/example.json](assets/chip-XXXX/example.json) + +## Copyright +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). + + + + diff --git a/assets/chip-XXXX/dialect.json b/assets/chip-XXXX/dialect.json new file mode 100644 index 00000000..6868e847 --- /dev/null +++ b/assets/chip-XXXX/dialect.json @@ -0,0 +1,114 @@ +{ + "$id": "https://raw.githubusercontent.com/Chia-Network/chips/main/assets/chip-XXXX/schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "CHIP-XXXX", + "description": "Chia NFT off-chain metadata format", + "type": "object", + "properties": { + "format": { + "type": "string", + "enum": [ + "CHIP-XXXX" + ], + "description": "CHIP number of the metadata format" + }, + "name": { + "type": "string", + "description": "Name of the NFT" + }, + "description": { + "type": "string", + "description": "Description of the NFT" + }, + "minting_tool": { + "type": "string", + "description": "Name or short tag of the minting tool used to create this NFT" + }, + "attributes": { + "type": "array", + "description": "Attributes of the NFT", + "items": { + "type": "object", + "properties": { + "type": { + "type": [ + "integer", + "string" + ], + "description": "Name of the NFT attribute" + }, + "value": { + "type": [ + "integer", + "string" + ], + "description": "Value of the NFT attribute" + }, + "min_value": { + "type": "integer", + "description": "Minimum value of the NFT attribute in relation to other NFTs. Only applicable to integers." + }, + "max_value": { + "type": "integer", + "description": "Maximum value of the NFT attribute in relation to other NFTs. Only applicable to integers." + } + }, + "required": [ + "type", + "value" + ] + } + }, + "collection": { + "type": "object", + "description": "NFT collection information", + "properties": { + "name": { + "type": "string", + "description": "Name of the NFT collection" + }, + "id": { + "type": "string", + "format": "uuid", + "description": "ID of the NFT collection" + }, + "attributes": { + "type": "array", + "description": "Attributes of the NFT collection", + "items": { + "type": "object", + "properties": { + "type": { + "type": [ + "integer", + "string" + ], + "description": "Name of the NFT collection attribute" + }, + "value": { + "type": [ + "integer", + "string" + ], + "description": "Value of the NFT collection attribute" + } + }, + "required": [ + "type", + "value" + ] + } + } + }, + "required": [ + "name", + "id" + ] + } + }, + "required": [ + "format", + "name", + "description" + ] +} \ No newline at end of file diff --git a/assets/chip-XXXX/example.json b/assets/chip-XXXX/example.json new file mode 100644 index 00000000..2341075c --- /dev/null +++ b/assets/chip-XXXX/example.json @@ -0,0 +1,48 @@ +{ + "format": "CHIP-XXXX", + "name": "Pikachu", + "description": "Electric-type Pokémon with stretchy cheeks", + "minting_tool": "SuperMinter/2.5.2", + "attributes": [ + { + "type": "Species", + "value": "Mouse" + }, + { + "type": "Color", + "value": "Yellow" + }, + { + "type": "Friendship", + "value": 50, + "min_value": 0, + "max_value": 255 + } + ], + "collection": { + "name": "Example Pokémon Collection", + "id": "e43fcfe6-1d5c-4d6e-82da-5de3aa8b3b57", + "attributes": [ + { + "type": "description", + "value": "Example Pokémon Collection is the best Pokémon collection. Get yours today!" + }, + { + "type": "icon", + "value": "https://examplepokemoncollection.com/image/icon.png" + }, + { + "type": "banner", + "value": "https://examplepokemoncollection.com/image/banner.png" + }, + { + "type": "twitter", + "value": "ExamplePokemonCollection" + }, + { + "type": "website", + "value": "https://examplepokemoncollection.com/" + } + ] + } +} \ No newline at end of file From 6e71dfb1fe1a20bd97ba08d692038733db65427e Mon Sep 17 00:00:00 2001 From: Will Riches Date: Sat, 25 Jun 2022 22:17:50 +0100 Subject: [PATCH 02/14] Fix filename --- assets/chip-XXXX/{dialect.json => schema.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename assets/chip-XXXX/{dialect.json => schema.json} (100%) diff --git a/assets/chip-XXXX/dialect.json b/assets/chip-XXXX/schema.json similarity index 100% rename from assets/chip-XXXX/dialect.json rename to assets/chip-XXXX/schema.json From 19cc1c54e8fa82ce807520fbf16d11b1537e0b53 Mon Sep 17 00:00:00 2001 From: Will Riches Date: Sat, 25 Jun 2022 22:30:33 +0100 Subject: [PATCH 03/14] Fix formatting --- CHIPs/chip-will-riches-metadata.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHIPs/chip-will-riches-metadata.md b/CHIPs/chip-will-riches-metadata.md index be48a230..09780b29 100644 --- a/CHIPs/chip-will-riches-metadata.md +++ b/CHIPs/chip-will-riches-metadata.md @@ -21,7 +21,7 @@ The NFT1 standard does not require compliant NFTs to reference an off-chain meta For projects in the Chia ecosystem to be able to create, display and interact with NFTs in a consistent manner, some coordination of metadata file formats is necessary. ## Backwards Compatibility -If this CHIP is accepted and the data format becomes widely used by projects in the Chia NFT ecosystem, it is possible that non-compliant NFTs which have already been minted will not be displayed correctly, or at least will have their full metadata displayed. However, the same risk is present without this CHIP being put forward, since there would be little standardization. +If this CHIP is accepted and the data format becomes widely used by projects in the Chia NFT ecosystem, it is possible that non-compliant NFTs which have already been minted will not be displayed correctly, or at least may not have their full metadata displayed. However, the same risk is present without this CHIP being put forward, since there would be little standardization. ## Rationale * For wide compatibility with developers, JSON format was selected. @@ -38,9 +38,9 @@ In this section, the schema of the root JSON object is described. | Property | Type | Required | Description | |----------------|-------------------------|----------|----------------------------------------------------------------------| -| `description` | string | **Yes** | Description of the NFT | | `format` | string | **Yes** | CHIP number of the metadata format. Possible values are: `CHIP-XXXX`. | | `name` | string | **Yes** | Name of the NFT | +| `description` | string | **Yes** | Description of the NFT | | `attributes` | [object](#attributes)[] | No | Attributes of the NFT | | `collection` | [object](#collection) | No | NFT collection information | | `minting_tool` | string | No | Name or short tag of the minting tool used to create this NFT | From 1df682c784428d339c89365264121149956432d5 Mon Sep 17 00:00:00 2001 From: danieljperry Date: Sat, 25 Jun 2022 16:58:49 -0500 Subject: [PATCH 04/14] update status of metadata CHIP --- CHIPs/chip-will-riches-metadata.md | 16 ++++++++-------- assets/{chip-XXXX => chip-0007}/example.json | 2 +- assets/{chip-XXXX => chip-0007}/schema.json | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) rename assets/{chip-XXXX => chip-0007}/example.json (94%) rename assets/{chip-XXXX => chip-0007}/schema.json (94%) diff --git a/CHIPs/chip-will-riches-metadata.md b/CHIPs/chip-will-riches-metadata.md index 09780b29..549fd249 100644 --- a/CHIPs/chip-will-riches-metadata.md +++ b/CHIPs/chip-will-riches-metadata.md @@ -1,10 +1,10 @@ -CHIP Number | < Creator must leave this blank. Editor will assign a number.> +CHIP Number | 0007 :-------------|:---- Title | Off-chain metadata format for NFT1 Description | A standard for formatting off-chain metadata for NFT1-compliant NFTs on Chia's blockchain Author | [Will Riches](https://github.com/wriches) -Comments-URI | < Creator must leave this blank. Editor will assign a URI.> -Status | < Creator must leave this blank. Editor will assign a status.> +Comments-URI | [https://github.com/Chia-Network/chips/pull/26](https://github.com/Chia-Network/chips/pull/26) +Status | Review (Fast Track) Category | Process Sub-Category | Other Created | 2022-06-25 @@ -38,7 +38,7 @@ In this section, the schema of the root JSON object is described. | Property | Type | Required | Description | |----------------|-------------------------|----------|----------------------------------------------------------------------| -| `format` | string | **Yes** | CHIP number of the metadata format. Possible values are: `CHIP-XXXX`. | +| `format` | string | **Yes** | CHIP number of the metadata format. Possible values are: `CHIP-0007`. | | `name` | string | **Yes** | Name of the NFT | | `description` | string | **Yes** | Description of the NFT | | `attributes` | [object](#attributes)[] | No | Attributes of the NFT | @@ -80,9 +80,9 @@ Attributes of the NFT collection ## Reference Implementation -The schema is [made available for consumption as a JSON Schema dialect](assets/chip-XXXX/schema.json). The dialect can be used to validate that metadata files are compliant with the schema. +The schema is [made available for consumption as a JSON Schema dialect](assets/chip-0007/schema.json). The dialect can be used to validate that metadata files are compliant with the schema. -An [example metadata file](assets/chip-XXXX/example.json) has also been included. +An [example metadata file](assets/chip-0007/example.json) has also been included. ## Security Currently, there are no requirements of the metadata's file format or data structure. From a security perspective, introducing a standard format is only a net gain. @@ -90,8 +90,8 @@ Currently, there are no requirements of the metadata's file format or data struc This format includes collection information, which itself does not verify the legitimacy of the collection. It is incumbent on NFT tools and services to combine this collection information with verifiable ownership data, such as the DID of the creator. The risk of NFT tools not implementing these checks is not introduced by this format, but it's possible that the availability of collection information in a standard metadata format could infer that this information is verified. This can be prevented by providing clear information and documentation to developers. ## Additional Assets - * JSON Schema dialect: [assets/chip-XXXX/schema.json](assets/chip-XXXX/schema.json) - * Example off-chain metadata file: [assets/chip-XXXX/example.json](assets/chip-XXXX/example.json) + * JSON Schema dialect: [assets/chip-0007/schema.json](assets/chip-0007/schema.json) + * Example off-chain metadata file: [assets/chip-0007/example.json](assets/chip-0007/example.json) ## Copyright Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). diff --git a/assets/chip-XXXX/example.json b/assets/chip-0007/example.json similarity index 94% rename from assets/chip-XXXX/example.json rename to assets/chip-0007/example.json index 2341075c..9d1c13c8 100644 --- a/assets/chip-XXXX/example.json +++ b/assets/chip-0007/example.json @@ -1,5 +1,5 @@ { - "format": "CHIP-XXXX", + "format": "CHIP-0007", "name": "Pikachu", "description": "Electric-type Pokémon with stretchy cheeks", "minting_tool": "SuperMinter/2.5.2", diff --git a/assets/chip-XXXX/schema.json b/assets/chip-0007/schema.json similarity index 94% rename from assets/chip-XXXX/schema.json rename to assets/chip-0007/schema.json index 6868e847..0de0bcab 100644 --- a/assets/chip-XXXX/schema.json +++ b/assets/chip-0007/schema.json @@ -1,14 +1,14 @@ { - "$id": "https://raw.githubusercontent.com/Chia-Network/chips/main/assets/chip-XXXX/schema.json", + "$id": "https://raw.githubusercontent.com/Chia-Network/chips/main/assets/chip-0007/schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", - "title": "CHIP-XXXX", + "title": "CHIP-0007", "description": "Chia NFT off-chain metadata format", "type": "object", "properties": { "format": { "type": "string", "enum": [ - "CHIP-XXXX" + "CHIP-0007" ], "description": "CHIP number of the metadata format" }, From 13fad99eea46cc69203f47adab8f26d136345d41 Mon Sep 17 00:00:00 2001 From: danieljperry Date: Sat, 25 Jun 2022 17:11:31 -0500 Subject: [PATCH 05/14] update links --- CHIPs/chip-will-riches-metadata.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CHIPs/chip-will-riches-metadata.md b/CHIPs/chip-will-riches-metadata.md index 549fd249..3b1b035e 100644 --- a/CHIPs/chip-will-riches-metadata.md +++ b/CHIPs/chip-will-riches-metadata.md @@ -80,9 +80,9 @@ Attributes of the NFT collection ## Reference Implementation -The schema is [made available for consumption as a JSON Schema dialect](assets/chip-0007/schema.json). The dialect can be used to validate that metadata files are compliant with the schema. +The schema is [made available for consumption as a JSON Schema dialect](../assets/chip-0007/schema.json). The dialect can be used to validate that metadata files are compliant with the schema. -An [example metadata file](assets/chip-0007/example.json) has also been included. +An [example metadata file](../assets/chip-0007/example.json) has also been included. ## Security Currently, there are no requirements of the metadata's file format or data structure. From a security perspective, introducing a standard format is only a net gain. @@ -90,8 +90,8 @@ Currently, there are no requirements of the metadata's file format or data struc This format includes collection information, which itself does not verify the legitimacy of the collection. It is incumbent on NFT tools and services to combine this collection information with verifiable ownership data, such as the DID of the creator. The risk of NFT tools not implementing these checks is not introduced by this format, but it's possible that the availability of collection information in a standard metadata format could infer that this information is verified. This can be prevented by providing clear information and documentation to developers. ## Additional Assets - * JSON Schema dialect: [assets/chip-0007/schema.json](assets/chip-0007/schema.json) - * Example off-chain metadata file: [assets/chip-0007/example.json](assets/chip-0007/example.json) + * JSON Schema dialect: [assets/chip-0007/schema.json](../assets/chip-0007/schema.json) + * Example off-chain metadata file: [assets/chip-0007/example.json](../assets/chip-0007/example.json) ## Copyright Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). From dc2e294b489ca0201a8e0f5ee9310650106bf7d2 Mon Sep 17 00:00:00 2001 From: Will Riches Date: Tue, 28 Jun 2022 01:19:15 +0100 Subject: [PATCH 06/14] Add `sensitive_content` field and change `trait` to `trait_type` --- CHIPs/chip-will-riches-metadata.md | 29 +++++++++++++++-------------- assets/chip-0007/example.json | 7 ++++--- assets/chip-0007/schema.json | 15 +++++++++++++-- 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/CHIPs/chip-will-riches-metadata.md b/CHIPs/chip-will-riches-metadata.md index 3b1b035e..2f2bde3e 100644 --- a/CHIPs/chip-will-riches-metadata.md +++ b/CHIPs/chip-will-riches-metadata.md @@ -36,26 +36,27 @@ In this section, the schema of the root JSON object is described. ### Properties -| Property | Type | Required | Description | -|----------------|-------------------------|----------|----------------------------------------------------------------------| -| `format` | string | **Yes** | CHIP number of the metadata format. Possible values are: `CHIP-0007`. | -| `name` | string | **Yes** | Name of the NFT | -| `description` | string | **Yes** | Description of the NFT | -| `attributes` | [object](#attributes)[] | No | Attributes of the NFT | -| `collection` | [object](#collection) | No | NFT collection information | -| `minting_tool` | string | No | Name or short tag of the minting tool used to create this NFT | +| Property | Type | Required | Description | +|---------------------|-------------------------|----------|----------------------------------------------------------------------| +| `format` | string | **Yes** | CHIP number of the metadata format Possible values are: `CHIP-0007`. | +| `name` | string | **Yes** | Name of the NFT | +| `description` | string | **Yes** | Description of the NFT | +| `attributes` | [object](#attributes)[] | No | Attributes of the NFT | +| `collection` | [object](#collection) | No | NFT collection information | +| `minting_tool` | string | No | Name or short tag of the minting tool used to create this NFT | +| `sensitive_content` | boolean or string[] | No | Indicator for sensitive content within the NFT | ### `attributes` Attributes of the NFT #### Properties -| Property | Type | Required | Description | -|-------------|-------------------|----------|--------------------------------------------------------------------------------------------| -| `type` | integer or string | **Yes** | Name of the NFT attribute | -| `value` | integer or string | **Yes** | Value of the NFT attribute | -| `max_value` | integer | No | Maximum value of the NFT attribute in relation to other NFTs. Only applicable to integers. | -| `min_value` | integer | No | Minimum value of the NFT attribute in relation to other NFTs. Only applicable to integers. | +| Property | Type | Required | Description | +|--------------|-------------------|----------|--------------------------------------------------------------------------------------------| +| `trait_type` | integer or string | **Yes** | Name of the NFT attribute | +| `value` | integer or string | **Yes** | Value of the NFT attribute | +| `min_value` | integer | No | Minimum value of the NFT attribute in relation to other NFTs. Only applicable to integers. | +| `max_value` | integer | No | Maximum value of the NFT attribute in relation to other NFTs. Only applicable to integers. | ### `collection` NFT collection information diff --git a/assets/chip-0007/example.json b/assets/chip-0007/example.json index 9d1c13c8..8a0f833e 100644 --- a/assets/chip-0007/example.json +++ b/assets/chip-0007/example.json @@ -3,17 +3,18 @@ "name": "Pikachu", "description": "Electric-type Pokémon with stretchy cheeks", "minting_tool": "SuperMinter/2.5.2", + "sensitive_content": false, "attributes": [ { - "type": "Species", + "trait_type": "Species", "value": "Mouse" }, { - "type": "Color", + "trait_type": "Color", "value": "Yellow" }, { - "type": "Friendship", + "trait_type": "Friendship", "value": 50, "min_value": 0, "max_value": 255 diff --git a/assets/chip-0007/schema.json b/assets/chip-0007/schema.json index 0de0bcab..e8f81a37 100644 --- a/assets/chip-0007/schema.json +++ b/assets/chip-0007/schema.json @@ -24,13 +24,24 @@ "type": "string", "description": "Name or short tag of the minting tool used to create this NFT" }, + "sensitive_content": { + "type": [ + "boolean", + "array" + ], + "description": "Indicator for sensitive content within the NFT", + "items": { + "type": "string", + "description": "List of types of sensitive content within the NFT" + } + }, "attributes": { "type": "array", "description": "Attributes of the NFT", "items": { "type": "object", "properties": { - "type": { + "trait_type": { "type": [ "integer", "string" @@ -54,7 +65,7 @@ } }, "required": [ - "type", + "trait_type", "value" ] } From 2d3d81b7c85a2fd6b5818ae5384d03ca078b7bf6 Mon Sep 17 00:00:00 2001 From: Will Riches Date: Tue, 12 Jul 2022 15:44:20 +0100 Subject: [PATCH 07/14] Add NFT `data` object --- CHIPs/chip-will-riches-metadata.md | 21 +++++++++++---------- assets/chip-0007/example.json | 3 +++ assets/chip-0007/schema.json | 6 +++++- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/CHIPs/chip-will-riches-metadata.md b/CHIPs/chip-will-riches-metadata.md index 2f2bde3e..e8fe1401 100644 --- a/CHIPs/chip-will-riches-metadata.md +++ b/CHIPs/chip-will-riches-metadata.md @@ -36,18 +36,19 @@ In this section, the schema of the root JSON object is described. ### Properties -| Property | Type | Required | Description | -|---------------------|-------------------------|----------|----------------------------------------------------------------------| -| `format` | string | **Yes** | CHIP number of the metadata format Possible values are: `CHIP-0007`. | -| `name` | string | **Yes** | Name of the NFT | -| `description` | string | **Yes** | Description of the NFT | -| `attributes` | [object](#attributes)[] | No | Attributes of the NFT | -| `collection` | [object](#collection) | No | NFT collection information | -| `minting_tool` | string | No | Name or short tag of the minting tool used to create this NFT | -| `sensitive_content` | boolean or string[] | No | Indicator for sensitive content within the NFT | +| Property | Type | Required | Description | +|---------------------|-------------------------|----------|-----------------------------------------------------------------------------------------------| +| `format` | string | **Yes** | CHIP number of the metadata format Possible values are: `CHIP-0007`. | +| `name` | string | **Yes** | Name of the NFT | +| `description` | string | **Yes** | Description of the NFT | +| `minting_tool` | string | No | Name or short tag of the minting tool used to create this NFT | +| `sensitive_content` | boolean or string[] | No | Indicator for sensitive content within the NFT | +| `attributes` | [object](#attributes)[] | No | Attributes of the NFT that may be directly displayed to the user | +| `collection` | [object](#collection) | No | NFT collection information | +| `data` | [object] | No | Any NFT data which is not suitable for the atrtributes array, such as non-human-readable data | ### `attributes` -Attributes of the NFT +Attributes of the NFT that may be directly displayed to the user #### Properties diff --git a/assets/chip-0007/example.json b/assets/chip-0007/example.json index 8a0f833e..2233a368 100644 --- a/assets/chip-0007/example.json +++ b/assets/chip-0007/example.json @@ -45,5 +45,8 @@ "value": "https://examplepokemoncollection.com/" } ] + }, + "data": { + "example_data": "VGhpcyBpcyBhbiBleGFtcGxlIG9mIGRhdGEgdGhhdCB5b3UgbWlnaHQgd2FudCB0byBzdG9yZSBpbiB0aGUgZGF0YSBvYmplY3QuIE5GVCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBub3QgaHVtYW4gcmVhZGFibGUgc2hvdWxkIGJlIHBsYWNlZCB3aXRoaW4gdGhpcyBvYmplY3QsIGFuZCB0aGUgYXR0cmlidXRlcyBhcnJheSB1c2VkIG9ubHkgZm9yIGluZm9ybWF0aW9uIHdoaWNoIGlzIGludGVuZGVkIHRvIGJlIHJlYWQgYnkgdGhlIHVzZXIu" } } \ No newline at end of file diff --git a/assets/chip-0007/schema.json b/assets/chip-0007/schema.json index e8f81a37..d5cf3d2e 100644 --- a/assets/chip-0007/schema.json +++ b/assets/chip-0007/schema.json @@ -37,7 +37,7 @@ }, "attributes": { "type": "array", - "description": "Attributes of the NFT", + "description": "Attributes of the NFT that may be directly displayed to the user", "items": { "type": "object", "properties": { @@ -115,6 +115,10 @@ "name", "id" ] + }, + "data": { + "type": "object", + "description": "Any NFT data which is not suitable for the atrtributes array, such as non-human-readable data" } }, "required": [ From c9d8a501952ad5cab5857408188bd85bcfc77c46 Mon Sep 17 00:00:00 2001 From: Will Riches Date: Tue, 12 Jul 2022 15:45:19 +0100 Subject: [PATCH 08/14] Add `series_number` and `series_total` properties --- CHIPs/chip-will-riches-metadata.md | 2 ++ assets/chip-0007/example.json | 2 ++ assets/chip-0007/schema.json | 10 ++++++++++ 3 files changed, 14 insertions(+) diff --git a/CHIPs/chip-will-riches-metadata.md b/CHIPs/chip-will-riches-metadata.md index e8fe1401..a27d53b8 100644 --- a/CHIPs/chip-will-riches-metadata.md +++ b/CHIPs/chip-will-riches-metadata.md @@ -43,6 +43,8 @@ In this section, the schema of the root JSON object is described. | `description` | string | **Yes** | Description of the NFT | | `minting_tool` | string | No | Name or short tag of the minting tool used to create this NFT | | `sensitive_content` | boolean or string[] | No | Indicator for sensitive content within the NFT | +| `series_number` | integer | No | Number that this NFT is within the series (sequence of unique NFTs) | +| `series_total` | integer | No | Total number of NFTs within the series (sequence of unique NFTs) | | `attributes` | [object](#attributes)[] | No | Attributes of the NFT that may be directly displayed to the user | | `collection` | [object](#collection) | No | NFT collection information | | `data` | [object] | No | Any NFT data which is not suitable for the atrtributes array, such as non-human-readable data | diff --git a/assets/chip-0007/example.json b/assets/chip-0007/example.json index 2233a368..4c898b92 100644 --- a/assets/chip-0007/example.json +++ b/assets/chip-0007/example.json @@ -4,6 +4,8 @@ "description": "Electric-type Pokémon with stretchy cheeks", "minting_tool": "SuperMinter/2.5.2", "sensitive_content": false, + "series_number": 22, + "series_total": 1000, "attributes": [ { "trait_type": "Species", diff --git a/assets/chip-0007/schema.json b/assets/chip-0007/schema.json index d5cf3d2e..35f084c0 100644 --- a/assets/chip-0007/schema.json +++ b/assets/chip-0007/schema.json @@ -35,6 +35,16 @@ "description": "List of types of sensitive content within the NFT" } }, + "series_number": { + "type": "integer", + "description": "Number that this NFT is within the series (sequence of unique NFTs)", + "minimum": 1 + }, + "series_total": { + "type": "integer", + "description": "Total number of NFTs within the series (sequence of unique NFTs)", + "minimum": 1 + }, "attributes": { "type": "array", "description": "Attributes of the NFT that may be directly displayed to the user", From 004689988ed1293ab84d458e2dcd586eca65af6c Mon Sep 17 00:00:00 2001 From: Will Riches Date: Wed, 20 Jul 2022 09:42:07 +0100 Subject: [PATCH 09/14] Changed wording --- CHIPs/chip-will-riches-metadata.md | 4 ++-- assets/chip-0007/schema.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHIPs/chip-will-riches-metadata.md b/CHIPs/chip-will-riches-metadata.md index a27d53b8..6d0bc9a1 100644 --- a/CHIPs/chip-will-riches-metadata.md +++ b/CHIPs/chip-will-riches-metadata.md @@ -43,8 +43,8 @@ In this section, the schema of the root JSON object is described. | `description` | string | **Yes** | Description of the NFT | | `minting_tool` | string | No | Name or short tag of the minting tool used to create this NFT | | `sensitive_content` | boolean or string[] | No | Indicator for sensitive content within the NFT | -| `series_number` | integer | No | Number that this NFT is within the series (sequence of unique NFTs) | -| `series_total` | integer | No | Total number of NFTs within the series (sequence of unique NFTs) | +| `series_number` | integer | No | Number that this NFT is within the series (sequence of distinct NFTs) | +| `series_total` | integer | No | Total number of NFTs within the series (sequence of distinct NFTs) | | `attributes` | [object](#attributes)[] | No | Attributes of the NFT that may be directly displayed to the user | | `collection` | [object](#collection) | No | NFT collection information | | `data` | [object] | No | Any NFT data which is not suitable for the atrtributes array, such as non-human-readable data | diff --git a/assets/chip-0007/schema.json b/assets/chip-0007/schema.json index 35f084c0..33d3151e 100644 --- a/assets/chip-0007/schema.json +++ b/assets/chip-0007/schema.json @@ -37,12 +37,12 @@ }, "series_number": { "type": "integer", - "description": "Number that this NFT is within the series (sequence of unique NFTs)", + "description": "Number that this NFT is within the series (sequence of distinct NFTs)", "minimum": 1 }, "series_total": { "type": "integer", - "description": "Total number of NFTs within the series (sequence of unique NFTs)", + "description": "Total number of NFTs within the series (sequence of distinct NFTs)", "minimum": 1 }, "attributes": { From 05b69160863798224d8eb6340c2bdd31c0a42d56 Mon Sep 17 00:00:00 2001 From: Will Riches Date: Thu, 22 Sep 2022 02:49:31 +0100 Subject: [PATCH 10/14] Update filename with CHIP number --- CHIPs/{chip-will-riches-metadata.md => chip-0007.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CHIPs/{chip-will-riches-metadata.md => chip-0007.md} (100%) diff --git a/CHIPs/chip-will-riches-metadata.md b/CHIPs/chip-0007.md similarity index 100% rename from CHIPs/chip-will-riches-metadata.md rename to CHIPs/chip-0007.md From e3bc98c5758755683eee29941e224f3eb60e9571 Mon Sep 17 00:00:00 2001 From: Will Riches Date: Thu, 22 Sep 2022 02:53:15 +0100 Subject: [PATCH 11/14] Add CHIP editor --- CHIPs/chip-0007.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHIPs/chip-0007.md b/CHIPs/chip-0007.md index 6d0bc9a1..f846e9cd 100644 --- a/CHIPs/chip-0007.md +++ b/CHIPs/chip-0007.md @@ -3,6 +3,7 @@ CHIP Number | 0007 Title | Off-chain metadata format for NFT1 Description | A standard for formatting off-chain metadata for NFT1-compliant NFTs on Chia's blockchain Author | [Will Riches](https://github.com/wriches) +Editor | [Dan Perry](https://github.com/danieljperry) Comments-URI | [https://github.com/Chia-Network/chips/pull/26](https://github.com/Chia-Network/chips/pull/26) Status | Review (Fast Track) Category | Process From f0bd9faa7445f44d7027b6e652122c18114b8fa5 Mon Sep 17 00:00:00 2001 From: Will Riches Date: Thu, 22 Sep 2022 02:56:46 +0100 Subject: [PATCH 12/14] Correct spelling mistake --- assets/chip-0007/schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/chip-0007/schema.json b/assets/chip-0007/schema.json index 33d3151e..48a62d49 100644 --- a/assets/chip-0007/schema.json +++ b/assets/chip-0007/schema.json @@ -128,7 +128,7 @@ }, "data": { "type": "object", - "description": "Any NFT data which is not suitable for the atrtributes array, such as non-human-readable data" + "description": "Any NFT data which is not suitable for the attributes array, such as non-human-readable data" } }, "required": [ @@ -136,4 +136,4 @@ "name", "description" ] -} \ No newline at end of file +} From 45d727f97fcb3d7e45c7ceec7fd87a300a266a61 Mon Sep 17 00:00:00 2001 From: danieljperry Date: Fri, 23 Sep 2022 15:27:43 -0500 Subject: [PATCH 13/14] Update status to Last Call Signed-off-by: danieljperry --- CHIPs/chip-0007.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHIPs/chip-0007.md b/CHIPs/chip-0007.md index f846e9cd..7d2ede00 100644 --- a/CHIPs/chip-0007.md +++ b/CHIPs/chip-0007.md @@ -5,7 +5,7 @@ Description | A standard for formatting off-chain metadata for NFT1-compliant Author | [Will Riches](https://github.com/wriches) Editor | [Dan Perry](https://github.com/danieljperry) Comments-URI | [https://github.com/Chia-Network/chips/pull/26](https://github.com/Chia-Network/chips/pull/26) -Status | Review (Fast Track) +Status | Last Call Category | Process Sub-Category | Other Created | 2022-06-25 From 71388a28e15b9d9a0e2d9d98e9b92a9c96f97cf0 Mon Sep 17 00:00:00 2001 From: danieljperry Date: Fri, 30 Sep 2022 20:45:53 -0500 Subject: [PATCH 14/14] Update metadata CHIP status to Final Signed-off-by: danieljperry --- CHIPs/chip-0007.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHIPs/chip-0007.md b/CHIPs/chip-0007.md index 7d2ede00..b35568c3 100644 --- a/CHIPs/chip-0007.md +++ b/CHIPs/chip-0007.md @@ -5,7 +5,7 @@ Description | A standard for formatting off-chain metadata for NFT1-compliant Author | [Will Riches](https://github.com/wriches) Editor | [Dan Perry](https://github.com/danieljperry) Comments-URI | [https://github.com/Chia-Network/chips/pull/26](https://github.com/Chia-Network/chips/pull/26) -Status | Last Call +Status | Final Category | Process Sub-Category | Other Created | 2022-06-25