Aptos

2025年09月09日更新 4 人订阅
原价: ¥ 2.2 限时优惠
专栏简介 Aptos 开发实战:从环境搭建到第一个 Hello World Aptos 开发指南:在 JetBrains 编辑器中配置运行、编译、测试与发布部署,实现更高效开发 Aptos 区块链智能合约入门:使用 Move 实现消息存储与检索 Aptos Move 语言中的变量管理与内存所有权机制详解 Aptos Move 编程语言中的四大基础类型解析:UINT、STRING、BOOL 与 ADDRESS 深入解读 APTOS-MOVE 中的 Vector 向量核心特性与操作 深入理解APTOS-MOVE中的函数修饰符:核心概念与应用 深入解读 Aptos Move 的 Struct 特性与四大能力 Aptos Move 控制流解析:IF、WHILE与LOOP的深入解读 Aptos Move 模块的特性与实操指南:模块引用与作用域管理 Aptos Move 模块的发布与交互:完整指南 深入理解 Aptos Move 中的 Object 创建与管理 深入探索 Aptos Move:Object 配置与实操指南 使用 Aptos Move 实现随机数生成:从 AIP-41 到实战操作 Aptos Move 实践指南:构建并部署同质化代币水龙头 (FA Faucet) Aptos Move NFT 项目实操指南:从开发到部署全流程解析 Aptos Move 开发入门:从环境搭建到合约部署全流程实录 Aptos Move 入门:从零到一的合约开发与测试实战 Move 语言核心:布尔逻辑与地址类型的实战精解 深入 Aptos Move:从public到friend,函数可见性详解 Aptos Move 编程:for、while 与 loop 循环的实战详解 Aptos Move 安全编程:abort 与 assert! 错误处理实战 Aptos Move 实战:基础运算与比较逻辑的实现与测试 Aptos Move 性能优化:位运算与移位操作实战 Aptos Move 实战:as 关键字与整数类型转换技巧 Aptos Move DeFi 实战:从零构建流动性池兑换逻辑 Aptos Move 实战:用 signer 实现合约所有权与访问控制 Aptos Move 核心安全:& 与 &mut 引用机制详解 Aptos Move 实战:全面掌握 SimpleMap 的增删改查 Aptos Move 入门:掌握链上资源(Resource)的增删改查 Aptos Move 深度实践:用嵌套数据结构构建链上金银储备系统 Aptos Move 实操:如何用 Tables 构建一个链上房产管理系统

Aptos Move NFT 项目实操指南:从开发到部署全流程解析

AptosMoveNFT项目实操指南:从开发到部署全流程解析随着区块链技术的不断发展,非同质化代币(NFT)已经成为数字资产管理的关键组成部分,为资产所有权和交易方式带来了革命性的变化。Aptos提供了一种创新的数字资产(DA)标准,使开发者能够轻松创建和管理链上独特的资产。通过集合

Aptos Move NFT 项目实操指南:从开发到部署全流程解析

随着区块链技术的不断发展,非同质化代币(NFT)已经成为数字资产管理的关键组成部分,为资产所有权和交易方式带来了革命性的变化。Aptos 提供了一种创新的数字资产 (DA) 标准,使开发者能够轻松创建和管理链上独特的资产。通过 集合 (Collection)代币 (Token) 的组合,开发者不仅可以轻松创建 NFT,还能为这些资产附加丰富的元数据(如图像、视频链接等),以增强用户的互动性和体验。

本文深入介绍了 Aptos 数字资产 (DA) 标准的核心功能,重点展示了如何通过 集合 (Collection)代币 (Token) 来创建和管理 NFT。我们将从项目初始化开始,详细讲解项目结构设计、智能合约编写、编译与部署过程,以及如何在 Aptos 区块链上调用和操作 NFT 项目。通过本教程的分步实践,读者将全面掌握 Aptos 上的 NFT 开发流程,学习如何通过智能合约实现链上资产管理与交易。

Aptos 数字资产 (DA) 标准

Aptos 的数字资产 (DA) 标准是其独特的非同质化代币 (NFT) 标准。NFT 代表链上唯一的数字资产,并通过集合的形式进行存储。

该标准由两个对象实现:

  1. 集合 (Collection) - 一组具有名称和背景信息的 NFT,用于组织和分类数字资产。
  2. 代币 (Token) - 表示独特资产的数字代币,通常用于代表 NFT,通常包含一个 uri,链接到与该资产相关的更多信息(例如图片、视频等)。

NFT 项目实操

第一步:创建项目并初始化

hello_aptos/AptosNFTFactory on  main [?] via 🅒 base 
➜ aptos init                            
Configuring for profile default
Choose network from [devnet, testnet, mainnet, local, custom | defaults to devnet]
testnet
Enter your private key as a hex literal (0x...) [Current: None | No input: Generate new key (or keep one if present)]

No key given, generating key...
Account 0xe6eba0c086998fbd5ad141e4b30942e38bc77e2d5696bf6b1786f7a7722415c8 doesn't exist, creating it and funding it with 100000000 Octas
Account 0xe6eba0c086998fbd5ad141e4b30942e38bc77e2d5696bf6b1786f7a7722415c8 funded successfully

---
Aptos CLI is now set up for account 0xe6eba0c086998fbd5ad141e4b30942e38bc77e2d5696bf6b1786f7a7722415c8 as profile default!
 See the account here: https://explorer.aptoslabs.com/account/0xe6eba0c086998fbd5ad141e4b30942e38bc77e2d5696bf6b1786f7a7722415c8?network=testnet
 Run `aptos --help` for more information about commands
{
  "Result": "Success"
}

第二步:项目目录结构

tree . -L 6 -I 'build'

.
├── Move.toml
├── scripts
├── sources
│   └── nft.move
└── tests

4 directories, 2 files

第三步:代码实现

Move.toml 文件

[package]
name = "AptosNFTFactory"
version = "1.0.0"
authors = []

[addresses]
contract = "_"
[dev-addresses]

[dependencies.AptosFramework]
git = "https://github.com/aptos-labs/aptos-core.git"
rev = "mainnet"
subdir = "aptos-move/framework/aptos-framework"

# https://github.com/aptos-labs/aptos-core/blob/main/aptos-move/framework/aptos-token-objects/Move.toml
[dependencies.AptosTokenObjects]
git = "https://github.com/aptos-labs/aptos-core.git"
rev = "mainnet"
subdir = "aptos-move/framework/aptos-token-objects"

[dev-dependencies]

nft.move 文件

module contract::nft {
    use aptos_token_objects::collection;
    use std::option::Self;
    use std::string;
    use aptos_token_objects::token;

    public entry fun create_collection(creator: &signer) {
        let max_supply = 1000;
        let royalty = option::none();

        // Maximum supply cannot be changed after collection creation
        collection::create_fixed_collection(
            creator,
            string::utf8(b"My Collection Description"),
            max_supply,
            string::utf8(b"Qiao Collection"),
            royalty,
            string::utf8(b"ipfs://Qma8NPQhCWjZZdi42e9ZmYjSPb76sgknCrztnCBXJHJczq/2.png")
        );
    }

    public entry fun mint_token(creator: &signer) {
        let royalty = option::none();
        token::create(
            creator,
            string::utf8(b"Qiao Collection"),
            string::utf8(b"My NFT Description"),
            string::utf8(b"QiaoToken"),
            royalty,
            string::utf8(b"ipfs://Qma8NPQhCWjZZdi42e9ZmYjSPb76sgknCrztnCBXJHJczq/3.png")
        );
    }
}

第四步:compile

hello_aptos/AptosNFTFactory on  main [?] via 🅒 base took 1m 2.3s 
➜ aptos move compile --named-addresses contract=default --skip-fetch-latest-git-deps 
Compiling, may take a little while to download git dependencies...
INCLUDING DEPENDENCY AptosFramework
INCLUDING DEPENDENCY AptosStdlib
INCLUDING DEPENDENCY AptosTokenObjects
INCLUDING DEPENDENCY MoveStdlib
BUILDING AptosNFTFactory
warning[W09001]: unused alias
  ┌─ /Users/qiaopengjun/Code/Aptos/hello_aptos/AptosNFTFactory/sources/nft.move:3:29
  │
3 │     use std::option::{Self, Option};
  │                             ^^^^^^ Unused 'use' of alias 'Option'. Consider removing it

warning: unused alias
  ┌─ /Users/qiaopengjun/Code/Aptos/hello_aptos/AptosNFTFactory/sources/nft.move:3:29
  │
3 │     use std::option::{Self, Option};
  │                             ^^^^^^ Unused 'use' of alias 'Option'. Consider removing it

{
  "Result": [
    "e6eba0c086998fbd5ad141e4b30942e38bc77e2d5696bf6b1786f7a7722415c8::nft"
  ]
}

第五步:部署合约

hello_aptos/AptosNFTFactory on  main [?] via 🅒 base took 4.3s 
➜ aptos move deploy-object --address-name contract                                   
Compiling, may take a little while to download git dependencies...
UPDATING GIT DEPENDENCY https://github.com/aptos-labs/aptos-core.git
UPDATING GIT DEPENDENCY https://github.com/aptos-labs/aptos-core.git
INCLUDING DEPENDENCY AptosFramework
INCLUDING DEPENDENCY AptosStdlib
INCLUDING DEPENDENCY AptosTokenObjects
INCLUDING DEPENDENCY MoveStdlib
BUILDING AptosNFTFactory
Do you want to deploy this package at object address 0x05b86a98c7976f97000b08c1df62ddd3948128d64acf50a7fa13d78dfc67181b [yes/no] >
yes
package size 1708 bytes
Do you want to submit a transaction for a range of [212400 - 318600] Octas at a gas unit price of 100 Octas? [yes/no] >
yes
Transaction submitted: https://explorer.aptoslabs.com/txn/0xb6f8785228763792dd36280eaaf619e84e3c81bbc80f1a40f3ddfcfe0ba05333?network=testnet
Code was successfully deployed to object address {}. 0x05b86a98c7976f97000b08c1df62ddd3948128d64acf50a7fa13d78dfc67181b
{
  "Result": "Success"
}

查看 Transaction

https://explorer.aptoslabs.com/txn/0xb6f8785228763792dd36280eaaf619e84e3c81bbc80f1a40f3ddfcfe0ba05333?network=testnet

image-20240928151233826.png

第六步:查看合约

https://explorer.aptoslabs.com/object/0x05b86a98c7976f97000b08c1df62ddd3948128d64acf50a7fa13d78dfc67181b/modules/code/nft?network=testnet

image-20240928151223725.png

第七步:调用create_collection 方法

https://explorer.aptoslabs.com/object/0x05b86a98c7976f97000b08c1df62ddd3948128d64acf50a7fa13d78dfc67181b/modules/run/nft/create_collection?network=testnet

image-20240928151330221.png

查看 Transaction

https://explorer.aptoslabs.com/txn/0x594a63821f027b4b4def907b40f3bb3c7f55cb0dfabe2b5ed13c0c1ea7152c10?network=testnet

image-20240928151355236.png

第八步:调用mint_token 方法

https://explorer.aptoslabs.com/object/0x05b86a98c7976f97000b08c1df62ddd3948128d64acf50a7fa13d78dfc67181b/modules/run/nft/mint_token?network=test...

剩余50%的内容订阅专栏后可查看

点赞 1
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论