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

config

Module0x0000…0002
Move path
0x0000…0002::config
Functions
110 public, 0 entry
Structs
3
Friend modules
deny_list
config

Bytecode423 lines

The on-chain disassembly. Offsets are instruction numbers within each function.

// Move bytecode v7
module 2.config {
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
 
struct Config<phantom Ty0> has key {
id: UID
}
 
struct Setting<Ty0: copy + drop + store> has drop, store {
data: Option<SettingData<Ty0>>
}
 
struct SettingData<Ty0: copy + drop + store> has drop, store {
newer_value_epoch: u64,
newer_value: Option<Ty0>,
older_value_opt: Option<Ty0>
}
 
public(friend) new<Ty0>(Arg0: &mut Ty0, Arg1: &mut TxContext): Config<Ty0> {
B0:
0MoveLoc[1](Arg1: &mut TxContext)
1Call object::new(&mut TxContext): UID
2PackGeneric[0](Config<Ty0>)
3Ret
}
 
public(friend) share<Ty0>(Arg0: Config<Ty0>) {
B0:
0MoveLoc[0](Arg0: Config<Ty0>)
1Call transfer::share_object<Config<Ty0>>(Config<Ty0>)
2Ret
}
 
public(friend) transfer<Ty0>(Arg0: Config<Ty0>, Arg1: address) {
B0:
0MoveLoc[0](Arg0: Config<Ty0>)
1MoveLoc[1](Arg1: address)
2Call transfer::transfer<Config<Ty0>>(Config<Ty0>, address)
3Ret
}
 
public(friend) add_for_next_epoch<Ty0, Ty1: copy + drop + store, Ty2: copy + drop + store>(Arg0: &mut Config<Ty0>, Arg1: &mut Ty0, Arg2: Ty1, Arg3: Ty2, Arg4: &mut TxContext): Option<Ty2> {
L5: loc0: Option<Ty2>
L6: loc1: Option<Ty2>
L7: loc2: Option<Ty2>
L8: loc3: u64
L9: loc4: Option<Ty2>
L10: loc5: u64
L11: loc6: Option<Ty2>
L12: loc7: Option<Ty2>
L13: loc8: Option<Ty2>
L14: loc9: Setting<Ty2>
L15: loc10: &mut Setting<Ty2>
B0:
0MoveLoc[4](Arg4: &mut TxContext)
1FreezeRef
2Call tx_context::epoch(&TxContext): u64
3StLoc[8](loc3: u64)
4CopyLoc[0](Arg0: &mut Config<Ty0>)
5ImmBorrowFieldGeneric[0](Config.id: UID)
6CopyLoc[2](Arg2: Ty1)
7Call dynamic_field::exists<Ty1>(&UID, Ty1): bool
8Not
9BrFalse(26)
B1:
10MoveLoc[8](loc3: u64)
11MoveLoc[3](Arg3: Ty2)
12Call option::some<Ty2>(Ty2): Option<Ty2>
13Call option::none<Ty2>(): Option<Ty2>
14PackGeneric[1](SettingData<Ty2>)
15Call option::some<SettingData<Ty2>>(SettingData<Ty2>): Option<SettingData<Ty2>>
16PackGeneric[2](Setting<Ty2>)
17StLoc[14](loc9: Setting<Ty2>)
18MoveLoc[0](Arg0: &mut Config<Ty0>)
19MutBorrowFieldGeneric[0](Config.id: UID)
20MoveLoc[2](Arg2: Ty1)
21MoveLoc[14](loc9: Setting<Ty2>)
22Call dynamic_field::add<Ty1, Setting<Ty2>>(&mut UID, Ty1, Setting<Ty2>)
23Call option::none<Ty2>(): Option<Ty2>
24StLoc[7](loc2: Option<Ty2>)
25Branch(82)
B2:
26MoveLoc[0](Arg0: &mut Config<Ty0>)
27MutBorrowFieldGeneric[0](Config.id: UID)
28MoveLoc[2](Arg2: Ty1)
29Call dynamic_field::borrow_mut<Ty1, Setting<Ty2>>(&mut UID, Ty1): &mut Setting<Ty2>
30StLoc[15](loc10: &mut Setting<Ty2>)
31CopyLoc[15](loc10: &mut Setting<Ty2>)
32MutBorrowFieldGeneric[1](Setting.data: Option<SettingData<Ty2>>)
33Call option::extract<SettingData<Ty2>>(&mut Option<SettingData<Ty2>>): SettingData<Ty2>
34UnpackGeneric[1](SettingData<Ty2>)
35StLoc[11](loc6: Option<Ty2>)
36StLoc[9](loc4: Option<Ty2>)
37StLoc[10](loc5: u64)
38CopyLoc[8](loc3: u64)
39CopyLoc[10](loc5: u64)
40Gt
41BrFalse(47)
B3:
42MoveLoc[9](loc4: Option<Ty2>)
43MoveLoc[11](loc6: Option<Ty2>)
44StLoc[6](loc1: Option<Ty2>)
45StLoc[5](loc0: Option<Ty2>)
46Branch(68)
B4:
47CopyLoc[8](loc3: u64)
48MoveLoc[10](loc5: u64)
49Eq
50BrFalse(52)
B5:
51Branch(56)
B6:
52MoveLoc[15](loc10: &mut Setting<Ty2>)
53Pop
54LdU64(13906834543710568447)
55Abort
B7:
56ImmBorrowLoc[9](loc4: Option<Ty2>)
57Call option::is_none<Ty2>(&Option<Ty2>): bool
58BrFalse(60)
B8:
59Branch(64)
B9:
60MoveLoc[15](loc10: &mut Setting<Ty2>)
61Pop
62LdConst[0](u64: 0)
63Abort
B10:
64MoveLoc[11](loc6: Option<Ty2>)
65Call option::none<Ty2>(): Option<Ty2>
66StLoc[6](loc1: Option<Ty2>)
67StLoc[5](loc0: Option<Ty2>)
B11:
68MoveLoc[5](loc0: Option<Ty2>)
69MoveLoc[6](loc1: Option<Ty2>)
70StLoc[13](loc8: Option<Ty2>)
71StLoc[12](loc7: Option<Ty2>)
72MoveLoc[15](loc10: &mut Setting<Ty2>)
73MutBorrowFieldGeneric[1](Setting.data: Option<SettingData<Ty2>>)
74MoveLoc[8](loc3: u64)
75MoveLoc[3](Arg3: Ty2)
76Call option::some<Ty2>(Ty2): Option<Ty2>
77MoveLoc[12](loc7: Option<Ty2>)
78PackGeneric[1](SettingData<Ty2>)
79Call option::fill<SettingData<Ty2>>(&mut Option<SettingData<Ty2>>, SettingData<Ty2>)
80MoveLoc[13](loc8: Option<Ty2>)
81StLoc[7](loc2: Option<Ty2>)
B12:
82MoveLoc[7](loc2: Option<Ty2>)
83Ret
}
 
public(friend) remove_for_next_epoch<Ty0, Ty1: copy + drop + store, Ty2: copy + drop + store>(Arg0: &mut Config<Ty0>, Arg1: &mut Ty0, Arg2: Ty1, Arg3: &mut TxContext): Option<Ty2> {
L4: loc0: Option<Ty2>
L5: loc1: Option<Ty2>
L6: loc2: u64
L7: loc3: Option<Ty2>
L8: loc4: u64
L9: loc5: Option<Ty2>
L10: loc6: Option<Ty2>
L11: loc7: bool
L12: loc8: Option<Ty2>
L13: loc9: &mut Setting<Ty2>
B0:
0MoveLoc[3](Arg3: &mut TxContext)
1FreezeRef
2Call tx_context::epoch(&TxContext): u64
3StLoc[6](loc2: u64)
4CopyLoc[0](Arg0: &mut Config<Ty0>)
5ImmBorrowFieldGeneric[0](Config.id: UID)
6CopyLoc[2](Arg2: Ty1)
7Call dynamic_field::exists<Ty1>(&UID, Ty1): bool
8Not
9BrFalse(14)
B1:
10MoveLoc[0](Arg0: &mut Config<Ty0>)
11Pop
12Call option::none<Ty2>(): Option<Ty2>
13Ret
B2:
14CopyLoc[0](Arg0: &mut Config<Ty0>)
15MutBorrowFieldGeneric[0](Config.id: UID)
16CopyLoc[2](Arg2: Ty1)
17Call dynamic_field::borrow_mut<Ty1, Setting<Ty2>>(&mut UID, Ty1): &mut Setting<Ty2>
18StLoc[13](loc9: &mut Setting<Ty2>)
19CopyLoc[13](loc9: &mut Setting<Ty2>)
20MutBorrowFieldGeneric[1](Setting.data: Option<SettingData<Ty2>>)
21Call option::extract<SettingData<Ty2>>(&mut Option<SettingData<Ty2>>): SettingData<Ty2>
22UnpackGeneric[1](SettingData<Ty2>)
23StLoc[9](loc5: Option<Ty2>)
24StLoc[7](loc3: Option<Ty2>)
25StLoc[8](loc4: u64)
26CopyLoc[6](loc2: u64)
27CopyLoc[8](loc4: u64)
28Gt
29BrFalse(35)
B3:
30MoveLoc[7](loc3: Option<Ty2>)
31Call option::none<Ty2>(): Option<Ty2>
32StLoc[5](loc1: Option<Ty2>)
33StLoc[4](loc0: Option<Ty2>)
34Branch(50)
B4:
35CopyLoc[6](loc2: u64)
36MoveLoc[8](loc4: u64)
37Eq
38BrFalse(40)
B5:
39Branch(46)
B6:
40MoveLoc[13](loc9: &mut Setting<Ty2>)
41Pop
42MoveLoc[0](Arg0: &mut Config<Ty0>)
43Pop
44LdU64(13906834715509260287)
45Abort
B7:
46MoveLoc[9](loc5: Option<Ty2>)
47MoveLoc[7](loc3: Option<Ty2>)
48StLoc[5](loc1: Option<Ty2>)
49StLoc[4](loc0: Option<Ty2>)
B8:
50MoveLoc[4](loc0: Option<Ty2>)
51MoveLoc[5](loc1: Option<Ty2>)
52StLoc[12](loc8: Option<Ty2>)
53StLoc[10](loc6: Option<Ty2>)
54ImmBorrowLoc[10](loc6: Option<Ty2>)
55Call option::is_none<Ty2>(&Option<Ty2>): bool
56StLoc[11](loc7: bool)
57MoveLoc[13](loc9: &mut Setting<Ty2>)
58MutBorrowFieldGeneric[1](Setting.data: Option<SettingData<Ty2>>)
59MoveLoc[6](loc2: u64)
60Call option::none<Ty2>(): Option<Ty2>
61MoveLoc[10](loc6: Option<Ty2>)
62PackGeneric[1](SettingData<Ty2>)
63Call option::fill<SettingData<Ty2>>(&mut Option<SettingData<Ty2>>, SettingData<Ty2>)
64MoveLoc[11](loc7: bool)
65BrFalse(72)
B9:
66MoveLoc[0](Arg0: &mut Config<Ty0>)
67MutBorrowFieldGeneric[0](Config.id: UID)
68MoveLoc[2](Arg2: Ty1)
69Call dynamic_field::remove<Ty1, Setting<Ty2>>(&mut UID, Ty1): Setting<Ty2>
70Pop
71Branch(74)
B10:
72MoveLoc[0](Arg0: &mut Config<Ty0>)
73Pop
B11:
74MoveLoc[12](loc8: Option<Ty2>)
75Ret
}
 
public(friend) exists_with_type<Ty0, Ty1: copy + drop + store, Ty2: copy + drop + store>(Arg0: &Config<Ty0>, Arg1: Ty1): bool {
B0:
0MoveLoc[0](Arg0: &Config<Ty0>)
1ImmBorrowFieldGeneric[0](Config.id: UID)
2MoveLoc[1](Arg1: Ty1)
3Call dynamic_field::exists_with_type<Ty1, Setting<Ty2>>(&UID, Ty1): bool
4Ret
}
 
public(friend) exists_with_type_for_next_epoch<Ty0, Ty1: copy + drop + store, Ty2: copy + drop + store>(Arg0: &Config<Ty0>, Arg1: Ty1, Arg2: &TxContext): bool {
L3: loc0: bool
L4: loc1: bool
L5: loc2: u64
L6: loc3: &Setting<Ty2>
B0:
0CopyLoc[0](Arg0: &Config<Ty0>)
1ImmBorrowFieldGeneric[0](Config.id: UID)
2CopyLoc[1](Arg1: Ty1)
3Call dynamic_field::exists_with_type<Ty1, Setting<Ty2>>(&UID, Ty1): bool
4BrFalse(35)
B1:
5MoveLoc[2](Arg2: &TxContext)
6Call tx_context::epoch(&TxContext): u64
7StLoc[5](loc2: u64)
8MoveLoc[0](Arg0: &Config<Ty0>)
9ImmBorrowFieldGeneric[0](Config.id: UID)
10MoveLoc[1](Arg1: Ty1)
11Call dynamic_field::borrow<Ty1, Setting<Ty2>>(&UID, Ty1): &Setting<Ty2>
12StLoc[6](loc3: &Setting<Ty2>)
13MoveLoc[5](loc2: u64)
14CopyLoc[6](loc3: &Setting<Ty2>)
15ImmBorrowFieldGeneric[1](Setting.data: Option<SettingData<Ty2>>)
16Call option::borrow<SettingData<Ty2>>(&Option<SettingData<Ty2>>): &SettingData<Ty2>
17ImmBorrowFieldGeneric[2](SettingData.newer_value_epoch: u64)
18ReadRef
19Eq
20BrFalse(28)
B2:
21MoveLoc[6](loc3: &Setting<Ty2>)
22ImmBorrowFieldGeneric[1](Setting.data: Option<SettingData<Ty2>>)
23Call option::borrow<SettingData<Ty2>>(&Option<SettingData<Ty2>>): &SettingData<Ty2>
24ImmBorrowFieldGeneric[3](SettingData.newer_value: Option<Ty2>)
25Call option::is_some<Ty2>(&Option<Ty2>): bool
26StLoc[4](loc1: bool)
27Branch(32)
B3:
28MoveLoc[6](loc3: &Setting<Ty2>)
29Pop
30LdFalse
31StLoc[4](loc1: bool)
B4:
32MoveLoc[4](loc1: bool)
33StLoc[3](loc0: bool)
34Branch(41)
B5:
35MoveLoc[2](Arg2: &TxContext)
36Pop
37MoveLoc[0](Arg0: &Config<Ty0>)
38Pop
39LdFalse
40StLoc[3](loc0: bool)
B6:
41MoveLoc[3](loc0: bool)
42Ret
}
 
public(friend) borrow_for_next_epoch_mut<Ty0, Ty1: copy + drop + store, Ty2: copy + drop + store>(Arg0: &mut Config<Ty0>, Arg1: &mut Ty0, Arg2: Ty1, Arg3: &mut TxContext): &mut Ty2 {
L4: loc0: &mut SettingData<Ty2>
L5: loc1: u64
B0:
0MoveLoc[3](Arg3: &mut TxContext)
1FreezeRef
2Call tx_context::epoch(&TxContext): u64
3StLoc[5](loc1: u64)
4MoveLoc[0](Arg0: &mut Config<Ty0>)
5MutBorrowFieldGeneric[0](Config.id: UID)
6MoveLoc[2](Arg2: Ty1)
7Call dynamic_field::borrow_mut<Ty1, Setting<Ty2>>(&mut UID, Ty1): &mut Setting<Ty2>
8MutBorrowFieldGeneric[1](Setting.data: Option<SettingData<Ty2>>)
9Call option::borrow_mut<SettingData<Ty2>>(&mut Option<SettingData<Ty2>>): &mut SettingData<Ty2>
10StLoc[4](loc0: &mut SettingData<Ty2>)
11CopyLoc[4](loc0: &mut SettingData<Ty2>)
12ImmBorrowFieldGeneric[2](SettingData.newer_value_epoch: u64)
13ReadRef
14MoveLoc[5](loc1: u64)
15Eq
16BrFalse(18)
B1:
17Branch(22)
B2:
18MoveLoc[4](loc0: &mut SettingData<Ty2>)
19Pop
20LdConst[1](u64: 1)
21Abort
B3:
22CopyLoc[4](loc0: &mut SettingData<Ty2>)
23ImmBorrowFieldGeneric[3](SettingData.newer_value: Option<Ty2>)
24Call option::is_some<Ty2>(&Option<Ty2>): bool
25BrFalse(27)
B4:
26Branch(31)
B5:
27MoveLoc[4](loc0: &mut SettingData<Ty2>)
28Pop
29LdConst[1](u64: 1)
30Abort
B6:
31MoveLoc[4](loc0: &mut SettingData<Ty2>)
32MutBorrowFieldGeneric[3](SettingData.newer_value: Option<Ty2>)
33Call option::borrow_mut<Ty2>(&mut Option<Ty2>): &mut Ty2
34Ret
}
 
public(friend) read_setting_for_next_epoch<Ty0, Ty1: copy + drop + store, Ty2: copy + drop + store>(Arg0: &Config<Ty0>, Arg1: Ty1): Option<Ty2> {
B0:
0CopyLoc[0](Arg0: &Config<Ty0>)
1ImmBorrowFieldGeneric[0](Config.id: UID)
2CopyLoc[1](Arg1: Ty1)
3Call dynamic_field::exists_with_type<Ty1, Setting<Ty2>>(&UID, Ty1): bool
4Not
5BrFalse(10)
B1:
6MoveLoc[0](Arg0: &Config<Ty0>)
7Pop
8Call option::none<Ty2>(): Option<Ty2>
9Ret
B2:
10MoveLoc[0](Arg0: &Config<Ty0>)
11ImmBorrowFieldGeneric[0](Config.id: UID)
12MoveLoc[1](Arg1: Ty1)
13Call dynamic_field::borrow<Ty1, Setting<Ty2>>(&UID, Ty1): &Setting<Ty2>
14ImmBorrowFieldGeneric[1](Setting.data: Option<SettingData<Ty2>>)
15Call option::borrow<SettingData<Ty2>>(&Option<SettingData<Ty2>>): &SettingData<Ty2>
16ImmBorrowFieldGeneric[3](SettingData.newer_value: Option<Ty2>)
17ReadRef
18Ret
}
 
public(friend) read_setting<Ty0: copy + drop + store, Ty1: copy + drop + store>(Arg0: ID, Arg1: Ty0, Arg2: &TxContext): Option<Ty1> {
L3: loc0: address
L4: loc1: address
B0:
0ImmBorrowLoc[0](Arg0: ID)
1Call object::id_to_address(&ID): address
2StLoc[3](loc0: address)
3CopyLoc[3](loc0: address)
4MoveLoc[1](Arg1: Ty0)
5Call dynamic_field::hash_type_and_key<Ty0>(address, Ty0): address
6StLoc[4](loc1: address)
7MoveLoc[3](loc0: address)
8MoveLoc[4](loc1: address)
9MoveLoc[2](Arg2: &TxContext)
10Call tx_context::epoch(&TxContext): u64
11Call read_setting_impl<Field<Ty0, Setting<Ty1>>, Setting<Ty1>, SettingData<Ty1>, Ty1>(address, address, u64): Option<Ty1>
12Ret
}
 
native read_setting_impl<Ty0: key, Ty1: store, Ty2: store, Ty3: copy + drop + store>(Arg0: address, Arg1: address, Arg2: u64): Option<Ty3>;
 
Constants [
0 => u64: 0
1 => u64: 1
2 => u64: 2
]
}