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

Download history 316/week @ 2024-03-13 260/week @ 2024-03-20 152/week @ 2024-03-27 162/week @ 2024-04-03 117/week @ 2024-04-10 198/week @ 2024-04-17 103/week @ 2024-04-24 26/week @ 2024-05-01 21/week @ 2024-05-08 56/week @ 2024-05-15 108/week @ 2024-05-22 63/week @ 2024-05-29 31/week @ 2024-06-05 27/week @ 2024-06-12 33/week @ 2024-06-19 87/week @ 2024-06-26

每月191次下载

Apache-2.0

130KB
2.5K SLoC

Rust 2.5K SLoC // 0.0% comments TypeScript 289 SLoC // 0.1% comments

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