40个版本
0.18.0 | 2023年7月2日 |
---|---|
0.17.0 | 2023年3月23日 |
0.16.0 | 2022年10月25日 |
0.13.4 | 2022年7月23日 |
0.3.1 | 2020年10月16日 |
#990 in 神奇豆
10,419 每月下载量
在 68 个crate(56 个直接)中使用
210KB
5K SLoC
Cw721基础
这是cw721 NFT合约的基本实现。它实现了CW721规范,并设计为直接部署或导入其他合约以轻松构建具有自定义逻辑的cw721兼容NFT。
实现
- CW721基础
- 元数据扩展
- 可枚举扩展
实现
ExecuteMsg
和 QueryMsg
实现遵循 CW721规范,并在其中进行描述。除此之外,我们还做了一些补充
InstantiateMsg
接受名称和符号(用于元数据),以及一个 铸造者 地址。这是一个具有完全权限铸造新NFT(但不能修改现有NFT)的特殊地址。ExecuteMsg::Mint{token_id, owner, token_uri}
- 创建具有指定所有者和(可选)元数据的新令牌。它只能由在instantiate
中设置的铸造者调用。QueryMsg::Minter{}
- 返回此合约的铸造者地址。
它要求所有代币都必须在标准格式(无扩展)中定义元数据。对于通用NFT来说,这通常已经足够。
铸造者可以是外部参与者(例如,使用PubKey的Web服务器)或另一个合约。如果您只想自定义铸造行为,而不需要其他功能,则可以扩展此合约(导入代码并将它们连接起来),或者只需创建一个自定义合约作为所有者,并使用该合约进行铸造。
如果提供了,则期望 token_uri 指向遵循 ERC721元数据JSON模式 的JSON文件。
运行此合约
您需要安装Rust 1.65+,并具有 wasm32-unknown-unknown
目标。
您可以通过以下方式运行单元测试
cargotest
一旦您对内容满意,您可以通过以下方式将其编译为wasm
RUSTFLAGS='-C link-arg=-s' cargo wasm
cp ../../target/wasm32-unknown-unknown/release/cw721_base.wasm .
ls -l cw721_base.wasm
sha256sum cw721_base.wasm
或对于生产就绪(优化)的构建,在仓库根目录中运行构建命令:https://github.com/CosmWasm/cw-plus#compiling。
导入此合约
您还可以导入此合约的许多逻辑来构建另一个符合CW721的合约,例如可交易名称、加密猫咪或代币化房地产。
基本上,您只需编写您的处理函数,并导入 cw721_base::contract::handle_transfer
等等,并将它们分派到它们。这允许您使用自定义 ExecuteMsg
和 QueryMsg
以及您的附加调用,但使用底层实现来支持您想要支持的cw721消息标准。同样,对于 QueryMsg
也是如此。您很可能会编写一个自定义的、特定领域的 instantiate
。
待办事项:编写示例时添加
目前,您可以查看 cw721-staking
,了解如何“继承”cw721功能并将其与自定义逻辑结合。cw721的过程与此类似。
依赖项
~4–6MB
~126K SLoC