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

API

collection

Module0x34a2…c82c
Move path
0xbc3d…e5f9::collection
Functions
1915 public, 2 entry
Structs
3
Friend modules
None
collection

Bytecode304 lines

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

// Move bytecode v6
module bc3df36be17f27ac98e3c839b2589db8475fa07b20657b08e8891e3aaf5ee5f9.collection {
use bc3df36be17f27ac98e3c839b2589db8475fa07b20657b08e8891e3aaf5ee5f9::mint_cap;
use 16c5f17f2d55584a6e6daa442ccf83b4530d10546a8e7dedda9ba324e012fc40::frozen_publisher;
use 16c5f17f2d55584a6e6daa442ccf83b4530d10546a8e7dedda9ba324e012fc40::witness;
use 859eb18bd5b5e8cc32deb6dfb1c39941008ab3c6e27f0b8ce2364be7102bb7cb::utils;
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000001::string;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
use 0000000000000000000000000000000000000000000000000000000000000002::display;
use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
use 0000000000000000000000000000000000000000000000000000000000000002::event;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::package;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
 
struct Witness has drop {
dummy_field: bool
}
 
struct Collection<phantom Ty0> has store, key {
id: UID,
version: u64
}
 
struct MintCollectionEvent has copy, drop {
collection_id: ID,
type_name: TypeName
}
 
public create<Ty0>(Arg0: Witness<Ty0>, Arg1: &mut TxContext): Collection<Ty0> {
B0:
0MoveLoc[1](Arg1: &mut TxContext)
1Call create_<Ty0>(&mut TxContext): Collection<Ty0>
2Ret
}
 
public create_from_otw<Ty0: drop, Ty1>(Arg0: &Ty0, Arg1: &mut TxContext): Collection<Ty1> {
B0:
0Call utils::assert_same_module<Ty0, Ty1>()
1MoveLoc[1](Arg1: &mut TxContext)
2Call create_<Ty1>(&mut TxContext): Collection<Ty1>
3Ret
}
 
public create_with_mint_cap<Ty0: drop, Ty1>(Arg0: &Ty0, Arg1: Option<u64>, Arg2: &mut TxContext): Collection<Ty1> * MintCap<Ty1> {
L3: loc0: Collection<Ty1>
L4: loc1: MintCap<Ty1>
B0:
0CopyLoc[0](Arg0: &Ty0)
1CopyLoc[2](Arg2: &mut TxContext)
2Call create_from_otw<Ty0, Ty1>(&Ty0, &mut TxContext): Collection<Ty1>
3StLoc[3](loc0: Collection<Ty1>)
4MoveLoc[0](Arg0: &Ty0)
5ImmBorrowLoc[3](loc0: Collection<Ty1>)
6Call object::id<Collection<Ty1>>(&Collection<Ty1>): ID
7MoveLoc[1](Arg1: Option<u64>)
8MoveLoc[2](Arg2: &mut TxContext)
9Call mint_cap::new<Ty0, Ty1>(&Ty0, ID, Option<u64>, &mut TxContext): MintCap<Ty1>
10StLoc[4](loc1: MintCap<Ty1>)
11MoveLoc[3](loc0: Collection<Ty1>)
12MoveLoc[4](loc1: MintCap<Ty1>)
13Ret
}
 
create_<Ty0>(Arg0: &mut TxContext): Collection<Ty0> {
L1: loc0: UID
B0:
0MoveLoc[0](Arg0: &mut TxContext)
1Call object::new(&mut TxContext): UID
2StLoc[1](loc0: UID)
3ImmBorrowLoc[1](loc0: UID)
4Call object::uid_to_inner(&UID): ID
5Call type_name::get<Ty0>(): TypeName
6Pack[2](MintCollectionEvent)
7Call event::emit<MintCollectionEvent>(MintCollectionEvent)
8MoveLoc[1](loc0: UID)
9LdConst[0](u64: 2)
10PackGeneric[0](Collection<Ty0>)
11Ret
}
 
public init_collection<Ty0>(Arg0: Witness<Ty0>, Arg1: &mut TxContext): ID {
L2: loc0: Collection<Ty0>
L3: loc1: ID
B0:
0MoveLoc[0](Arg0: Witness<Ty0>)
1MoveLoc[1](Arg1: &mut TxContext)
2Call create<Ty0>(Witness<Ty0>, &mut TxContext): Collection<Ty0>
3StLoc[2](loc0: Collection<Ty0>)
4ImmBorrowLoc[2](loc0: Collection<Ty0>)
5Call object::id<Collection<Ty0>>(&Collection<Ty0>): ID
6StLoc[3](loc1: ID)
7MoveLoc[2](loc0: Collection<Ty0>)
8Call transfer::public_share_object<Collection<Ty0>>(Collection<Ty0>)
9MoveLoc[3](loc1: ID)
10Ret
}
 
public borrow_uid<Ty0>(Arg0: &Collection<Ty0>): &UID {
B0:
0MoveLoc[0](Arg0: &Collection<Ty0>)
1ImmBorrowFieldGeneric[0](Collection.id: UID)
2Ret
}
 
public borrow_uid_mut<Ty0>(Arg0: Witness<Ty0>, Arg1: &mut Collection<Ty0>): &mut UID {
B0:
0CopyLoc[1](Arg1: &mut Collection<Ty0>)
1Call assert_version_and_upgrade<Ty0>(&mut Collection<Ty0>)
2MoveLoc[1](Arg1: &mut Collection<Ty0>)
3MutBorrowFieldGeneric[0](Collection.id: UID)
4Ret
}
 
public has_domain<Ty0, Ty1: store>(Arg0: &Collection<Ty0>): bool {
B0:
0MoveLoc[0](Arg0: &Collection<Ty0>)
1ImmBorrowFieldGeneric[0](Collection.id: UID)
2Call utils::marker<Ty1>(): Marker<Ty1>
3Call dynamic_field::exists_with_type<Marker<Ty1>, Ty1>(&UID, Marker<Ty1>): bool
4Ret
}
 
public borrow_domain<Ty0, Ty1: store>(Arg0: &Collection<Ty0>): &Ty1 {
B0:
0CopyLoc[0](Arg0: &Collection<Ty0>)
1Call assert_domain<Ty0, Ty1>(&Collection<Ty0>)
2MoveLoc[0](Arg0: &Collection<Ty0>)
3ImmBorrowFieldGeneric[0](Collection.id: UID)
4Call utils::marker<Ty1>(): Marker<Ty1>
5Call dynamic_field::borrow<Marker<Ty1>, Ty1>(&UID, Marker<Ty1>): &Ty1
6Ret
}
 
public borrow_domain_mut<Ty0, Ty1: store>(Arg0: Witness<Ty1>, Arg1: &mut Collection<Ty0>): &mut Ty1 {
B0:
0CopyLoc[1](Arg1: &mut Collection<Ty0>)
1Call assert_version_and_upgrade<Ty0>(&mut Collection<Ty0>)
2CopyLoc[1](Arg1: &mut Collection<Ty0>)
3FreezeRef
4Call assert_domain<Ty0, Ty1>(&Collection<Ty0>)
5MoveLoc[1](Arg1: &mut Collection<Ty0>)
6MutBorrowFieldGeneric[0](Collection.id: UID)
7Call utils::marker<Ty1>(): Marker<Ty1>
8Call dynamic_field::borrow_mut<Marker<Ty1>, Ty1>(&mut UID, Marker<Ty1>): &mut Ty1
9Ret
}
 
public add_domain<Ty0, Ty1: store>(Arg0: Witness<Ty0>, Arg1: &mut Collection<Ty0>, Arg2: Ty1) {
B0:
0CopyLoc[1](Arg1: &mut Collection<Ty0>)
1Call assert_version_and_upgrade<Ty0>(&mut Collection<Ty0>)
2CopyLoc[1](Arg1: &mut Collection<Ty0>)
3FreezeRef
4Call assert_no_domain<Ty0, Ty1>(&Collection<Ty0>)
5MoveLoc[0](Arg0: Witness<Ty0>)
6MoveLoc[1](Arg1: &mut Collection<Ty0>)
7Call borrow_uid_mut<Ty0>(Witness<Ty0>, &mut Collection<Ty0>): &mut UID
8Call utils::marker<Ty1>(): Marker<Ty1>
9MoveLoc[2](Arg2: Ty1)
10Call dynamic_field::add<Marker<Ty1>, Ty1>(&mut UID, Marker<Ty1>, Ty1)
11Ret
}
 
public remove_domain<Ty0, Ty1: store>(Arg0: Witness<Ty0>, Arg1: &mut Collection<Ty0>): Ty1 {
B0:
0CopyLoc[1](Arg1: &mut Collection<Ty0>)
1Call assert_version_and_upgrade<Ty0>(&mut Collection<Ty0>)
2CopyLoc[1](Arg1: &mut Collection<Ty0>)
3FreezeRef
4Call assert_domain<Ty0, Ty1>(&Collection<Ty0>)
5MoveLoc[1](Arg1: &mut Collection<Ty0>)
6MutBorrowFieldGeneric[0](Collection.id: UID)
7Call utils::marker<Ty1>(): Marker<Ty1>
8Call dynamic_field::remove<Marker<Ty1>, Ty1>(&mut UID, Marker<Ty1>): Ty1
9Ret
}
 
entry public delete<Ty0>(Arg0: Collection<Ty0>) {
B0:
0MoveLoc[0](Arg0: Collection<Ty0>)
1UnpackGeneric[0](Collection<Ty0>)
2Pop
3Call object::delete(UID)
4Ret
}
 
public assert_domain<Ty0, Ty1: store>(Arg0: &Collection<Ty0>) {
B0:
0MoveLoc[0](Arg0: &Collection<Ty0>)
1Call has_domain<Ty0, Ty1>(&Collection<Ty0>): bool
2BrFalse(4)
B1:
3Branch(6)
B2:
4LdConst[3](u64: 1)
5Abort
B3:
6Ret
}
 
public assert_no_domain<Ty0, Ty1: store>(Arg0: &Collection<Ty0>) {
B0:
0MoveLoc[0](Arg0: &Collection<Ty0>)
1Call has_domain<Ty0, Ty1>(&Collection<Ty0>): bool
2Not
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[0](u64: 2)
6Abort
B3:
7Ret
}
 
public new_display<Ty0: store + key>(Arg0: Witness<Ty0>, Arg1: &FrozenPublisher, Arg2: &mut TxContext): Display<Collection<Ty0>> {
L3: loc0: Display<Collection<Ty0>>
B0:
0LdFalse
1Pack[0](Witness)
2MoveLoc[1](Arg1: &FrozenPublisher)
3MoveLoc[2](Arg2: &mut TxContext)
4Call frozen_publisher::new_display<Witness, Collection<Ty0>>(Witness, &FrozenPublisher, &mut TxContext): Display<Collection<Ty0>>
5StLoc[3](loc0: Display<Collection<Ty0>>)
6MutBorrowLoc[3](loc0: Display<Collection<Ty0>>)
7LdConst[4](vector<u8>: "typ..)
8Call string::utf8(vector<u8>): String
9LdConst[5](vector<u8>: "Col..)
10Call string::utf8(vector<u8>): String
11Call display::add<Collection<Ty0>>(&mut Display<Collection<Ty0>>, String, String)
12MoveLoc[3](loc0: Display<Collection<Ty0>>)
13Ret
}
 
assert_version<Ty0>(Arg0: &Collection<Ty0>) {
B0:
0MoveLoc[0](Arg0: &Collection<Ty0>)
1ImmBorrowFieldGeneric[1](Collection.version: u64)
2ReadRef
3LdConst[0](u64: 2)
4Eq
5BrFalse(7)
B1:
6Branch(9)
B2:
7LdConst[2](u64: 1000)
8Abort
B3:
9Ret
}
 
assert_version_and_upgrade<Ty0>(Arg0: &mut Collection<Ty0>) {
B0:
0CopyLoc[0](Arg0: &mut Collection<Ty0>)
1ImmBorrowFieldGeneric[1](Collection.version: u64)
2ReadRef
3LdConst[0](u64: 2)
4Lt
5BrFalse(10)
B1:
6LdConst[0](u64: 2)
7CopyLoc[0](Arg0: &mut Collection<Ty0>)
8MutBorrowFieldGeneric[1](Collection.version: u64)
9WriteRef
B2:
10MoveLoc[0](Arg0: &mut Collection<Ty0>)
11FreezeRef
12Call assert_version<Ty0>(&Collection<Ty0>)
13Ret
}
 
entry migrate_as_creator<Ty0: store + key>(Arg0: &mut Collection<Ty0>, Arg1: &Publisher) {
B0:
0MoveLoc[1](Arg1: &Publisher)
1Call package::from_package<Ty0>(&Publisher): bool
2BrFalse(4)
B1:
3Branch(8)
B2:
4MoveLoc[0](Arg0: &mut Collection<Ty0>)
5Pop
6LdU64(0)
7Abort
B3:
8LdConst[0](u64: 2)
9MoveLoc[0](Arg0: &mut Collection<Ty0>)
10MutBorrowFieldGeneric[1](Collection.version: u64)
11WriteRef
12Ret
}
 
Constants [
0 => u64: 2
1 => u64: 999
2 => u64: 1000
3 => u64: 1
4 => vector<u8>: "type" // interpreted as UTF8 string
5 => vector<u8>: "Collection" // interpreted as UTF8 string
]
}