# 如何在 Archway 上构建、铸造和转移 NFT

By [Archway中文资料](https://paragraph.com/@archway) · 2022-03-24

---

!\[介绍 在过去的一年里，不可替代的代币或 NFT 一直是一个热门话题。从 CryptoKitties 到 Apes 的狂热和 Twitter 接受它们作为个人资料图片，NFT 成为去中心化数字世界的重要组成部分。

在本指南中，我们将学习如何使用 CosmWasm 在 Archway 中编写、部署和传输 NFT 集合智能合约。

CosmWasm 的 NFT 标准

要创建 NFT 智能合约，我们应该遵循一个令牌标准，该标准定义了一个具有通用端点和消息格式的接口。这些标准确保令牌将以特定方式运行并且可以相互组合。

NFT 合约最著名的规范是 ERC-721，它首先由 CryptoKitties 在以太坊上引入。在 CosmWasm 中，遵循相同的约定，我们将此标准称为 CW721。查看规范，我们看到它定义了一些我们必须遵循的消息和查询，最重要的是：

铸币厂 {token\_id，所有者，token\_uri} TransferNft {recipient, token\_id} 代币{所有者} {token\_id} 的所有者

这些是 NFT 的基本方面：铸造它们的入口点、转移的另一个入口点以及查询其所有权的方法。

创建智能合约

要在 Archway 中创建 NFT 智能合约，您需要Archway 开发者 CLI。如果您还没有配置它，请查看快速入门指南。

接下来，我们将设置两个帐户，一个用于部署和铸造NFT，另一个用于 NFT转账的接收者。\]([https://images.mirror-media.xyz/publication-images/OutlOHpnxJ9JJqHs9Xwhm.png?height=393&width=700](https://images.mirror-media.xyz/publication-images/OutlOHpnxJ9JJqHs9Xwhm.png?height=393&width=700))

![](https://storage.googleapis.com/papyrus_images/6208bfd9a7177fd0c8b6dabcfb829353e1bcd32b20b0e0e0d63b68452a38650b.png)

使用此模板的优点是它使用[cw721-base](https://github.com/CosmWasm/cw-nfts/tree/main/contracts/cw721-base) crate 实例化我们的合约，这是 CW721 规范的基本实现，可以根据我们的需要轻松扩展。

存储 NFT 元数据
==========

资产元数据是任何 NFT 的关键元素。它定义了 NFT 市场可以提取的名称、图像 URL 和其他属性等信息，以向用户显示相关信息。稀有度、自定义特性等都存储在这里。它的规范由\*[Metadata JSON Schema](https://docs.opensea.io/docs/metadata-standards)\*定义。

![](https://storage.googleapis.com/papyrus_images/e982a2271c32642df04d9434506cc8ef7116b0d0cfece4abfc7e71e7f3da6933.png)

[https://gist.github.com/aelesbao/ce6a0d94e6b6fb02b1d94e3f0472e057/raw/1bdce7d6bc6c9d3f082a0445b670950bff9490e5/metadata.json](https://gist.github.com/aelesbao/ce6a0d94e6b6fb02b1d94e3f0472e057/raw/1bdce7d6bc6c9d3f082a0445b670950bff9490e5/metadata.json)

在我们的示例中，我们会将这些信息保存_在链上_，或者换句话说，合约会将元数据存储在其内部状态中。这就是我们在`src/lib.rs`文件中定义元数据结构的方式：

![](https://storage.googleapis.com/papyrus_images/05ddfda97f85140fa8b209d25e5efb0b61a5e3846a7cb702dd65f462d178c7cb.png)

[https://gist.github.com/aelesbao/031ad3b2ef452cf58d8847b56d0cdb69/raw/9be7adfbb74ecfad354570e1e2086da070fb9107/lib.rs](https://gist.github.com/aelesbao/031ad3b2ef452cf58d8847b56d0cdb69/raw/9be7adfbb74ecfad354570e1e2086da070fb9107/lib.rs)

发布和实例化合约
========

在部署合约之前，我们需要从水龙头向我们的_部署者_账户申请代币。这可以通过`archway faucet`命令来完成。

!\[现在我们准备好部署和实例化合约了。合约实例化需要三个参数： name：NFT 集合名称。 symbol: 表示它的令牌符号。 minter：允许使用此合约铸造新 NFT 的钱包地址。

要部署它，我们deploy使用命令行中配置的先前参数运行命令：\]([https://images.mirror-media.xyz/publication-images/JcwKmLNgVF8iT\_60YcG4B.png?height=139&width=700](https://images.mirror-media.xyz/publication-images/JcwKmLNgVF8iT_60YcG4B.png?height=139&width=700))

![](https://storage.googleapis.com/papyrus_images/fb23ce2135262dd2cc32acf24dd258b2067e4fd0379ad88539aff8056444e16e.png)

                               **铸币厂**地址应该和我们上面创建的部署**者**账户一样
    

项目编译完成后，系统会询问您从哪个钱包发送交易。只需键入**部署程序**并继续。

铸币和查询
=====

为了铸造 NFT，我们需要发送一个带有`MintMsg`[结构](https://github.com/CosmWasm/cw-nfts/blob/v0.9.3/contracts/cw721-base/src/msg.rs#L54)数据的交易作为 JSON 参数，其中元数据包含在**扩展**属性中。这是我们将使用的 JSON 字符串：

![](https://storage.googleapis.com/papyrus_images/c32c77628ac6004dec946dfdee3c8d59a0a692887e97386b542fade712210fef.png)

![](https://storage.googleapis.com/papyrus_images/f95cb59fb53380927649544da170c4a91c2a423dc80f296a335ac7b88dc08f38.png)

结论
==

如您所见，在 Archway 中创建 NFT 智能合约非常简单，并且只需很少的努力。而且，借助 Archway 的魔力，对于使用 NFT 集合进行的每一笔交易，开发人员都会在协议本身中获得奖励！

如果您想查看本教程中涵盖的源代码，可以在我们的[合约示例存储库](https://github.com/archway-network/contracts-examples/tree/main/archway-nft-on-chain)中找到它。如果您有兴趣了解 NFT 的演变，我建议您查看[来自 OpenSea 的内容丰富的指南](https://opensea.io/blog/guides/non-fungible-tokens)。

在后续文章中，您将学习如何构建一个前端应用程序来显示我们刚刚创建的集合。敬请关注！

有问题吗？[加入我们的Discord](https://discord.gg/archwayhq)频道，我们将在那里为您提供帮助！

\*\*\*[Archway](https://archway.io/) \*\*\*是一个奖励开发者的智能合约平台。Archway 专为灵活开发和轻松部署到 Cosmos 而设计，可实现可扩展的跨链 dApp，以覆盖尽可能多的用户和资产。

_准备好开始建造了吗？_[**_在此处查看我们的文档_**](https://docs.archway.io/docs/create/getting-started/install)_。_

想要了解 Archway 的最新动态吗？

[通讯](https://www.archway.io/updates)// [Discord](https://discord.gg/archwayhq) // [Twitter](https://twitter.com/archwayhq) // [Github](https://github.com/archway-network)

---

*Originally published on [Archway中文资料](https://paragraph.com/@archway/archway-nft)*
