7个版本 (4个重大变更)
0.15.0 | 2022年9月16日 |
---|---|
0.13.4 | 2022年7月23日 |
0.11.1 | 2022年2月24日 |
0.11.0 | 2022年1月4日 |
0.9.2 | 2021年10月14日 |
#27 in #on-chain
每月191次下载
130KB
2.5K SLoC
CW721 Metadata Onchain
NFT创作者可能希望将他们的NFT元数据存储在链上,以便其他合约能够与之交互。在CosmWasm的CW721-Base中,我们允许您使用通用的 extension: T
将任何您希望存储在链上的数据存储。
为了支持链上元数据并演示如何使用扩展功能,我们创建了此简单合约。这里没有业务逻辑,但查看 lib.rs
将显示如何定义在铸造时包含并在所有查询中可用的自定义数据。
特别是,这里我们定义了
#[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>;
特别是,定义的字段符合 OpenSea元数据标准 支持的属性。
这意味着当您查询 NftInfo{name: "Enterprise"}
时,您将得到类似的结果
{
"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
}
}
请查看Rust中的示例用法测试代码。
注意
您可以自由使用此合约,或将其作为对cw721-base进一步定制的灵感。我们不会在此处添加新功能或业务逻辑。
依赖关系
~4.5–6.5MB
~138K SLoC