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

API

active_set

Module0xfa65…814e
Move path
0xfdc8…ea77::active_set
Functions
110 public, 0 entry
Structs
2
Friend modules
staking_inner
active_set

Bytecode642 lines

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

// Move bytecode v7
module fdc88f7d7cf30afab2f82e8380d11ee8f70efb90e863d1de8616fae1bb09ea77.active_set {
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
 
struct ActiveSetEntry has copy, drop, store {
node_id: ID,
staked_amount: u64
}
 
struct ActiveSet has copy, drop, store {
max_size: u16,
threshold_stake: u64,
nodes: vector<ActiveSetEntry>,
total_stake: u64
}
 
public(friend) new(Arg0: u16, Arg1: u64): ActiveSet {
B0:
0CopyLoc[0](Arg0: u16)
1LdU16(0)
2Gt
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[0](u64: 0)
6Abort
B3:
7MoveLoc[0](Arg0: u16)
8MoveLoc[1](Arg1: u64)
9VecPack(12, 0)
10LdU64(0)
11Pack[1](ActiveSet)
12Ret
}
 
public(friend) insert_or_update(Arg0: &mut ActiveSet, Arg1: ID, Arg2: u64): bool {
L3: loc0: bool
L4: loc1: bool
B0:
0CopyLoc[2](Arg2: u64)
1LdU64(0)
2Eq
3BrFalse(7)
B1:
4LdTrue
5StLoc[3](loc0: bool)
6Branch(13)
B2:
7CopyLoc[2](Arg2: u64)
8CopyLoc[0](Arg0: &mut ActiveSet)
9ImmBorrowField[0](ActiveSet.threshold_stake: u64)
10ReadRef
11Lt
12StLoc[3](loc0: bool)
B3:
13MoveLoc[3](loc0: bool)
14BrFalse(20)
B4:
15MoveLoc[0](Arg0: &mut ActiveSet)
16MoveLoc[1](Arg1: ID)
17Call remove(&mut ActiveSet, ID)
18LdFalse
19Ret
B5:
20CopyLoc[0](Arg0: &mut ActiveSet)
21CopyLoc[1](Arg1: ID)
22CopyLoc[2](Arg2: u64)
23Call update(&mut ActiveSet, ID, u64): bool
24BrFalse(30)
B6:
25MoveLoc[0](Arg0: &mut ActiveSet)
26Pop
27LdTrue
28StLoc[4](loc1: bool)
29Branch(35)
B7:
30MoveLoc[0](Arg0: &mut ActiveSet)
31MoveLoc[1](Arg1: ID)
32MoveLoc[2](Arg2: u64)
33Call insert(&mut ActiveSet, ID, u64): bool
34StLoc[4](loc1: bool)
B8:
35MoveLoc[4](loc1: bool)
36Ret
}
 
public(friend) update(Arg0: &mut ActiveSet, Arg1: ID, Arg2: u64): bool {
L3: loc0: u64
L4: loc1: Option<u64>
L5: loc2: u64
L6: loc3: u64
L7: loc4: u64
L8: loc5: Option<u64>
L9: loc6: Option<u64>
L10: loc7: u64
L11: loc8: &vector<ActiveSetEntry>
B0:
0CopyLoc[0](Arg0: &mut ActiveSet)
1ImmBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
2StLoc[11](loc8: &vector<ActiveSetEntry>)
3CopyLoc[11](loc8: &vector<ActiveSetEntry>)
4VecLen(12)
5StLoc[3](loc0: u64)
6LdU64(0)
7StLoc[5](loc2: u64)
8MoveLoc[3](loc0: u64)
9StLoc[10](loc7: u64)
B1:
10CopyLoc[5](loc2: u64)
11CopyLoc[10](loc7: u64)
12Lt
13BrFalse(35)
B2:
14CopyLoc[5](loc2: u64)
15StLoc[6](loc3: u64)
16CopyLoc[11](loc8: &vector<ActiveSetEntry>)
17CopyLoc[6](loc3: u64)
18VecImmBorrow(12)
19ImmBorrowField[2](ActiveSetEntry.node_id: ID)
20ReadRef
21CopyLoc[1](Arg1: ID)
22Eq
23BrFalse(30)
B3:
24MoveLoc[11](loc8: &vector<ActiveSetEntry>)
25Pop
26MoveLoc[6](loc3: u64)
27Call option::some<u64>(u64): Option<u64>
28StLoc[4](loc1: Option<u64>)
29Branch(39)
B4:
30MoveLoc[5](loc2: u64)
31LdU64(1)
32Add
33StLoc[5](loc2: u64)
34Branch(10)
B5:
35MoveLoc[11](loc8: &vector<ActiveSetEntry>)
36Pop
37Call option::none<u64>(): Option<u64>
38StLoc[4](loc1: Option<u64>)
B6:
39MoveLoc[4](loc1: Option<u64>)
40StLoc[8](loc5: Option<u64>)
41ImmBorrowLoc[8](loc5: Option<u64>)
42Call option::is_none<u64>(&Option<u64>): bool
43BrFalse(48)
B7:
44MoveLoc[0](Arg0: &mut ActiveSet)
45Pop
46LdFalse
47Ret
B8:
48MoveLoc[8](loc5: Option<u64>)
49StLoc[9](loc6: Option<u64>)
50ImmBorrowLoc[9](loc6: Option<u64>)
51Call option::is_some<u64>(&Option<u64>): bool
52BrFalse(79)
B9:
53MoveLoc[9](loc6: Option<u64>)
54Call option::destroy_some<u64>(Option<u64>): u64
55StLoc[7](loc4: u64)
56CopyLoc[0](Arg0: &mut ActiveSet)
57ImmBorrowField[3](ActiveSet.total_stake: u64)
58ReadRef
59CopyLoc[2](Arg2: u64)
60Add
61CopyLoc[0](Arg0: &mut ActiveSet)
62ImmBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
63CopyLoc[7](loc4: u64)
64VecImmBorrow(12)
65ImmBorrowField[4](ActiveSetEntry.staked_amount: u64)
66ReadRef
67Sub
68CopyLoc[0](Arg0: &mut ActiveSet)
69MutBorrowField[3](ActiveSet.total_stake: u64)
70WriteRef
71MoveLoc[2](Arg2: u64)
72MoveLoc[0](Arg0: &mut ActiveSet)
73MutBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
74MoveLoc[7](loc4: u64)
75VecMutBorrow(12)
76MutBorrowField[4](ActiveSetEntry.staked_amount: u64)
77WriteRef
78Branch(83)
B10:
79MoveLoc[0](Arg0: &mut ActiveSet)
80Pop
81MoveLoc[9](loc6: Option<u64>)
82Call option::destroy_none<u64>(Option<u64>)
B11:
83LdTrue
84Ret
}
 
insert(Arg0: &mut ActiveSet, Arg1: ID, Arg2: u64): bool {
L3: loc0: u64
L4: loc1: u64
L5: loc2: Option<u64>
L6: loc3: Option<u64>
L7: loc4: bool
L8: loc5: u64
L9: loc6: u64
L10: loc7: u64
L11: loc8: u64
L12: loc9: Option<u64>
L13: loc10: u64
L14: loc11: u64
L15: loc12: u64
L16: loc13: u64
L17: loc14: &vector<ActiveSetEntry>
B0:
0CopyLoc[0](Arg0: &mut ActiveSet)
1ImmBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
2StLoc[17](loc14: &vector<ActiveSetEntry>)
3CopyLoc[17](loc14: &vector<ActiveSetEntry>)
4VecLen(12)
5StLoc[4](loc1: u64)
6LdU64(0)
7StLoc[10](loc7: u64)
8MoveLoc[4](loc1: u64)
9StLoc[16](loc13: u64)
B1:
10CopyLoc[10](loc7: u64)
11CopyLoc[16](loc13: u64)
12Lt
13BrFalse(35)
B2:
14CopyLoc[10](loc7: u64)
15StLoc[11](loc8: u64)
16CopyLoc[17](loc14: &vector<ActiveSetEntry>)
17CopyLoc[11](loc8: u64)
18VecImmBorrow(12)
19ImmBorrowField[2](ActiveSetEntry.node_id: ID)
20ReadRef
21CopyLoc[1](Arg1: ID)
22Eq
23BrFalse(30)
B3:
24MoveLoc[17](loc14: &vector<ActiveSetEntry>)
25Pop
26MoveLoc[11](loc8: u64)
27Call option::some<u64>(u64): Option<u64>
28StLoc[5](loc2: Option<u64>)
29Branch(39)
B4:
30MoveLoc[10](loc7: u64)
31LdU64(1)
32Add
33StLoc[10](loc7: u64)
34Branch(10)
B5:
35MoveLoc[17](loc14: &vector<ActiveSetEntry>)
36Pop
37Call option::none<u64>(): Option<u64>
38StLoc[5](loc2: Option<u64>)
B6:
39MoveLoc[5](loc2: Option<u64>)
40StLoc[6](loc3: Option<u64>)
41ImmBorrowLoc[6](loc3: Option<u64>)
42Call option::is_none<u64>(&Option<u64>): bool
43BrFalse(45)
B7:
44Branch(49)
B8:
45MoveLoc[0](Arg0: &mut ActiveSet)
46Pop
47LdConst[1](u64: 1)
48Abort
B9:
49CopyLoc[0](Arg0: &mut ActiveSet)
50ImmBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
51VecLen(12)
52CastU16
53CopyLoc[0](Arg0: &mut ActiveSet)
54ImmBorrowField[5](ActiveSet.max_size: u16)
55ReadRef
56Lt
57BrFalse(74)
B10:
58CopyLoc[0](Arg0: &mut ActiveSet)
59ImmBorrowField[3](ActiveSet.total_stake: u64)
60ReadRef
61CopyLoc[2](Arg2: u64)
62Add
63CopyLoc[0](Arg0: &mut ActiveSet)
64MutBorrowField[3](ActiveSet.total_stake: u64)
65WriteRef
66MoveLoc[0](Arg0: &mut ActiveSet)
67MutBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
68MoveLoc[1](Arg1: ID)
69MoveLoc[2](Arg2: u64)
70Pack[0](ActiveSetEntry)
71VecPushBack(12)
72LdTrue
73Ret
B11:
74CopyLoc[2](Arg2: u64)
75StLoc[14](loc11: u64)
76Call option::none<u64>(): Option<u64>
77StLoc[12](loc9: Option<u64>)
78CopyLoc[0](Arg0: &mut ActiveSet)
79ImmBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
80VecLen(12)
81StLoc[3](loc0: u64)
82LdU64(0)
83StLoc[8](loc5: u64)
84MoveLoc[3](loc0: u64)
85StLoc[15](loc12: u64)
B12:
86CopyLoc[8](loc5: u64)
87CopyLoc[15](loc12: u64)
88Lt
89BrFalse(116)
B13:
90CopyLoc[8](loc5: u64)
91StLoc[9](loc6: u64)
92CopyLoc[0](Arg0: &mut ActiveSet)
93ImmBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
94CopyLoc[9](loc6: u64)
95VecImmBorrow(12)
96ImmBorrowField[4](ActiveSetEntry.staked_amount: u64)
97ReadRef
98CopyLoc[14](loc11: u64)
99Lt
100BrFalse(111)
B14:
101CopyLoc[9](loc6: u64)
102Call option::some<u64>(u64): Option<u64>
103StLoc[12](loc9: Option<u64>)
104CopyLoc[0](Arg0: &mut ActiveSet)
105ImmBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
106MoveLoc[9](loc6: u64)
107VecImmBorrow(12)
108ImmBorrowField[4](ActiveSetEntry.staked_amount: u64)
109ReadRef
110StLoc[14](loc11: u64)
B15:
111MoveLoc[8](loc5: u64)
112LdU64(1)
113Add
114StLoc[8](loc5: u64)
115Branch(86)
B16:
116ImmBorrowLoc[12](loc9: Option<u64>)
117Call option::is_some<u64>(&Option<u64>): bool
118BrFalse(143)
B17:
119MutBorrowLoc[12](loc9: Option<u64>)
120Call option::extract<u64>(&mut Option<u64>): u64
121StLoc[13](loc10: u64)
122CopyLoc[0](Arg0: &mut ActiveSet)
123ImmBorrowField[3](ActiveSet.total_stake: u64)
124ReadRef
125MoveLoc[14](loc11: u64)
126Sub
127CopyLoc[2](Arg2: u64)
128Add
129CopyLoc[0](Arg0: &mut ActiveSet)
130MutBorrowField[3](ActiveSet.total_stake: u64)
131WriteRef
132MoveLoc[1](Arg1: ID)
133MoveLoc[2](Arg2: u64)
134Pack[0](ActiveSetEntry)
135MoveLoc[0](Arg0: &mut ActiveSet)
136MutBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
137MoveLoc[13](loc10: u64)
138VecMutBorrow(12)
139WriteRef
140LdTrue
141StLoc[7](loc4: bool)
142Branch(147)
B18:
143MoveLoc[0](Arg0: &mut ActiveSet)
144Pop
145LdFalse
146StLoc[7](loc4: bool)
B19:
147MoveLoc[7](loc4: bool)
148Ret
}
 
public(friend) remove(Arg0: &mut ActiveSet, Arg1: ID) {
L2: loc0: u64
L3: loc1: Option<u64>
L4: loc2: ActiveSetEntry
L5: loc3: u64
L6: loc4: u64
L7: loc5: u64
L8: loc6: Option<u64>
L9: loc7: u64
L10: loc8: &vector<ActiveSetEntry>
B0:
0CopyLoc[0](Arg0: &mut ActiveSet)
1ImmBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
2StLoc[10](loc8: &vector<ActiveSetEntry>)
3CopyLoc[10](loc8: &vector<ActiveSetEntry>)
4VecLen(12)
5StLoc[2](loc0: u64)
6LdU64(0)
7StLoc[5](loc3: u64)
8MoveLoc[2](loc0: u64)
9StLoc[9](loc7: u64)
B1:
10CopyLoc[5](loc3: u64)
11CopyLoc[9](loc7: u64)
12Lt
13BrFalse(35)
B2:
14CopyLoc[5](loc3: u64)
15StLoc[6](loc4: u64)
16CopyLoc[10](loc8: &vector<ActiveSetEntry>)
17CopyLoc[6](loc4: u64)
18VecImmBorrow(12)
19ImmBorrowField[2](ActiveSetEntry.node_id: ID)
20ReadRef
21CopyLoc[1](Arg1: ID)
22Eq
23BrFalse(30)
B3:
24MoveLoc[10](loc8: &vector<ActiveSetEntry>)
25Pop
26MoveLoc[6](loc4: u64)
27Call option::some<u64>(u64): Option<u64>
28StLoc[3](loc1: Option<u64>)
29Branch(39)
B4:
30MoveLoc[5](loc3: u64)
31LdU64(1)
32Add
33StLoc[5](loc3: u64)
34Branch(10)
B5:
35MoveLoc[10](loc8: &vector<ActiveSetEntry>)
36Pop
37Call option::none<u64>(): Option<u64>
38StLoc[3](loc1: Option<u64>)
B6:
39MoveLoc[3](loc1: Option<u64>)
40StLoc[8](loc6: Option<u64>)
41ImmBorrowLoc[8](loc6: Option<u64>)
42Call option::is_some<u64>(&Option<u64>): bool
43BrFalse(63)
B7:
44MoveLoc[8](loc6: Option<u64>)
45Call option::destroy_some<u64>(Option<u64>): u64
46StLoc[7](loc5: u64)
47CopyLoc[0](Arg0: &mut ActiveSet)
48MutBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
49MoveLoc[7](loc5: u64)
50Call vector::swap_remove<ActiveSetEntry>(&mut vector<ActiveSetEntry>, u64): ActiveSetEntry
51StLoc[4](loc2: ActiveSetEntry)
52CopyLoc[0](Arg0: &mut ActiveSet)
53ImmBorrowField[3](ActiveSet.total_stake: u64)
54ReadRef
55ImmBorrowLoc[4](loc2: ActiveSetEntry)
56ImmBorrowField[4](ActiveSetEntry.staked_amount: u64)
57ReadRef
58Sub
59MoveLoc[0](Arg0: &mut ActiveSet)
60MutBorrowField[3](ActiveSet.total_stake: u64)
61WriteRef
62Branch(67)
B8:
63MoveLoc[0](Arg0: &mut ActiveSet)
64Pop
65MoveLoc[8](loc6: Option<u64>)
66Call option::destroy_none<u64>(Option<u64>)
B9:
67Ret
}
 
public(friend) set_max_size(Arg0: &mut ActiveSet, Arg1: u16) {
B0:
0MoveLoc[1](Arg1: u16)
1MoveLoc[0](Arg0: &mut ActiveSet)
2MutBorrowField[5](ActiveSet.max_size: u16)
3WriteRef
4Ret
}
 
public(friend) max_size(Arg0: &ActiveSet): u16 {
B0:
0MoveLoc[0](Arg0: &ActiveSet)
1ImmBorrowField[5](ActiveSet.max_size: u16)
2ReadRef
3Ret
}
 
public(friend) size(Arg0: &ActiveSet): u16 {
B0:
0MoveLoc[0](Arg0: &ActiveSet)
1ImmBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
2VecLen(12)
3CastU16
4Ret
}
 
public(friend) active_ids(Arg0: &ActiveSet): vector<ID> {
L1: loc0: u64
L2: loc1: ID
L3: loc2: &mut vector<ID>
L4: loc3: &ActiveSetEntry
L5: loc4: u64
L6: loc5: u64
L7: loc6: vector<ID>
L8: loc7: u64
L9: loc8: &vector<ActiveSetEntry>
L10: loc9: &vector<ActiveSetEntry>
B0:
0MoveLoc[0](Arg0: &ActiveSet)
1ImmBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
2StLoc[9](loc8: &vector<ActiveSetEntry>)
3VecPack(23, 0)
4StLoc[7](loc6: vector<ID>)
5MoveLoc[9](loc8: &vector<ActiveSetEntry>)
6StLoc[10](loc9: &vector<ActiveSetEntry>)
7CopyLoc[10](loc9: &vector<ActiveSetEntry>)
8VecLen(12)
9StLoc[1](loc0: u64)
10LdU64(0)
11StLoc[6](loc5: u64)
12MoveLoc[1](loc0: u64)
13StLoc[8](loc7: u64)
B1:
14CopyLoc[6](loc5: u64)
15CopyLoc[8](loc7: u64)
16Lt
17BrFalse(38)
B2:
18CopyLoc[6](loc5: u64)
19StLoc[5](loc4: u64)
20CopyLoc[10](loc9: &vector<ActiveSetEntry>)
21MoveLoc[5](loc4: u64)
22VecImmBorrow(12)
23StLoc[4](loc3: &ActiveSetEntry)
24MutBorrowLoc[7](loc6: vector<ID>)
25StLoc[3](loc2: &mut vector<ID>)
26MoveLoc[4](loc3: &ActiveSetEntry)
27ImmBorrowField[2](ActiveSetEntry.node_id: ID)
28ReadRef
29StLoc[2](loc1: ID)
30MoveLoc[3](loc2: &mut vector<ID>)
31MoveLoc[2](loc1: ID)
32VecPushBack(23)
33MoveLoc[6](loc5: u64)
34LdU64(1)
35Add
36StLoc[6](loc5: u64)
37Branch(14)
B3:
38MoveLoc[10](loc9: &vector<ActiveSetEntry>)
39Pop
40MoveLoc[7](loc6: vector<ID>)
41Ret
}
 
public(friend) active_ids_and_stake(Arg0: &ActiveSet): vector<ID> * vector<u64> {
L1: loc0: u64
L2: loc1: vector<ID>
L3: loc2: &ActiveSetEntry
L4: loc3: u64
L5: loc4: u64
L6: loc5: vector<u64>
L7: loc6: u64
L8: loc7: &vector<ActiveSetEntry>
B0:
0VecPack(23, 0)
1StLoc[2](loc1: vector<ID>)
2LdConst[2](vector<u64>: 00)
3StLoc[6](loc5: vector<u64>)
4MoveLoc[0](Arg0: &ActiveSet)
5ImmBorrowField[1](ActiveSet.nodes: vector<ActiveSetEntry>)
6StLoc[8](loc7: &vector<ActiveSetEntry>)
7CopyLoc[8](loc7: &vector<ActiveSetEntry>)
8VecLen(12)
9StLoc[1](loc0: u64)
10LdU64(0)
11StLoc[4](loc3: u64)
12MoveLoc[1](loc0: u64)
13StLoc[7](loc6: u64)
B1:
14CopyLoc[4](loc3: u64)
15CopyLoc[7](loc6: u64)
16Lt
17BrFalse(39)
B2:
18CopyLoc[4](loc3: u64)
19StLoc[5](loc4: u64)
20CopyLoc[8](loc7: &vector<ActiveSetEntry>)
21MoveLoc[5](loc4: u64)
22VecImmBorrow(12)
23StLoc[3](loc2: &ActiveSetEntry)
24MutBorrowLoc[2](loc1: vector<ID>)
25CopyLoc[3](loc2: &ActiveSetEntry)
26ImmBorrowField[2](ActiveSetEntry.node_id: ID)
27ReadRef
28VecPushBack(23)
29MutBorrowLoc[6](loc5: vector<u64>)
30MoveLoc[3](loc2: &ActiveSetEntry)
31ImmBorrowField[4](ActiveSetEntry.staked_amount: u64)
32ReadRef
33VecPushBack(11)
34MoveLoc[4](loc3: u64)
35LdU64(1)
36Add
37StLoc[4](loc3: u64)
38Branch(14)
B3:
39MoveLoc[8](loc7: &vector<ActiveSetEntry>)
40Pop
41MoveLoc[2](loc1: vector<ID>)
42MoveLoc[6](loc5: vector<u64>)
43Ret
}
 
public(friend) threshold_stake(Arg0: &ActiveSet): u64 {
B0:
0MoveLoc[0](Arg0: &ActiveSet)
1ImmBorrowField[0](ActiveSet.threshold_stake: u64)
2ReadRef
3Ret
}
 
public(friend) total_stake(Arg0: &ActiveSet): u64 {
B0:
0MoveLoc[0](Arg0: &ActiveSet)
1ImmBorrowField[3](ActiveSet.total_stake: u64)
2ReadRef
3Ret
}
 
Constants [
0 => u64: 0
1 => u64: 1
2 => vector<u64>: 00
]
}