Account
0.995993 APT
Balance
Select function
Code
The source code is plain text uploaded by the deployer, which can be different from the actual bytecode.
1module contract::nft {
2 use aptos_token_objects::collection;
3 use std::option::Self;
4 use std::string;
5 use aptos_token_objects::token;
6 use aptos_framework::object::{Self, Object};
7
8 #[resource_group_member(group = aptos_framework::object::ObjectGroup)]
9 /// The ambassador token
10 struct NFTToken has key {
11 /// Used to mutate the token uri
12 mutator_ref: token::MutatorRef,
13 /// Used to burn.
14 burn_ref: token::BurnRef
15 }
16
17 public entry fun create_collection(creator: &signer) {
18 let max_supply = 1000;
19 let royalty = option::none();
20
21 // Maximum supply cannot be changed after collection creation
22 collection::create_fixed_collection(
23 creator,
24 string::utf8(b"My Collection Description"),
25 max_supply,
26 string::utf8(b"Qiao Collection"),
27 royalty,
28 string::utf8(
29 b"https://learnblockchain.cn/image/avatar/18602_middle.jpg?GjIyGZqa"
30 )
31 );
32 }
33
34 public entry fun mint_token(creator: &signer) {
35 let royalty = option::none();
36 let token_constructor_ref =
37 token::create(
38 creator,
39 string::utf8(b"Qiao Collection"),
40 string::utf8(b"My NFT Description"),
41 string::utf8(b"QiaoToken"),
42 royalty,
43 string::utf8(
44 b"https://img.learnblockchain.cn/space/banner/18602/h7ljMtGq668b998356db8.jpg"
45 )
46 );
47
48 let object_signer = object::generate_signer(&token_constructor_ref);
49
50 let burn_ref = token::generate_burn_ref(&token_constructor_ref);
51
52 let mutator_ref = token::generate_mutator_ref(&token_constructor_ref);
53
54 let nft_token = NFTToken { mutator_ref, burn_ref };
55 move_to(&object_signer, nft_token);
56 }
57
58 public entry fun burn(token: Object<NFTToken>) acquires NFTToken {
59 let ambassador_token = move_from<NFTToken>(object::object_address(&token));
60 let NFTToken { mutator_ref: _, burn_ref } = ambassador_token;
61
62 token::burn(burn_ref);
63 }
64}
65