Skip to content

AndreiMitrea/cw721-metadata-onchain

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CW721 Metadata Onchain

NFT creators may want to store their NFT metadata on-chain so other contracts are able to interact with it. With CW721-Base in CosmWasm, we allow you to store any data on chain you wish, using a generic extension: T.

In order to support on-chain metadata, and to demonstrate how to use the extension ability, we have created this simple contract. There is no business logic here, but looking at lib.rs will show you how do define custom data that is included when minting and available in all queries.

In particular, here we define:

#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)]
pub struct Trait {
    pub display_type: Option<String>,
    pub trait_type: String,
    pub value: String,
}

#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)]
pub struct Metadata {
    pub image: Option<String>,
    pub image_data: Option<String>,
    pub external_url: Option<String>,
    pub description: Option<String>,
    pub name: Option<String>,
    pub attributes: Option<Vec<Trait>>,
    pub background_color: Option<String>,
    pub animation_url: Option<String>,
    pub youtube_url: Option<String>,
}

pub type Extension = Option<Metadata>;

In particular, the fields defined conform to the properties supported in the Opensea Metadata Standard.

This means when you query NftInfo{name: "Enterprise"}, you will get something like:

{
  "name": "Enterprise",
  "token_uri": "https://starships.example.com/Starship/Enterprise.json",
  "extension": {
    "image": null,
    "image_data": null,
    "external_url": null,
    "description": "Spaceship with Warp Drive",
    "name": "Starship USS Enterprise",
    "attributes": null,
    "background_color": null,
    "animation_url": null,
    "youtube_url": null
  }
}

Please look at the test code for an example usage in Rust.

Notice

Feel free to use this contract out of the box, or as inspiration for further customization of cw721-base. We will not be adding new features or business logic here.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%