Package
0x5c13cb3e849150de1b33c603c587135e6f63f092da0de08b7fc23041b5ea6a8a
- version
- 1
- digest
- F6XtFXLZNiSiD8vkQGiRmnFWrFBKFF5PX5yzsNsSp13W
- previous transaction
- DcDumrL2KzwE4Rmb4FizRxhzB3JGK6XAi8DnerYdJtbr
Modules (1)
directory
// Move bytecode v6
module 5c13cb3e849150de1b33c603c587135e6f63f092da0de08b7fc23041b5ea6a8a.directory {
use 0000000000000000000000000000000000000000000000000000000000000002::clock;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::event;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::table;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
use 0000000000000000000000000000000000000000000000000000000000000002::url;
use 0000000000000000000000000000000000000000000000000000000000000001::ascii;
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000001::string;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
struct Directory has key {
id: UID,
listings: Table<TypeName, Listing>,
count: u64
}
struct Listing has copy, drop, store {
creator: address,
website: String,
links: vector<String>,
tags: vector<String>,
listed_ms: u64,
updated_ms: u64
}
struct TokenListed has copy, drop {
coin_type: TypeName,
creator: address,
symbol: String,
name: String,
description: String,
decimals: u8,
icon_url: Option<String>,
website: String,
links: vector<String>,
tags: vector<String>,
listed_ms: u64
}
struct ListingUpdated has copy, drop {
coin_type: TypeName,
website: String,
links: vector<String>,
tags: vector<String>,
updated_ms: u64
}
init(Arg0: &mut TxContext) {
B0:
0: CopyLoc[0](Arg0: &mut TxContext)
1: Call object::new(&mut TxContext): UID
2: MoveLoc[0](Arg0: &mut TxContext)
3: Call table::new<TypeName, Listing>(&mut TxContext): Table<TypeName, Listing>
4: LdU64(0)
5: Pack[0](Directory)
6: Call transfer::share_object<Directory>(Directory)
7: Ret
}
public list<Ty0>(Arg0: &mut Directory, Arg1: &CoinMetadata<Ty0>, Arg2: String, Arg3: vector<String>, Arg4: vector<String>, Arg5: &Clock, Arg6: &TxContext) {
L7: loc0: Option<String>
L8: loc1: TypeName
L9: loc2: address
L10: loc3: Option<String>
L11: loc4: u64
L12: loc5: Option<Url>
L13: loc6: Url
B0:
0: Call type_name::get<Ty0>(): TypeName
1: StLoc[8](loc1: TypeName)
2: CopyLoc[0](Arg0: &mut Directory)
3: ImmBorrowField[0](Directory.listings: Table<TypeName, Listing>)
4: CopyLoc[8](loc1: TypeName)
5: Call table::contains<TypeName, Listing>(&Table<TypeName, Listing>, TypeName): bool
6: Not
7: BrFalse(9)
B1:
8: Branch(19)
B2:
9: MoveLoc[1](Arg1: &CoinMetadata<Ty0>)
10: Pop
11: MoveLoc[0](Arg0: &mut Directory)
12: Pop
13: MoveLoc[6](Arg6: &TxContext)
14: Pop
15: MoveLoc[5](Arg5: &Clock)
16: Pop
17: LdConst[0](u64: 0)
18: Abort
B3:
19: ImmBorrowLoc[2](Arg2: String)
20: ImmBorrowLoc[3](Arg3: vector<String>)
21: ImmBorrowLoc[4](Arg4: vector<String>)
22: Call check_strings(&String, &vector<String>, &vector<String>)
23: MoveLoc[5](Arg5: &Clock)
24: Call clock::timestamp_ms(&Clock): u64
25: StLoc[11](loc4: u64)
26: MoveLoc[6](Arg6: &TxContext)
27: Call tx_context::sender(&TxContext): address
28: StLoc[9](loc2: address)
29: CopyLoc[0](Arg0: &mut Directory)
30: MutBorrowField[0](Directory.listings: Table<TypeName, Listing>)
31: CopyLoc[8](loc1: TypeName)
32: CopyLoc[9](loc2: address)
33: CopyLoc[2](Arg2: String)
34: CopyLoc[3](Arg3: vector<String>)
35: CopyLoc[4](Arg4: vector<String>)
36: CopyLoc[11](loc4: u64)
37: CopyLoc[11](loc4: u64)
38: Pack[1](Listing)
39: Call table::add<TypeName, Listing>(&mut Table<TypeName, Listing>, TypeName, Listing)
40: CopyLoc[0](Arg0: &mut Directory)
41: ImmBorrowField[1](Directory.count: u64)
42: ReadRef
43: LdU64(1)
44: Add
45: MoveLoc[0](Arg0: &mut Directory)
46: MutBorrowField[1](Directory.count: u64)
47: WriteRef
48: CopyLoc[1](Arg1: &CoinMetadata<Ty0>)
49: Call coin::get_icon_url<Ty0>(&CoinMetadata<Ty0>): Option<Url>
50: StLoc[12](loc5: Option<Url>)
51: ImmBorrowLoc[12](loc5: Option<Url>)
52: Call option::is_some<Url>(&Option<Url>): bool
53: BrFalse(63)
B4:
54: MoveLoc[12](loc5: Option<Url>)
55: Call option::destroy_some<Url>(Option<Url>): Url
56: StLoc[13](loc6: Url)
57: ImmBorrowLoc[13](loc6: Url)
58: Call url::inner_url(&Url): String
59: Call string::from_ascii(String): String
60: Call option::some<String>(String): Option<String>
61: StLoc[7](loc0: Option<String>)
62: Branch(67)
B5:
63: MoveLoc[12](loc5: Option<Url>)
64: Call option::destroy_none<Url>(Option<Url>)
65: Call option::none<String>(): Option<String>
66: StLoc[7](loc0: Option<String>)
B6:
67: MoveLoc[7](loc0: Option<String>)
68: StLoc[10](loc3: Option<String>)
69: MoveLoc[8](loc1: TypeName)
70: MoveLoc[9](loc2: address)
71: CopyLoc[1](Arg1: &CoinMetadata<Ty0>)
72: Call coin::get_symbol<Ty0>(&CoinMetadata<Ty0>): String
73: CopyLoc[1](Arg1: &CoinMetadata<Ty0>)
74: Call coin::get_name<Ty0>(&CoinMetadata<Ty0>): String
75: CopyLoc[1](Arg1: &CoinMetadata<Ty0>)
76: Call coin::get_description<Ty0>(&CoinMetadata<Ty0>): String
77: MoveLoc[1](Arg1: &CoinMetadata<Ty0>)
78: Call coin::get_decimals<Ty0>(&CoinMetadata<Ty0>): u8
79: MoveLoc[10](loc3: Option<String>)
80: MoveLoc[2](Arg2: String)
81: MoveLoc[3](Arg3: vector<String>)
82: MoveLoc[4](Arg4: vector<String>)
83: MoveLoc[11](loc4: u64)
84: Pack[2](TokenListed)
85: Call event::emit<TokenListed>(TokenListed)
86: Ret
}
public update<Ty0>(Arg0: &mut Directory, Arg1: &TreasuryCap<Ty0>, Arg2: String, Arg3: vector<String>, Arg4: vector<String>, Arg5: &Clock) {
L6: loc0: TypeName
L7: loc1: &mut Listing
L8: loc2: u64
B0:
0: Call type_name::get<Ty0>(): TypeName
1: StLoc[6](loc0: TypeName)
2: CopyLoc[0](Arg0: &mut Directory)
3: ImmBorrowField[0](Directory.listings: Table<TypeName, Listing>)
4: CopyLoc[6](loc0: TypeName)
5: Call table::contains<TypeName, Listing>(&Table<TypeName, Listing>, TypeName): bool
6: BrFalse(8)
B1:
7: Branch(14)
B2:
8: MoveLoc[0](Arg0: &mut Directory)
9: Pop
10: MoveLoc[5](Arg5: &Clock)
11: Pop
12: LdConst[1](u64: 1)
13: Abort
B3:
14: ImmBorrowLoc[2](Arg2: String)
15: ImmBorrowLoc[3](Arg3: vector<String>)
16: ImmBorrowLoc[4](Arg4: vector<String>)
17: Call check_strings(&String, &vector<String>, &vector<String>)
18: MoveLoc[5](Arg5: &Clock)
19: Call clock::timestamp_ms(&Clock): u64
20: StLoc[8](loc2: u64)
21: MoveLoc[0](Arg0: &mut Directory)
22: MutBorrowField[0](Directory.listings: Table<TypeName, Listing>)
23: CopyLoc[6](loc0: TypeName)
24: Call table::borrow_mut<TypeName, Listing>(&mut Table<TypeName, Listing>, TypeName): &mut Listing
25: StLoc[7](loc1: &mut Listing)
26: CopyLoc[2](Arg2: String)
27: CopyLoc[7](loc1: &mut Listing)
28: MutBorrowField[2](Listing.website: String)
29: WriteRef
30: CopyLoc[3](Arg3: vector<String>)
31: CopyLoc[7](loc1: &mut Listing)
32: MutBorrowField[3](Listing.links: vector<String>)
33: WriteRef
34: CopyLoc[4](Arg4: vector<String>)
35: CopyLoc[7](loc1: &mut Listing)
36: MutBorrowField[4](Listing.tags: vector<String>)
37: WriteRef
38: CopyLoc[8](loc2: u64)
39: MoveLoc[7](loc1: &mut Listing)
40: MutBorrowField[5](Listing.updated_ms: u64)
41: WriteRef
42: MoveLoc[6](loc0: TypeName)
43: MoveLoc[2](Arg2: String)
44: MoveLoc[3](Arg3: vector<String>)
45: MoveLoc[4](Arg4: vector<String>)
46: MoveLoc[8](loc2: u64)
47: Pack[3](ListingUpdated)
48: Call event::emit<ListingUpdated>(ListingUpdated)
49: Ret
}
public is_listed<Ty0>(Arg0: &Directory): bool {
B0:
0: MoveLoc[0](Arg0: &Directory)
1: ImmBorrowField[0](Directory.listings: Table<TypeName, Listing>)
2: Call type_name::get<Ty0>(): TypeName
3: Call table::contains<TypeName, Listing>(&Table<TypeName, Listing>, TypeName): bool
4: Ret
}
public listing<Ty0>(Arg0: &Directory): &Listing {
B0:
0: MoveLoc[0](Arg0: &Directory)
1: ImmBorrowField[0](Directory.listings: Table<TypeName, Listing>)
2: Call type_name::get<Ty0>(): TypeName
3: Call table::borrow<TypeName, Listing>(&Table<TypeName, Listing>, TypeName): &Listing
4: Ret
}
public count(Arg0: &Directory): u64 {
B0:
0: MoveLoc[0](Arg0: &Directory)
1: ImmBorrowField[1](Directory.count: u64)
2: ReadRef
3: Ret
}
public creator(Arg0: &Listing): address {
B0:
0: MoveLoc[0](Arg0: &Listing)
1: ImmBorrowField[6](Listing.creator: address)
2: ReadRef
3: Ret
}
public website(Arg0: &Listing): &String {
B0:
0: MoveLoc[0](Arg0: &Listing)
1: ImmBorrowField[2](Listing.website: String)
2: Ret
}
public links(Arg0: &Listing): &vector<String> {
B0:
0: MoveLoc[0](Arg0: &Listing)
1: ImmBorrowField[3](Listing.links: vector<String>)
2: Ret
}
public tags(Arg0: &Listing): &vector<String> {
B0:
0: MoveLoc[0](Arg0: &Listing)
1: ImmBorrowField[4](Listing.tags: vector<String>)
2: Ret
}
public listed_ms(Arg0: &Listing): u64 {
B0:
0: MoveLoc[0](Arg0: &Listing)
1: ImmBorrowField[7](Listing.listed_ms: u64)
2: ReadRef
3: Ret
}
check_strings(Arg0: &String, Arg1: &vector<String>, Arg2: &vector<String>) {
L3: loc0: u64
L4: loc1: u64
L5: loc2: bool
L6: loc3: u64
L7: loc4: u64
L8: loc5: u64
L9: loc6: u64
L10: loc7: u64
L11: loc8: u64
L12: loc9: &vector<String>
L13: loc10: &vector<String>
B0:
0: MoveLoc[0](Arg0: &String)
1: Call string::length(&String): u64
2: LdConst[5](u64: 256)
3: Le
4: BrFalse(6)
B1:
5: Branch(12)
B2:
6: MoveLoc[2](Arg2: &vector<String>)
7: Pop
8: MoveLoc[1](Arg1: &vector<String>)
9: Pop
10: LdConst[3](u64: 3)
11: Abort
B3:
12: CopyLoc[1](Arg1: &vector<String>)
13: VecLen(30)
14: LdConst[4](u64: 8)
15: Le
16: BrFalse(23)
B4:
17: CopyLoc[2](Arg2: &vector<String>)
18: VecLen(30)
19: LdConst[4](u64: 8)
20: Le
21: StLoc[5](loc2: bool)
22: Branch(25)
B5:
23: LdFalse
24: StLoc[5](loc2: bool)
B6:
25: MoveLoc[5](loc2: bool)
26: BrFalse(28)
B7:
27: Branch(34)
B8:
28: MoveLoc[2](Arg2: &vector<String>)
29: Pop
30: MoveLoc[1](Arg1: &vector<String>)
31: Pop
32: LdConst[2](u64: 2)
33: Abort
B9:
34: MoveLoc[1](Arg1: &vector<String>)
35: StLoc[12](loc9: &vector<String>)
36: CopyLoc[12](loc9: &vector<String>)
37: VecLen(30)
38: StLoc[4](loc1: u64)
39: LdU64(0)
40: StLoc[8](loc5: u64)
41: MoveLoc[4](loc1: u64)
42: StLoc[11](loc8: u64)
B10:
43: CopyLoc[8](loc5: u64)
44: CopyLoc[11](loc8: u64)
45: Lt
46: BrFalse(68)
B11:
47: CopyLoc[8](loc5: u64)
48: StLoc[9](loc6: u64)
49: CopyLoc[12](loc9: &vector<String>)
50: MoveLoc[9](loc6: u64)
51: VecImmBorrow(30)
52: Call string::length(&String): u64
53: LdConst[5](u64: 256)
54: Le
55: BrFalse(57)
B12:
56: Branch(63)
B13:
57: MoveLoc[12](loc9: &vector<String>)
58: Pop
59: MoveLoc[2](Arg2: &vector<String>)
60: Pop
61: LdConst[3](u64: 3)
62: Abort
B14:
63: MoveLoc[8](loc5: u64)
64: LdU64(1)
65: Add
66: StLoc[8](loc5: u64)
67: Branch(43)
B15:
68: MoveLoc[12](loc9: &vector<String>)
69: Pop
70: MoveLoc[2](Arg2: &vector<String>)
71: StLoc[13](loc10: &vector<String>)
72: CopyLoc[13](loc10: &vector<String>)
73: VecLen(30)
74: StLoc[3](loc0: u64)
75: LdU64(0)
76: StLoc[6](loc3: u64)
77: MoveLoc[3](loc0: u64)
78: StLoc[10](loc7: u64)
B16:
79: CopyLoc[6](loc3: u64)
80: CopyLoc[10](loc7: u64)
81: Lt
82: BrFalse(102)
B17:
83: CopyLoc[6](loc3: u64)
84: StLoc[7](loc4: u64)
85: CopyLoc[13](loc10: &vector<String>)
86: MoveLoc[7](loc4: u64)
87: VecImmBorrow(30)
88: Call string::length(&String): u64
89: LdConst[5](u64: 256)
90: Le
91: BrFalse(93)
B18:
92: Branch(97)
B19:
93: MoveLoc[13](loc10: &vector<String>)
94: Pop
95: LdConst[3](u64: 3)
96: Abort
B20:
97: MoveLoc[6](loc3: u64)
98: LdU64(1)
99: Add
100: StLoc[6](loc3: u64)
101: Branch(79)
B21:
102: MoveLoc[13](loc10: &vector<String>)
103: Pop
104: Ret
}
Constants [
0 => u64: 0
1 => u64: 1
2 => u64: 2
3 => u64: 3
4 => u64: 8
5 => u64: 256
]
}
SafeCoin