Search by name, SuiNS, address, digest, object ID, coin type or checkpoint.

API

nft

Module0xbd73…aa45
Move path
0xbd73…aa45::nft
Functions
98 public, 0 entry
Structs
7
Friend modules
None
nft

Bytecode377 lines

The on-chain disassembly. Offsets are bytecode positions within each function.

// Move bytecode v6
module bd7371ec80196917fb4d8fea39ef53b80e13d54ce8edbdfad3f9bfbee931aa45.nft {
use 0000000000000000000000000000000000000000000000000000000000000001::string;
use 0000000000000000000000000000000000000000000000000000000000000001::u64;
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
use 0000000000000000000000000000000000000000000000000000000000000002::clock;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::display;
use 0000000000000000000000000000000000000000000000000000000000000002::ecdsa_k1;
use 0000000000000000000000000000000000000000000000000000000000000002::event;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::package;
use 0000000000000000000000000000000000000000000000000000000000000002::sui;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
 
struct TokenData has key {
id: UID,
current_supply: u64,
total_supply: u64
}
 
struct AdminCap has key {
id: UID
}
 
struct PubKey has store, key {
id: UID,
walletAddress: address,
pubkey_bytes: vector<u8>,
pubkey_set: bool
}
 
struct NFT has drop {
dummy_field: bool
}
 
struct TalentumNFT has store, key {
id: UID,
name: String,
description: String,
url: String
}
 
struct NFTMinted has copy, drop {
object_id: ID,
creator: address,
name: String,
url: String,
price: u64
}
 
struct SetKey has copy, drop {
name: vector<u8>
}
 
init(Arg0: NFT, Arg1: &mut TxContext) {
L2: loc0: Display<TalentumNFT>
L3: loc1: vector<String>
L4: loc2: Publisher
L5: loc3: vector<String>
B0:
0CopyLoc[1](Arg1: &mut TxContext)
1Call object::new(&mut TxContext): UID
2LdU64(0)
3LdConst[6](u64: 0)
4Pack[0](TokenData)
5Call transfer::share_object<TokenData>(TokenData)
6CopyLoc[1](Arg1: &mut TxContext)
7Call object::new(&mut TxContext): UID
8Pack[1](AdminCap)
9LdConst[4](address: 0x55..)
10Call transfer::transfer<AdminCap>(AdminCap, address)
11LdConst[7](vector<u8>: "nam..)
12Call string::utf8(vector<u8>): String
13LdConst[8](vector<u8>: "des..)
14Call string::utf8(vector<u8>): String
15LdConst[9](vector<u8>: "ima..)
16Call string::utf8(vector<u8>): String
17LdConst[10](vector<u8>: "pro..)
18Call string::utf8(vector<u8>): String
19LdConst[11](vector<u8>: "cre..)
20Call string::utf8(vector<u8>): String
21VecPack(17, 5)
22StLoc[3](loc1: vector<String>)
23LdConst[12](vector<u8>: "{na..)
24Call string::utf8(vector<u8>): String
25LdConst[13](vector<u8>: "{de..)
26Call string::utf8(vector<u8>): String
27LdConst[14](vector<u8>: "{ur..)
28Call string::utf8(vector<u8>): String
29LdConst[15](vector<u8>: "htt..)
30Call string::utf8(vector<u8>): String
31LdConst[16](vector<u8>: "Tal..)
32Call string::utf8(vector<u8>): String
33VecPack(17, 5)
34StLoc[5](loc3: vector<String>)
35MoveLoc[0](Arg0: NFT)
36CopyLoc[1](Arg1: &mut TxContext)
37Call package::claim<NFT>(NFT, &mut TxContext): Publisher
38StLoc[4](loc2: Publisher)
39ImmBorrowLoc[4](loc2: Publisher)
40MoveLoc[3](loc1: vector<String>)
41MoveLoc[5](loc3: vector<String>)
42CopyLoc[1](Arg1: &mut TxContext)
43Call display::new_with_fields<TalentumNFT>(&Publisher, vector<String>, vector<String>, &mut TxContext): Display<TalentumNFT>
44StLoc[2](loc0: Display<TalentumNFT>)
45MutBorrowLoc[2](loc0: Display<TalentumNFT>)
46Call display::update_version<TalentumNFT>(&mut Display<TalentumNFT>)
47MoveLoc[4](loc2: Publisher)
48CopyLoc[1](Arg1: &mut TxContext)
49FreezeRef
50Call tx_context::sender(&TxContext): address
51Call transfer::public_transfer<Publisher>(Publisher, address)
52MoveLoc[2](loc0: Display<TalentumNFT>)
53CopyLoc[1](Arg1: &mut TxContext)
54FreezeRef
55Call tx_context::sender(&TxContext): address
56Call transfer::public_transfer<Display<TalentumNFT>>(Display<TalentumNFT>, address)
57CopyLoc[1](Arg1: &mut TxContext)
58Call object::new(&mut TxContext): UID
59MoveLoc[1](Arg1: &mut TxContext)
60FreezeRef
61Call tx_context::sender(&TxContext): address
62LdConst[17](vector<u8>: 2102..)
63LdTrue
64Pack[2](PubKey)
65Call transfer::share_object<PubKey>(PubKey)
66Ret
}
 
public name(Arg0: &TalentumNFT): &String {
B0:
0MoveLoc[0](Arg0: &TalentumNFT)
1ImmBorrowField[0](TalentumNFT.name: String)
2Ret
}
 
public description(Arg0: &TalentumNFT): &String {
B0:
0MoveLoc[0](Arg0: &TalentumNFT)
1ImmBorrowField[1](TalentumNFT.description: String)
2Ret
}
 
public url(Arg0: &TalentumNFT): &String {
B0:
0MoveLoc[0](Arg0: &TalentumNFT)
1ImmBorrowField[2](TalentumNFT.url: String)
2Ret
}
 
public setKey(Arg0: &AdminCap, Arg1: &mut PubKey, Arg2: vector<u8>) {
B0:
0CopyLoc[2](Arg2: vector<u8>)
1CopyLoc[1](Arg1: &mut PubKey)
2MutBorrowField[3](PubKey.pubkey_bytes: vector<u8>)
3WriteRef
4LdTrue
5MoveLoc[1](Arg1: &mut PubKey)
6MutBorrowField[4](PubKey.pubkey_set: bool)
7WriteRef
8MoveLoc[2](Arg2: vector<u8>)
9Pack[6](SetKey)
10Call event::emit<SetKey>(SetKey)
11Ret
}
 
public mint(Arg0: &PubKey, Arg1: vector<u8>, Arg2: vector<u8>, Arg3: u8, Arg4: u64, Arg5: &Clock, Arg6: vector<u8>, Arg7: vector<u8>, Arg8: vector<u8>, Arg9: Coin<SUI>, Arg10: &mut TokenData, Arg11: &mut TxContext) {
L12: loc0: address
L13: loc1: vector<u8>
L14: loc2: TalentumNFT
L15: loc3: u64
B0:
0CopyLoc[0](Arg0: &PubKey)
1ImmBorrowField[4](PubKey.pubkey_set: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(15)
B2:
5MoveLoc[10](Arg10: &mut TokenData)
6Pop
7MoveLoc[11](Arg11: &mut TxContext)
8Pop
9MoveLoc[0](Arg0: &PubKey)
10Pop
11MoveLoc[5](Arg5: &Clock)
12Pop
13LdConst[0](u64: 2)
14Abort
B3:
15CopyLoc[4](Arg4: u64)
16MoveLoc[5](Arg5: &Clock)
17Call clock::timestamp_ms(&Clock): u64
18LdU64(1000)
19Div
20Gt
21BrFalse(23)
B4:
22Branch(31)
B5:
23MoveLoc[10](Arg10: &mut TokenData)
24Pop
25MoveLoc[11](Arg11: &mut TxContext)
26Pop
27MoveLoc[0](Arg0: &PubKey)
28Pop
29LdConst[2](u64: 500)
30Abort
B6:
31ImmBorrowLoc[9](Arg9: Coin<SUI>)
32Call coin::value<SUI>(&Coin<SUI>): u64
33StLoc[15](loc3: u64)
34CopyLoc[6](Arg6: vector<u8>)
35StLoc[13](loc1: vector<u8>)
36MutBorrowLoc[13](loc1: vector<u8>)
37CopyLoc[7](Arg7: vector<u8>)
38Call vector::append<u8>(&mut vector<u8>, vector<u8>)
39MutBorrowLoc[13](loc1: vector<u8>)
40CopyLoc[8](Arg8: vector<u8>)
41Call vector::append<u8>(&mut vector<u8>, vector<u8>)
42MutBorrowLoc[13](loc1: vector<u8>)
43MoveLoc[4](Arg4: u64)
44Call u64::to_string(u64): String
45Call string::into_bytes(String): vector<u8>
46Call vector::append<u8>(&mut vector<u8>, vector<u8>)
47MutBorrowLoc[13](loc1: vector<u8>)
48CopyLoc[15](loc3: u64)
49Call u64::to_string(u64): String
50Call string::into_bytes(String): vector<u8>
51Call vector::append<u8>(&mut vector<u8>, vector<u8>)
52ImmBorrowLoc[2](Arg2: vector<u8>)
53MoveLoc[0](Arg0: &PubKey)
54ImmBorrowField[3](PubKey.pubkey_bytes: vector<u8>)
55ImmBorrowLoc[13](loc1: vector<u8>)
56MoveLoc[3](Arg3: u8)
57Call ecdsa_k1::secp256k1_verify(&vector<u8>, &vector<u8>, &vector<u8>, u8): bool
58BrFalse(60)
B7:
59Branch(66)
B8:
60MoveLoc[10](Arg10: &mut TokenData)
61Pop
62MoveLoc[11](Arg11: &mut TxContext)
63Pop
64LdConst[1](u64: 3)
65Abort
B9:
66CopyLoc[11](Arg11: &mut TxContext)
67FreezeRef
68Call tx_context::sender(&TxContext): address
69StLoc[12](loc0: address)
70CopyLoc[10](Arg10: &mut TokenData)
71ImmBorrowField[5](TokenData.total_supply: u64)
72ReadRef
73LdU64(0)
74Gt
75BrFalse(91)
B10:
76CopyLoc[10](Arg10: &mut TokenData)
77ImmBorrowField[5](TokenData.total_supply: u64)
78ReadRef
79CopyLoc[10](Arg10: &mut TokenData)
80ImmBorrowField[6](TokenData.current_supply: u64)
81ReadRef
82Gt
83BrFalse(85)
B11:
84Branch(91)
B12:
85MoveLoc[10](Arg10: &mut TokenData)
86Pop
87MoveLoc[11](Arg11: &mut TxContext)
88Pop
89LdConst[3](u64: 501)
90Abort
B13:
91CopyLoc[10](Arg10: &mut TokenData)
92ImmBorrowField[6](TokenData.current_supply: u64)
93ReadRef
94LdU64(1)
95Add
96MoveLoc[10](Arg10: &mut TokenData)
97MutBorrowField[6](TokenData.current_supply: u64)
98WriteRef
99MoveLoc[9](Arg9: Coin<SUI>)
100LdConst[4](address: 0x55..)
101Call transfer::public_transfer<Coin<SUI>>(Coin<SUI>, address)
102MoveLoc[11](Arg11: &mut TxContext)
103Call object::new(&mut TxContext): UID
104MoveLoc[6](Arg6: vector<u8>)
105Call string::utf8(vector<u8>): String
106MoveLoc[7](Arg7: vector<u8>)
107Call string::utf8(vector<u8>): String
108MoveLoc[8](Arg8: vector<u8>)
109Call string::utf8(vector<u8>): String
110Pack[4](TalentumNFT)
111StLoc[14](loc2: TalentumNFT)
112ImmBorrowLoc[14](loc2: TalentumNFT)
113Call object::id<TalentumNFT>(&TalentumNFT): ID
114CopyLoc[12](loc0: address)
115ImmBorrowLoc[14](loc2: TalentumNFT)
116ImmBorrowField[0](TalentumNFT.name: String)
117ReadRef
118ImmBorrowLoc[14](loc2: TalentumNFT)
119ImmBorrowField[2](TalentumNFT.url: String)
120ReadRef
121MoveLoc[15](loc3: u64)
122Pack[5](NFTMinted)
123Call event::emit<NFTMinted>(NFTMinted)
124MoveLoc[14](loc2: TalentumNFT)
125MoveLoc[12](loc0: address)
126Call transfer::public_transfer<TalentumNFT>(TalentumNFT, address)
127Ret
}
 
public transfer(Arg0: TalentumNFT, Arg1: address, Arg2: &mut TxContext) {
B0:
0LdConst[5](bool: true)
1Not
2BrFalse(4)
B1:
3Branch(6)
B2:
4LdU64(1)
5Abort
B3:
6MoveLoc[0](Arg0: TalentumNFT)
7MoveLoc[1](Arg1: address)
8Call transfer::public_transfer<TalentumNFT>(TalentumNFT, address)
9Ret
}
 
public update_description(Arg0: &mut TalentumNFT, Arg1: vector<u8>, Arg2: &mut TxContext) {
B0:
0MoveLoc[1](Arg1: vector<u8>)
1Call string::utf8(vector<u8>): String
2MoveLoc[0](Arg0: &mut TalentumNFT)
3MutBorrowField[1](TalentumNFT.description: String)
4WriteRef
5Ret
}
 
public burn(Arg0: TalentumNFT, Arg1: &mut TxContext) {
B0:
0MoveLoc[0](Arg0: TalentumNFT)
1Unpack[4](TalentumNFT)
2Pop
3Pop
4Pop
5Call object::delete(UID)
6Ret
}
 
Constants [
0 => u64: 2
1 => u64: 3
2 => u64: 500
3 => u64: 501
4 => address: 0x552c4e45ef071c3c14e75a5247a9c5dd4e7430e3783e217b663aab1d926d8fa5
5 => bool: true
6 => u64: 0
7 => vector<u8>: "name" // interpreted as UTF8 string
8 => vector<u8>: "description" // interpreted as UTF8 string
9 => vector<u8>: "image_url" // interpreted as UTF8 string
10 => vector<u8>: "project_url" // interpreted as UTF8 string
11 => vector<u8>: "creator" // interpreted as UTF8 string
12 => vector<u8>: "{name}" // interpreted as UTF8 string
13 => vector<u8>: "{description}" // interpreted as UTF8 string
14 => vector<u8>: "{url}" // interpreted as UTF8 string
15 => vector<u8>: "https://talentum.id" // interpreted as UTF8 string
16 => vector<u8>: "Talentum.id" // interpreted as UTF8 string
17 => vector<u8>: 2102df497ab7f7548c41e20eb81ea4bbcb0c0e2aad2635ba01b2cd8102bd408919bf
]
}