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

API

supply

Module0x34a2…c82c
Move path
0xbc3d…e5f9::supply
Functions
2727 public, 0 entry
Structs
1
Friend modules
None
supply

Bytecode340 lines

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

// Move bytecode v6
module bc3df36be17f27ac98e3c839b2589db8475fa07b20657b08e8891e3aaf5ee5f9.supply {
use 16c5f17f2d55584a6e6daa442ccf83b4530d10546a8e7dedda9ba324e012fc40::witness;
use 859eb18bd5b5e8cc32deb6dfb1c39941008ab3c6e27f0b8ce2364be7102bb7cb::utils;
use 859eb18bd5b5e8cc32deb6dfb1c39941008ab3c6e27f0b8ce2364be7102bb7cb::utils_supply;
use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
 
struct Supply<phantom Ty0> has drop, store {
frozen: bool,
inner: Supply
}
 
public new<Ty0>(Arg0: Witness<Ty0>, Arg1: u64, Arg2: bool): Supply<Ty0> {
B0:
0MoveLoc[2](Arg2: bool)
1MoveLoc[1](Arg1: u64)
2Call utils_supply::new(u64): Supply
3PackGeneric[0](Supply<Ty0>)
4Ret
}
 
public borrow_inner<Ty0>(Arg0: &Supply<Ty0>): &Supply {
B0:
0MoveLoc[0](Arg0: &Supply<Ty0>)
1ImmBorrowFieldGeneric[0](Supply.inner: Supply)
2Ret
}
 
public increase_supply_ceil<Ty0>(Arg0: Witness<Ty0>, Arg1: &mut Supply<Ty0>, Arg2: u64) {
B0:
0CopyLoc[1](Arg1: &mut Supply<Ty0>)
1FreezeRef
2Call assert_not_frozen<Ty0>(&Supply<Ty0>)
3MoveLoc[1](Arg1: &mut Supply<Ty0>)
4MutBorrowFieldGeneric[0](Supply.inner: Supply)
5MoveLoc[2](Arg2: u64)
6Call utils_supply::increase_maximum(&mut Supply, u64)
7Ret
}
 
public increase_supply_ceil_nft<Ty0>(Arg0: Witness<Ty0>, Arg1: &mut UID, Arg2: u64) {
L3: loc0: &mut Supply<Ty0>
B0:
0MoveLoc[1](Arg1: &mut UID)
1Call borrow_domain_mut<Ty0>(&mut UID): &mut Supply<Ty0>
2StLoc[3](loc0: &mut Supply<Ty0>)
3MoveLoc[0](Arg0: Witness<Ty0>)
4MoveLoc[3](loc0: &mut Supply<Ty0>)
5MoveLoc[2](Arg2: u64)
6Call increase_supply_ceil<Ty0>(Witness<Ty0>, &mut Supply<Ty0>, u64)
7Ret
}
 
public decrease_supply_ceil<Ty0>(Arg0: Witness<Ty0>, Arg1: &mut Supply<Ty0>, Arg2: u64) {
B0:
0CopyLoc[1](Arg1: &mut Supply<Ty0>)
1FreezeRef
2Call assert_not_frozen<Ty0>(&Supply<Ty0>)
3MoveLoc[1](Arg1: &mut Supply<Ty0>)
4MutBorrowFieldGeneric[0](Supply.inner: Supply)
5MoveLoc[2](Arg2: u64)
6Call utils_supply::decrease_maximum(&mut Supply, u64)
7Ret
}
 
public decrease_supply_ceil_nft<Ty0>(Arg0: Witness<Ty0>, Arg1: &mut UID, Arg2: u64) {
L3: loc0: &mut Supply<Ty0>
B0:
0MoveLoc[1](Arg1: &mut UID)
1Call borrow_domain_mut<Ty0>(&mut UID): &mut Supply<Ty0>
2StLoc[3](loc0: &mut Supply<Ty0>)
3MoveLoc[0](Arg0: Witness<Ty0>)
4MoveLoc[3](loc0: &mut Supply<Ty0>)
5MoveLoc[2](Arg2: u64)
6Call decrease_supply_ceil<Ty0>(Witness<Ty0>, &mut Supply<Ty0>, u64)
7Ret
}
 
public freeze_supply<Ty0>(Arg0: Witness<Ty0>, Arg1: &mut Supply<Ty0>) {
B0:
0CopyLoc[1](Arg1: &mut Supply<Ty0>)
1FreezeRef
2Call assert_not_frozen<Ty0>(&Supply<Ty0>)
3LdTrue
4MoveLoc[1](Arg1: &mut Supply<Ty0>)
5MutBorrowFieldGeneric[1](Supply.frozen: bool)
6WriteRef
7Ret
}
 
public freeze_supply_nft<Ty0>(Arg0: Witness<Ty0>, Arg1: &mut UID) {
L2: loc0: &mut Supply<Ty0>
B0:
0MoveLoc[1](Arg1: &mut UID)
1Call borrow_domain_mut<Ty0>(&mut UID): &mut Supply<Ty0>
2StLoc[2](loc0: &mut Supply<Ty0>)
3MoveLoc[0](Arg0: Witness<Ty0>)
4MoveLoc[2](loc0: &mut Supply<Ty0>)
5Call freeze_supply<Ty0>(Witness<Ty0>, &mut Supply<Ty0>)
6Ret
}
 
public increment<Ty0>(Arg0: Witness<Ty0>, Arg1: &mut Supply<Ty0>, Arg2: u64) {
B0:
0MoveLoc[1](Arg1: &mut Supply<Ty0>)
1MutBorrowFieldGeneric[0](Supply.inner: Supply)
2MoveLoc[2](Arg2: u64)
3Call utils_supply::increment(&mut Supply, u64)
4Ret
}
 
public decrement<Ty0>(Arg0: Witness<Ty0>, Arg1: &mut Supply<Ty0>, Arg2: u64) {
B0:
0MoveLoc[1](Arg1: &mut Supply<Ty0>)
1MutBorrowFieldGeneric[0](Supply.inner: Supply)
2MoveLoc[2](Arg2: u64)
3Call utils_supply::decrement(&mut Supply, u64)
4Ret
}
 
public merge<Ty0>(Arg0: &mut Supply<Ty0>, Arg1: Supply<Ty0>) {
L2: loc0: Supply
B0:
0MoveLoc[1](Arg1: Supply<Ty0>)
1Call delete<Ty0>(Supply<Ty0>): Supply
2StLoc[2](loc0: Supply)
3MoveLoc[0](Arg0: &mut Supply<Ty0>)
4MutBorrowFieldGeneric[0](Supply.inner: Supply)
5MoveLoc[2](loc0: Supply)
6Call utils_supply::merge(&mut Supply, Supply)
7Ret
}
 
public split<Ty0>(Arg0: &mut Supply<Ty0>, Arg1: u64): Supply<Ty0> {
L2: loc0: Supply
B0:
0MoveLoc[0](Arg0: &mut Supply<Ty0>)
1MutBorrowFieldGeneric[0](Supply.inner: Supply)
2MoveLoc[1](Arg1: u64)
3Call utils_supply::split(&mut Supply, u64): Supply
4StLoc[2](loc0: Supply)
5LdTrue
6MoveLoc[2](loc0: Supply)
7PackGeneric[0](Supply<Ty0>)
8Ret
}
 
public is_frozen<Ty0>(Arg0: &Supply<Ty0>): bool {
B0:
0MoveLoc[0](Arg0: &Supply<Ty0>)
1ImmBorrowFieldGeneric[1](Supply.frozen: bool)
2ReadRef
3Ret
}
 
public get_max<Ty0>(Arg0: &Supply<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &Supply<Ty0>)
1ImmBorrowFieldGeneric[0](Supply.inner: Supply)
2Call utils_supply::get_max(&Supply): u64
3Ret
}
 
public get_current<Ty0>(Arg0: &Supply<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &Supply<Ty0>)
1ImmBorrowFieldGeneric[0](Supply.inner: Supply)
2Call utils_supply::get_current(&Supply): u64
3Ret
}
 
public get_remaining<Ty0>(Arg0: &Supply<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &Supply<Ty0>)
1ImmBorrowFieldGeneric[0](Supply.inner: Supply)
2Call utils_supply::get_remaining(&Supply): u64
3Ret
}
 
public has_domain<Ty0>(Arg0: &UID): bool {
B0:
0MoveLoc[0](Arg0: &UID)
1Call utils::marker<Supply<Ty0>>(): Marker<Supply<Ty0>>
2Call dynamic_field::exists_with_type<Marker<Supply<Ty0>>, Supply<Ty0>>(&UID, Marker<Supply<Ty0>>): bool
3Ret
}
 
public borrow_domain<Ty0>(Arg0: &UID): &Supply<Ty0> {
B0:
0CopyLoc[0](Arg0: &UID)
1Call assert_supply<Ty0>(&UID)
2MoveLoc[0](Arg0: &UID)
3Call utils::marker<Supply<Ty0>>(): Marker<Supply<Ty0>>
4Call dynamic_field::borrow<Marker<Supply<Ty0>>, Supply<Ty0>>(&UID, Marker<Supply<Ty0>>): &Supply<Ty0>
5Ret
}
 
public borrow_domain_mut<Ty0>(Arg0: &mut UID): &mut Supply<Ty0> {
B0:
0CopyLoc[0](Arg0: &mut UID)
1FreezeRef
2Call assert_supply<Ty0>(&UID)
3MoveLoc[0](Arg0: &mut UID)
4Call utils::marker<Supply<Ty0>>(): Marker<Supply<Ty0>>
5Call dynamic_field::borrow_mut<Marker<Supply<Ty0>>, Supply<Ty0>>(&mut UID, Marker<Supply<Ty0>>): &mut Supply<Ty0>
6Ret
}
 
public add_domain<Ty0>(Arg0: &mut UID, Arg1: Supply<Ty0>) {
B0:
0CopyLoc[0](Arg0: &mut UID)
1FreezeRef
2Call assert_no_supply<Ty0>(&UID)
3MoveLoc[0](Arg0: &mut UID)
4Call utils::marker<Supply<Ty0>>(): Marker<Supply<Ty0>>
5MoveLoc[1](Arg1: Supply<Ty0>)
6Call dynamic_field::add<Marker<Supply<Ty0>>, Supply<Ty0>>(&mut UID, Marker<Supply<Ty0>>, Supply<Ty0>)
7Ret
}
 
public add_new<Ty0>(Arg0: Witness<Ty0>, Arg1: &mut UID, Arg2: u64, Arg3: bool) {
B0:
0MoveLoc[1](Arg1: &mut UID)
1MoveLoc[0](Arg0: Witness<Ty0>)
2MoveLoc[2](Arg2: u64)
3MoveLoc[3](Arg3: bool)
4Call new<Ty0>(Witness<Ty0>, u64, bool): Supply<Ty0>
5Call add_domain<Ty0>(&mut UID, Supply<Ty0>)
6Ret
}
 
public remove_domain<Ty0>(Arg0: &mut UID): Supply<Ty0> {
B0:
0CopyLoc[0](Arg0: &mut UID)
1FreezeRef
2Call assert_supply<Ty0>(&UID)
3MoveLoc[0](Arg0: &mut UID)
4Call utils::marker<Supply<Ty0>>(): Marker<Supply<Ty0>>
5Call dynamic_field::remove<Marker<Supply<Ty0>>, Supply<Ty0>>(&mut UID, Marker<Supply<Ty0>>): Supply<Ty0>
6Ret
}
 
public delete<Ty0>(Arg0: Supply<Ty0>): Supply {
L1: loc0: bool
L2: loc1: Supply
B0:
0ImmBorrowLoc[0](Arg0: Supply<Ty0>)
1ImmBorrowFieldGeneric[1](Supply.frozen: bool)
2ReadRef
3Not
4BrFalse(8)
B1:
5LdTrue
6StLoc[1](loc0: bool)
7Branch(13)
B2:
8ImmBorrowLoc[0](Arg0: Supply<Ty0>)
9Call get_current<Ty0>(&Supply<Ty0>): u64
10LdU64(0)
11Eq
12StLoc[1](loc0: bool)
B3:
13MoveLoc[1](loc0: bool)
14BrFalse(16)
B4:
15Branch(18)
B5:
16LdConst[3](u64: 4)
17Abort
B6:
18MoveLoc[0](Arg0: Supply<Ty0>)
19UnpackGeneric[0](Supply<Ty0>)
20StLoc[2](loc1: Supply)
21Pop
22MoveLoc[2](loc1: Supply)
23Ret
}
 
public assert_zero<Ty0>(Arg0: &Supply<Ty0>) {
B0:
0MoveLoc[0](Arg0: &Supply<Ty0>)
1ImmBorrowFieldGeneric[0](Supply.inner: Supply)
2Call utils_supply::assert_zero(&Supply)
3Ret
}
 
public assert_not_frozen<Ty0>(Arg0: &Supply<Ty0>) {
B0:
0MoveLoc[0](Arg0: &Supply<Ty0>)
1ImmBorrowFieldGeneric[1](Supply.frozen: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(8)
B2:
6LdConst[2](u64: 3)
7Abort
B3:
8Ret
}
 
public assert_supply<Ty0>(Arg0: &UID) {
B0:
0MoveLoc[0](Arg0: &UID)
1Call has_domain<Ty0>(&UID): bool
2BrFalse(4)
B1:
3Branch(6)
B2:
4LdConst[0](u64: 1)
5Abort
B3:
6Ret
}
 
public assert_no_supply<Ty0>(Arg0: &UID) {
B0:
0MoveLoc[0](Arg0: &UID)
1Call has_domain<Ty0>(&UID): bool
2Not
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[1](u64: 2)
6Abort
B3:
7Ret
}
 
Constants [
0 => u64: 1
1 => u64: 2
2 => u64: 3
3 => u64: 4
]
}