suins
Module0x5580…2003
- Move path
- 0xd22b…08f0::suins
- Functions
- 1614 public, 0 entry
- Structs
- 7
- Friend modules
- payment
suins
Bytecode290 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v7
module d22b24490e0bae52676651b4f56660a5ff8022a2576e0089f79b3c88d44e08f0.suins {
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::package;
use 0000000000000000000000000000000000000000000000000000000000000002::sui;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
struct AdminCap has store, key {
id: UID
}
struct SuiNS has key {
id: UID,
balance: Balance<SUI>
}
struct SUINS has drop {
dummy_field: bool
}
struct ConfigKey<phantom Ty0> has copy, drop, store {
dummy_field: bool
}
struct RegistryKey<phantom Ty0> has copy, drop, store {
dummy_field: bool
}
struct BalanceKey<phantom Ty0> has copy, drop, store {
dummy_field: bool
}
struct AppKey<phantom Ty0: drop> has copy, drop, store {
dummy_field: bool
}
init(Arg0: SUINS, Arg1: &mut TxContext) {
B0:
0MoveLoc[0](Arg0: SUINS)
1CopyLoc[1](Arg1: &mut TxContext)
2Call package::claim_and_keep<SUINS>(SUINS, &mut TxContext)
3CopyLoc[1](Arg1: &mut TxContext)
4Call object::new(&mut TxContext): UID
5Pack[0](AdminCap)
6CopyLoc[1](Arg1: &mut TxContext)
7FreezeRef
8Call tx_context::sender(&TxContext): address
9Call transfer::transfer<AdminCap>(AdminCap, address)
10MoveLoc[1](Arg1: &mut TxContext)
11Call object::new(&mut TxContext): UID
12Call balance::zero<SUI>(): Balance<SUI>
13Pack[1](SuiNS)
14Call transfer::share_object<SuiNS>(SuiNS)
15Ret
}
public withdraw(Arg0: &AdminCap, Arg1: &mut SuiNS, Arg2: &mut TxContext): Coin<SUI> {
L3: loc0: u64
B0:
0CopyLoc[1](Arg1: &mut SuiNS)
1ImmBorrowField[0](SuiNS.balance: Balance<SUI>)
2Call balance::value<SUI>(&Balance<SUI>): u64
3StLoc[3](loc0: u64)
4CopyLoc[3](loc0: u64)
5LdU64(0)
6Gt
7BrFalse(9)
B1:
8Branch(15)
B2:
9MoveLoc[1](Arg1: &mut SuiNS)
10Pop
11MoveLoc[2](Arg2: &mut TxContext)
12Pop
13LdConst[0](u64: 0)
14Abort
B3:
15MoveLoc[1](Arg1: &mut SuiNS)
16MutBorrowField[0](SuiNS.balance: Balance<SUI>)
17MoveLoc[3](loc0: u64)
18MoveLoc[2](Arg2: &mut TxContext)
19Call coin::take<SUI>(&mut Balance<SUI>, u64, &mut TxContext): Coin<SUI>
20Ret
}
public withdraw_custom<Ty0>(Arg0: &mut SuiNS, Arg1: &AdminCap, Arg2: &mut TxContext): Coin<Ty0> {
L3: loc0: BalanceKey<Ty0>
B0:
0LdFalse
1PackGeneric[0](BalanceKey<Ty0>)
2StLoc[3](loc0: BalanceKey<Ty0>)
3CopyLoc[0](Arg0: &mut SuiNS)
4ImmBorrowField[1](SuiNS.id: UID)
5CopyLoc[3](loc0: BalanceKey<Ty0>)
6Call dynamic_field::exists_<BalanceKey<Ty0>>(&UID, BalanceKey<Ty0>): bool
7BrFalse(9)
B1:
8Branch(15)
B2:
9MoveLoc[0](Arg0: &mut SuiNS)
10Pop
11MoveLoc[2](Arg2: &mut TxContext)
12Pop
13LdConst[2](u64: 2)
14Abort
B3:
15MoveLoc[0](Arg0: &mut SuiNS)
16MutBorrowField[1](SuiNS.id: UID)
17MoveLoc[3](loc0: BalanceKey<Ty0>)
18Call dynamic_field::borrow_mut<BalanceKey<Ty0>, Balance<Ty0>>(&mut UID, BalanceKey<Ty0>): &mut Balance<Ty0>
19Call balance::withdraw_all<Ty0>(&mut Balance<Ty0>): Balance<Ty0>
20MoveLoc[2](Arg2: &mut TxContext)
21Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
22Ret
}
public authorize_app<Ty0: drop>(Arg0: &AdminCap, Arg1: &mut SuiNS) {
B0:
0MoveLoc[1](Arg1: &mut SuiNS)
1MutBorrowField[1](SuiNS.id: UID)
2LdFalse
3PackGeneric[1](AppKey<Ty0>)
4LdTrue
5Call dynamic_field::add<AppKey<Ty0>, bool>(&mut UID, AppKey<Ty0>, bool)
6Ret
}
public deauthorize_app<Ty0: drop>(Arg0: &AdminCap, Arg1: &mut SuiNS): bool {
B0:
0MoveLoc[1](Arg1: &mut SuiNS)
1MutBorrowField[1](SuiNS.id: UID)
2LdFalse
3PackGeneric[1](AppKey<Ty0>)
4Call dynamic_field::remove<AppKey<Ty0>, bool>(&mut UID, AppKey<Ty0>): bool
5Ret
}
public is_app_authorized<Ty0: drop>(Arg0: &SuiNS): bool {
B0:
0MoveLoc[0](Arg0: &SuiNS)
1ImmBorrowField[1](SuiNS.id: UID)
2LdFalse
3PackGeneric[1](AppKey<Ty0>)
4Call dynamic_field::exists_<AppKey<Ty0>>(&UID, AppKey<Ty0>): bool
5Ret
}
public assert_app_is_authorized<Ty0: drop>(Arg0: &SuiNS) {
B0:
0MoveLoc[0](Arg0: &SuiNS)
1Call is_app_authorized<Ty0>(&SuiNS): bool
2BrFalse(4)
B1:
3Branch(6)
B2:
4LdConst[1](u64: 1)
5Abort
B3:
6Ret
}
public app_add_balance<Ty0: drop>(Arg0: Ty0, Arg1: &mut SuiNS, Arg2: Balance<SUI>) {
B0:
0CopyLoc[1](Arg1: &mut SuiNS)
1FreezeRef
2Call assert_app_is_authorized<Ty0>(&SuiNS)
3MoveLoc[1](Arg1: &mut SuiNS)
4MutBorrowField[0](SuiNS.balance: Balance<SUI>)
5MoveLoc[2](Arg2: Balance<SUI>)
6Call balance::join<SUI>(&mut Balance<SUI>, Balance<SUI>): u64
7Pop
8Ret
}
public app_add_custom_balance<Ty0: drop, Ty1>(Arg0: &mut SuiNS, Arg1: Ty0, Arg2: Balance<Ty1>) {
L3: loc0: BalanceKey<Ty1>
B0:
0CopyLoc[0](Arg0: &mut SuiNS)
1FreezeRef
2Call assert_app_is_authorized<Ty0>(&SuiNS)
3LdFalse
4PackGeneric[2](BalanceKey<Ty1>)
5StLoc[3](loc0: BalanceKey<Ty1>)
6CopyLoc[0](Arg0: &mut SuiNS)
7ImmBorrowField[1](SuiNS.id: UID)
8CopyLoc[3](loc0: BalanceKey<Ty1>)
9Call dynamic_field::exists_<BalanceKey<Ty1>>(&UID, BalanceKey<Ty1>): bool
10BrFalse(19)
B1:
11MoveLoc[0](Arg0: &mut SuiNS)
12MutBorrowField[1](SuiNS.id: UID)
13MoveLoc[3](loc0: BalanceKey<Ty1>)
14Call dynamic_field::borrow_mut<BalanceKey<Ty1>, Balance<Ty1>>(&mut UID, BalanceKey<Ty1>): &mut Balance<Ty1>
15MoveLoc[2](Arg2: Balance<Ty1>)
16Call balance::join<Ty1>(&mut Balance<Ty1>, Balance<Ty1>): u64
17Pop
18Branch(24)
B2:
19MoveLoc[0](Arg0: &mut SuiNS)
20MutBorrowField[1](SuiNS.id: UID)
21MoveLoc[3](loc0: BalanceKey<Ty1>)
22MoveLoc[2](Arg2: Balance<Ty1>)
23Call dynamic_field::add<BalanceKey<Ty1>, Balance<Ty1>>(&mut UID, BalanceKey<Ty1>, Balance<Ty1>)
B3:
24Ret
}
public app_registry_mut<Ty0: drop, Ty1: store>(Arg0: Ty0, Arg1: &mut SuiNS): &mut Ty1 {
B0:
0CopyLoc[1](Arg1: &mut SuiNS)
1FreezeRef
2Call assert_app_is_authorized<Ty0>(&SuiNS)
3MoveLoc[1](Arg1: &mut SuiNS)
4Call pkg_registry_mut<Ty1>(&mut SuiNS): &mut Ty1
5Ret
}
public add_config<Ty0: drop + store>(Arg0: &AdminCap, Arg1: &mut SuiNS, Arg2: Ty0) {
B0:
0MoveLoc[1](Arg1: &mut SuiNS)
1MutBorrowField[1](SuiNS.id: UID)
2LdFalse
3PackGeneric[3](ConfigKey<Ty0>)
4MoveLoc[2](Arg2: Ty0)
5Call dynamic_field::add<ConfigKey<Ty0>, Ty0>(&mut UID, ConfigKey<Ty0>, Ty0)
6Ret
}
public get_config<Ty0: drop + store>(Arg0: &SuiNS): &Ty0 {
B0:
0MoveLoc[0](Arg0: &SuiNS)
1ImmBorrowField[1](SuiNS.id: UID)
2LdFalse
3PackGeneric[3](ConfigKey<Ty0>)
4Call dynamic_field::borrow<ConfigKey<Ty0>, Ty0>(&UID, ConfigKey<Ty0>): &Ty0
5Ret
}
public remove_config<Ty0: drop + store>(Arg0: &AdminCap, Arg1: &mut SuiNS): Ty0 {
B0:
0MoveLoc[1](Arg1: &mut SuiNS)
1MutBorrowField[1](SuiNS.id: UID)
2LdFalse
3PackGeneric[3](ConfigKey<Ty0>)
4Call dynamic_field::remove<ConfigKey<Ty0>, Ty0>(&mut UID, ConfigKey<Ty0>): Ty0
5Ret
}
public registry<Ty0: store>(Arg0: &SuiNS): &Ty0 {
B0:
0MoveLoc[0](Arg0: &SuiNS)
1ImmBorrowField[1](SuiNS.id: UID)
2LdFalse
3PackGeneric[4](RegistryKey<Ty0>)
4Call dynamic_field::borrow<RegistryKey<Ty0>, Ty0>(&UID, RegistryKey<Ty0>): &Ty0
5Ret
}
public add_registry<Ty0: store>(Arg0: &AdminCap, Arg1: &mut SuiNS, Arg2: Ty0) {
B0:
0MoveLoc[1](Arg1: &mut SuiNS)
1MutBorrowField[1](SuiNS.id: UID)
2LdFalse
3PackGeneric[4](RegistryKey<Ty0>)
4MoveLoc[2](Arg2: Ty0)
5Call dynamic_field::add<RegistryKey<Ty0>, Ty0>(&mut UID, RegistryKey<Ty0>, Ty0)
6Ret
}
public(friend) pkg_registry_mut<Ty0: store>(Arg0: &mut SuiNS): &mut Ty0 {
B0:
0MoveLoc[0](Arg0: &mut SuiNS)
1MutBorrowField[1](SuiNS.id: UID)
2LdFalse
3PackGeneric[4](RegistryKey<Ty0>)
4Call dynamic_field::borrow_mut<RegistryKey<Ty0>, Ty0>(&mut UID, RegistryKey<Ty0>): &mut Ty0
5Ret
}
Constants [
0 => u64: 0
1 => u64: 1
2 => u64: 2
]
}