Welcome to the Multiverse Token Metadata Manifest! This page is designed to provide you with a comprehensive understanding of our NFT metadata schema.

πŸ“” Overview


Our metadata schema is compatible with widely-used NFT standards such as ERC-721 and ERC-1155 and follows the attributes scheme used by OpenSea. It supports top-level fields, multiple assets, and various media and asset types, providing a flexible solution for diverse NFT projects. The schema enables detailed attributes, licensing, and future expansions, making it adaptable for evolving use cases.

🏁 Goals


The new metadata schema aims to provide a flexible and user-friendly solution for diverse digital assets, ensuring compatibility with popular NFT standards and platforms. It simplifies the management and display of NFTs while enabling creators to incorporate multiple assets and customize attributes, making it adaptable for various use cases and easy for non-technical individuals to understand.

πŸ’» Technical specifications


In this section, you can find detailed information about the Multiverse Token Metadata Manifest schema. This includes the data structure, field types, and examples of how to use the schema. Whether you are a developer looking to implement this schema in your NFT project or a curious user looking to learn more, this section will provide you with the necessary information to understand and use the Multiverse Token Metadata Manifest.

Backwards Compatibility


ERC-721 and ERC-1155 compatibility

The schema is designed to be compatible with widely-adopted NFT standards, ERC-721 and ERC-1155. The following example demonstrates the basic structure of the metadata, which includes a name, description, and image for a digital asset:

{
    "name": "COOL BANANA",
    "description": "The coolest of the coolest bananas EVER. You can try it, but you will never be as cool as Cool Banana. So fresh, so DOPE, so epic, so amazing, so legendary, so COOL. Hell yeah. 😎😎",
    "image": "https://storage.cryptoavatars.io/avatarImages/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/160.jpg"
}

Attributes

It aligns with the widely-recognized standard used by OpenSea. In this example, we showcase a variety of attributes, each with its own rarity score:

{
    ...
    "attributes": [
        {
            "value": "100avatars",
            "rarity": 35
        },        
        {
            "value": "Cool",
            "rarity": 13
        },
        {
            "value": "Banana",
            "rarity": 0.35
        },
        {
            "value": "😎",
            "rarity": 0.35
        }
    ]
    ...
}

MTM Expansions


In the previous examples, we presented a brief outline of the fundamental metadata schema commonly employed by the community. In this section, we elaborate on the enhancements we have incorporated into MTM to provide more advanced solutions, which contribute additional valuable and essential information.

Root-level

We have introduced several new fields within the root of the metadata to enhance its functionality:

FieldTypeDescription
metadata_standardstringTag indicating the version of the metadata being used
extensionsarray [string]List of extensions included in the metadata
createdAtnumberDate of the NFT's creation in UNIX timestamp format
createdBystringWallet address of the creator
assetstringDigital asset associated with the NFT, typically a URL linking to the 3D resource in VRM format

This is an example for the fields explained above:

{
    ...
    "metadata_standard": "ETM_v1.0.0",
    "extensions": ["ETM_MTM_v1.0.0"],
    "createdAt": 1616570836570,
    "createdBy": "0x1e12090da3f2ebf1fb1e7ac9ce4b478c4185c646",
    "asset": "https://storage.cryptoavatars.io/VRMsByContractAddress/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/24_CoolBanana.vrm",
    ...
}

Multiple assets


As the NFT industry has evolved, new requirements and use cases have emerged. Initially, a single asset per NFT was sufficient, but the growth of the sector has demonstrated that one asset per NFT often falls short. As a result, it is essential to explore and adopt a new metadata standard that accommodates multiple assets. For this purpose, we have drawn inspiration from the Extensible Token Metadata Standard (ETM), incorporating some specific enhancements.
To facilitate the inclusion of multiple assets, we have introduced an assets field, which is an array of the assets associated with the NFT, adhering to the following schema:

FieldTypeDescription
media_typeMediaType (enum)This field is utilized to provide guidance on how the asset should be interpreted
asset_typeAssetType (enum)This field specifies the purpose of the asset. Some values may include version numbers, such as nexus-custom_1, nexus-custom_2, and so on
filesAssetFileDto[]This field represents an array of files associated with the asset

Media type

The media_type field provides a MediaType enum whose possible values are "model", "animation", "image", "video", "audio", "text", "font" and "application".

Asset type

The asset_type field provides an AssetType enum whose possible values are default, v1ral, nexus-custom and nexus-voxel.

  • default: The primary or standard asset of the NFT
  • v1ral: The asset for collections utilizing the CryptoAvatars V1RAL avatar
  • nexus-custom: The asset generated by our Nexus tool, which links a custom VRM with an NFT
  • nexus-voxel: A voxelized version of the asset linked to the same NFT as its default asset

These types can have multiple versions, such as "nexus-custom", "nexus-custom_1", "nexus-custom_2", and so on.

Asset File

The files field offers an array of AssetFileDto, which is defined as follows:

FieldTypeDescription
urlstringURL for the file
file_typestringFile format expressed as a valid MIME type, such as "model/vrm"
namestring (optional)Identifier name for a file. For example "icon", "mid_shot" or "fullbody" is the convention that we apply for VIPE Heroes and others

Examples


Multiple assets

The example below shows an NFT with two assets; the default asset and its voxelized version:

{
    "image": "https://storage.cryptoavatars.io/avatarImages/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/160.jpg",
    "description": "The coolest of the coolest bananas EVER. You can try it, but you will never be as cool as Cool Banana. So fresh, so DOPE, so epic, so amazing, so legendary, so COOL. Hell yeah. 😎😎",
    "name": "COOL BANANA",
    "assets": [
        {
            "media_type": "model",
            "asset_type": "default",
            "files": [
                {
                    "url": "https://storage.cryptoavatars.io/VRMsByContractAddress/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/24_CoolBanana.vrm",
                    "file_type": "model/vrm"
                }
            ]
        },
        {
            "media_type": "model",
            "asset_type": "nexus-voxel",
            "files": [
                {
                    "url": "https://storage.cryptoavatars.io/VRMsByContractAddress/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/24_CoolBanana_voxel.vrm",
                    "file_type": "model/vrm"
                }
            ]
        }
    ]
}

Multiple files

The following example showcases an NFT containing a single asset that consists of multiple files:

{
    "image": "https://storage.cryptoavatars.io/avatarImages/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/160.jpg",
    "description": "The coolest of the coolest bananas EVER. You can try it, but you will never be as cool as Cool Banana. So fresh, so DOPE, so epic, so amazing, so legendary, so COOL. Hell yeah. 😎😎",
    "name": "COOL BANANA",
    "assets": [
        {
            "media_type": "model",
            "asset_type": "default",
            "files": [
                {
                    "url": "https://storage.cryptoavatars.io/VRMsByContractAddress/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/24_CoolBanana.vrm",
                    "file_type": "model/vrm"
                },
                {
                    "url": "https://storage.cryptoavatars.io/VRMsByContractAddress/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/24_CoolBanana.fbx",
                    "file_type": "model/fbx"
                },
                {
                    "url": "https://storage.cryptoavatars.io/VRMsByContractAddress/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/24_CoolBanana.glb",
                    "file_type": "model/glb"
                }
            ]
        }
    ]
}

Multiple files with naming

Same structure as the previous example but with named files:

{
  "name": "VIPE Hero #544",
  "description": "Genesis PFP collection of VIPE NFT Avatar Marketplace. With interoperability, IP Commercial Rights and Customization.",
  "assets": [
    {
      "asset_type": "default",
      "media_type": "model",
      "files": [
        {
          "file_type": "model/vrm",
          "url": "ipfs://QmYFre4J1WFfsjVc1t7KgakcTE5zYjZvmBdW9ZmbxjCrfY/default_544.vrm"
        },
        {
          "file_type": "image/png",
          "url": "ipfs://QmSuHyJLgNi4rSm7Nn2sYy4UDRWDR5QPgW1vLqUtpwTbph/VIPEHero_544_r1.png",
          "name": "icon"
        },
        {
          "file_type": "image/png",
          "url": "ipfs://Qma8CB5G3rtZmM66WxiBucFir6H1Vqz27LSyVCqfT9HhTg/VIPEHero_544_r2.png",
          "name": "mid_shot"
        },
        {
          "file_type": "image/png",
          "url": "ipfs://QmTFrXo4XXi1wsBQ2Uw6Sntz7Vk3T5J35UJiSRGrVzxWet/VIPEHero_544_r3.png",
          "name": "fullbody"
        }
      ]
    }
  ]
}

Complete metadata example

Here's an example of complete NFT metadata that includes all the previously mentioned fields:

{
    "createdAt": 1616570836570,
    "createdBy": "0x1e12090da3f2ebf1fb1e7ac9ce4b478c4185c646",
    "asset": "https://storage.cryptoavatars.io/VRMsByContractAddress/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/24_CoolBanana.vrm",
    "image": "https://storage.cryptoavatars.io/avatarImages/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/160.jpg",
    "description": "The coolest of the coolest bananas EVER. You can try it, but you will never be as cool as Cool Banana. So fresh, so DOPE, so epic, so amazing, so legendary, so COOL. Hell yeah. 😎😎",
    "name": "COOL BANANA",
    "metadata_standard": "ETM_v1.0.0",
    "extensions": ["ETM_MTM_v1.0.0"],
    "attributes": [
        {
            "value": "100avatars",
            "rarity": 35
        },
        {
            "value": "Open",
            "rarity": 36
        },
        {
            "value": "Source",
            "rarity": 36
        },
        {
            "value": "Cool",
            "rarity": 13
        },
        {
            "value": "Banana",
            "rarity": 0.35
        },
        {
            "value": "Cartoon",
            "rarity": 39
        },
        {
            "value": "Fruit",
            "rarity": 1
        },
        {
            "value": "Dope",
            "rarity": 1
        },
        {
            "value": "Epic",
            "rarity": 0.35
        },
        {
            "value": "😎",
            "rarity": 0.35
        }
    ],
    "assets": [
        {
            "media_type": "model",
            "asset_type": "default",
            "files": [
                {
                    "url": "https://storage.cryptoavatars.io/VRMsByContractAddress/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/24_CoolBanana.vrm",
                    "file_type": "model/vrm"
                },
                {
                    "url": "https://storage.cryptoavatars.io/VRMsByContractAddress/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/24_CoolBanana.fbx",
                    "file_type": "model/fbx"
                },
                {
                  "file_type": "image/png",
                  "url": "https://storage.cryptoavatars.io/avatarImages/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/160_r1.png",
                  "name": "icon"
                },
                {
                  "file_type": "image/png",
                  "url": "https://storage.cryptoavatars.io/avatarImages/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/160_r2.png",
                  "name": "mid_shot"
                },
                {
                  "file_type": "image/png",
                  "url": "https://storage.cryptoavatars.io/avatarImages/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/160_r3.png",
                  "name": "fullbody"
                }
            ]
        },
        {
            "media_type": "model",
            "asset_type": "nexus-voxel",
            "files": [
                {
                    "url": "https://storage.cryptoavatars.io/VRMsByContractAddress/0xc1def47cf1e15ee8c2a92f4e0e968372880d18d1/24_CoolBanana_voxel.vrm",
                    "file_type": "model/vrm"
                }
            ]
        }
    ]
}

🚨 Licensing


This work is made available under the Creative Commons CC0 License.