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

Package 0x01ac…6d5c

pair_parameter_helper

Move path
0x5a5c…83ac::pair_parameter_helper
Functions
2716 public, 0 entry
Structs
1
Friend modules
lb_pair
pair_parameter_helper

Bytecode484 lines

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

// Move bytecode v6
module 5a5c1d10e4782dbbdec3eb8327ede04bd078b294b97cfdba447b11b846b383ac.pair_parameter_helper {
use 5a5c1d10e4782dbbdec3eb8327ede04bd078b294b97cfdba447b11b846b383ac::constants;
use 5a5c1d10e4782dbbdec3eb8327ede04bd078b294b97cfdba447b11b846b383ac::safe_math;
use 0000000000000000000000000000000000000000000000000000000000000001::u32;
use 0000000000000000000000000000000000000000000000000000000000000001::u64;
 
struct PairParameters has copy, drop, store {
base_factor: u32,
filter_period: u16,
decay_period: u16,
reduction_factor: u16,
variable_fee_control: u32,
protocol_share: u64,
max_volatility_accumulator: u32,
volatility_accumulator: u32,
volatility_reference: u32,
id_reference: u32,
time_of_last_update: u64,
active_id: u32
}
 
public(friend) new(Arg0: u32): PairParameters {
B0:
0LdU32(0)
1LdU16(0)
2LdU16(0)
3LdU16(0)
4LdU32(0)
5LdU64(0)
6LdU32(0)
7LdU32(0)
8LdU32(0)
9CopyLoc[0](Arg0: u32)
10LdU64(0)
11MoveLoc[0](Arg0: u32)
12Pack[0](PairParameters)
13Ret
}
 
public get_base_factor(Arg0: &PairParameters): u32 {
B0:
0MoveLoc[0](Arg0: &PairParameters)
1ImmBorrowField[0](PairParameters.base_factor: u32)
2ReadRef
3Ret
}
 
public get_filter_period(Arg0: &PairParameters): u16 {
B0:
0MoveLoc[0](Arg0: &PairParameters)
1ImmBorrowField[1](PairParameters.filter_period: u16)
2ReadRef
3Ret
}
 
public get_decay_period(Arg0: &PairParameters): u16 {
B0:
0MoveLoc[0](Arg0: &PairParameters)
1ImmBorrowField[2](PairParameters.decay_period: u16)
2ReadRef
3Ret
}
 
public get_reduction_factor(Arg0: &PairParameters): u16 {
B0:
0MoveLoc[0](Arg0: &PairParameters)
1ImmBorrowField[3](PairParameters.reduction_factor: u16)
2ReadRef
3Ret
}
 
public get_variable_fee_control(Arg0: &PairParameters): u32 {
B0:
0MoveLoc[0](Arg0: &PairParameters)
1ImmBorrowField[4](PairParameters.variable_fee_control: u32)
2ReadRef
3Ret
}
 
public get_protocol_share(Arg0: &PairParameters): u64 {
B0:
0MoveLoc[0](Arg0: &PairParameters)
1ImmBorrowField[5](PairParameters.protocol_share: u64)
2ReadRef
3Ret
}
 
public get_max_volatility_accumulator(Arg0: &PairParameters): u32 {
B0:
0MoveLoc[0](Arg0: &PairParameters)
1ImmBorrowField[6](PairParameters.max_volatility_accumulator: u32)
2ReadRef
3Ret
}
 
public get_volatility_accumulator(Arg0: &PairParameters): u32 {
B0:
0MoveLoc[0](Arg0: &PairParameters)
1ImmBorrowField[7](PairParameters.volatility_accumulator: u32)
2ReadRef
3Ret
}
 
public get_volatility_reference(Arg0: &PairParameters): u32 {
B0:
0MoveLoc[0](Arg0: &PairParameters)
1ImmBorrowField[8](PairParameters.volatility_reference: u32)
2ReadRef
3Ret
}
 
public get_id_reference(Arg0: &PairParameters): u32 {
B0:
0MoveLoc[0](Arg0: &PairParameters)
1ImmBorrowField[9](PairParameters.id_reference: u32)
2ReadRef
3Ret
}
 
public get_time_of_last_update(Arg0: &PairParameters): u64 {
B0:
0MoveLoc[0](Arg0: &PairParameters)
1ImmBorrowField[10](PairParameters.time_of_last_update: u64)
2ReadRef
3Ret
}
 
public get_active_id(Arg0: &PairParameters): u32 {
B0:
0MoveLoc[0](Arg0: &PairParameters)
1ImmBorrowField[11](PairParameters.active_id: u32)
2ReadRef
3Ret
}
 
public get_delta_id(Arg0: &PairParameters, Arg1: u32): u32 {
L2: loc0: u32
L3: loc1: u32
B0:
0MoveLoc[0](Arg0: &PairParameters)
1ImmBorrowField[11](PairParameters.active_id: u32)
2ReadRef
3StLoc[3](loc1: u32)
4CopyLoc[1](Arg1: u32)
5CopyLoc[3](loc1: u32)
6Gt
7BrFalse(13)
B1:
8MoveLoc[1](Arg1: u32)
9MoveLoc[3](loc1: u32)
10Sub
11StLoc[2](loc0: u32)
12Branch(17)
B2:
13MoveLoc[3](loc1: u32)
14MoveLoc[1](Arg1: u32)
15Sub
16StLoc[2](loc0: u32)
B3:
17MoveLoc[2](loc0: u32)
18Ret
}
 
public(friend) set_volatility_reference(Arg0: &mut PairParameters, Arg1: u32) {
B0:
0CopyLoc[1](Arg1: u32)
1LdU32(1048575)
2Le
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut PairParameters)
6Pop
7LdConst[0](u64: 900)
8Abort
B3:
9MoveLoc[1](Arg1: u32)
10MoveLoc[0](Arg0: &mut PairParameters)
11MutBorrowField[8](PairParameters.volatility_reference: u32)
12WriteRef
13Ret
}
 
public(friend) set_volatility_accumulator(Arg0: &mut PairParameters, Arg1: u32) {
B0:
0CopyLoc[1](Arg1: u32)
1LdU32(1048575)
2Le
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut PairParameters)
6Pop
7LdConst[0](u64: 900)
8Abort
B3:
9MoveLoc[1](Arg1: u32)
10MoveLoc[0](Arg0: &mut PairParameters)
11MutBorrowField[7](PairParameters.volatility_accumulator: u32)
12WriteRef
13Ret
}
 
public(friend) set_active_id(Arg0: &mut PairParameters, Arg1: u32) {
B0:
0MoveLoc[1](Arg1: u32)
1MoveLoc[0](Arg0: &mut PairParameters)
2MutBorrowField[11](PairParameters.active_id: u32)
3WriteRef
4Ret
}
 
public(friend) set_static_fee_parameters(Arg0: &mut PairParameters, Arg1: u32, Arg2: u16, Arg3: u16, Arg4: u16, Arg5: u32, Arg6: u16, Arg7: u32) {
B0:
0MoveLoc[1](Arg1: u32)
1CopyLoc[0](Arg0: &mut PairParameters)
2MutBorrowField[0](PairParameters.base_factor: u32)
3WriteRef
4MoveLoc[2](Arg2: u16)
5CopyLoc[0](Arg0: &mut PairParameters)
6MutBorrowField[1](PairParameters.filter_period: u16)
7WriteRef
8MoveLoc[3](Arg3: u16)
9CopyLoc[0](Arg0: &mut PairParameters)
10MutBorrowField[2](PairParameters.decay_period: u16)
11WriteRef
12MoveLoc[4](Arg4: u16)
13CopyLoc[0](Arg0: &mut PairParameters)
14MutBorrowField[3](PairParameters.reduction_factor: u16)
15WriteRef
16MoveLoc[5](Arg5: u32)
17CopyLoc[0](Arg0: &mut PairParameters)
18MutBorrowField[4](PairParameters.variable_fee_control: u32)
19WriteRef
20MoveLoc[6](Arg6: u16)
21CastU64
22CopyLoc[0](Arg0: &mut PairParameters)
23MutBorrowField[5](PairParameters.protocol_share: u64)
24WriteRef
25MoveLoc[7](Arg7: u32)
26MoveLoc[0](Arg0: &mut PairParameters)
27MutBorrowField[6](PairParameters.max_volatility_accumulator: u32)
28WriteRef
29Ret
}
 
public get_base_fee(Arg0: &PairParameters, Arg1: u16): u64 {
L2: loc0: u64
L3: loc1: u64
B0:
0MoveLoc[0](Arg0: &PairParameters)
1ImmBorrowField[0](PairParameters.base_factor: u32)
2ReadRef
3CastU64
4StLoc[2](loc0: u64)
5MoveLoc[1](Arg1: u16)
6CastU64
7StLoc[3](loc1: u64)
8MoveLoc[2](loc0: u64)
9MoveLoc[3](loc1: u64)
10Call safe_math::mul_u64(u64, u64): u64
11Ret
}
 
public get_variable_fee(Arg0: &PairParameters, Arg1: u16): u64 {
L2: loc0: u64
L3: loc1: u64
L4: loc2: u64
L5: loc3: u64
L6: loc4: u64
B0:
0CopyLoc[0](Arg0: &PairParameters)
1ImmBorrowField[4](PairParameters.variable_fee_control: u32)
2ReadRef
3CastU64
4StLoc[5](loc3: u64)
5CopyLoc[5](loc3: u64)
6LdU64(0)
7Neq
8BrFalse(32)
B1:
9MoveLoc[0](Arg0: &PairParameters)
10ImmBorrowField[7](PairParameters.volatility_accumulator: u32)
11ReadRef
12CastU64
13StLoc[6](loc4: u64)
14MoveLoc[1](Arg1: u16)
15CastU64
16StLoc[4](loc2: u64)
17MoveLoc[6](loc4: u64)
18MoveLoc[4](loc2: u64)
19Call safe_math::mul_u64(u64, u64): u64
20StLoc[3](loc1: u64)
21CopyLoc[3](loc1: u64)
22MoveLoc[3](loc1: u64)
23Call safe_math::mul_u64(u64, u64): u64
24MoveLoc[5](loc3: u64)
25Call safe_math::mul_u64(u64, u64): u64
26LdU64(99)
27Add
28LdU64(100)
29Div
30StLoc[2](loc0: u64)
31Branch(36)
B2:
32MoveLoc[0](Arg0: &PairParameters)
33Pop
34LdU64(0)
35StLoc[2](loc0: u64)
B3:
36MoveLoc[2](loc0: u64)
37Ret
}
 
public get_total_fee_rate(Arg0: &PairParameters, Arg1: u16): u64 {
L2: loc0: u64
L3: loc1: u64
B0:
0CopyLoc[0](Arg0: &PairParameters)
1CopyLoc[1](Arg1: u16)
2Call get_base_fee(&PairParameters, u16): u64
3StLoc[2](loc0: u64)
4MoveLoc[0](Arg0: &PairParameters)
5MoveLoc[1](Arg1: u16)
6Call get_variable_fee(&PairParameters, u16): u64
7StLoc[3](loc1: u64)
8MoveLoc[2](loc0: u64)
9MoveLoc[3](loc1: u64)
10Call safe_math::add_u64(u64, u64): u64
11Call constants::max_fee_rate(): u64
12Call u64::min(u64, u64): u64
13Ret
}
 
public(friend) update_id_reference(Arg0: &mut PairParameters) {
B0:
0CopyLoc[0](Arg0: &mut PairParameters)
1ImmBorrowField[11](PairParameters.active_id: u32)
2ReadRef
3MoveLoc[0](Arg0: &mut PairParameters)
4MutBorrowField[9](PairParameters.id_reference: u32)
5WriteRef
6Ret
}
 
public(friend) update_time_of_last_update(Arg0: &mut PairParameters, Arg1: u64) {
B0:
0MoveLoc[1](Arg1: u64)
1MoveLoc[0](Arg0: &mut PairParameters)
2MutBorrowField[10](PairParameters.time_of_last_update: u64)
3WriteRef
4Ret
}
 
public(friend) update_volatility_reference(Arg0: &mut PairParameters) {
L1: loc0: u64
L2: loc1: u64
L3: loc2: u64
B0:
0CopyLoc[0](Arg0: &mut PairParameters)
1ImmBorrowField[7](PairParameters.volatility_accumulator: u32)
2ReadRef
3CastU64
4StLoc[3](loc2: u64)
5CopyLoc[0](Arg0: &mut PairParameters)
6ImmBorrowField[3](PairParameters.reduction_factor: u16)
7ReadRef
8CastU64
9StLoc[2](loc1: u64)
10Call constants::basis_point_max(): u64
11StLoc[1](loc0: u64)
12MoveLoc[3](loc2: u64)
13MoveLoc[2](loc1: u64)
14MoveLoc[1](loc0: u64)
15Call safe_math::mul_div_u64(u64, u64, u64): u64
16Call safe_math::u64_to_u32(u64): u32
17MoveLoc[0](Arg0: &mut PairParameters)
18MutBorrowField[8](PairParameters.volatility_reference: u32)
19WriteRef
20Ret
}
 
public(friend) update_volatility_accumulator(Arg0: &mut PairParameters, Arg1: u32) {
L2: loc0: u64
L3: loc1: u32
L4: loc2: u64
L5: loc3: u64
L6: loc4: u64
B0:
0MoveLoc[1](Arg1: u32)
1CopyLoc[0](Arg0: &mut PairParameters)
2ImmBorrowField[9](PairParameters.id_reference: u32)
3ReadRef
4Call u32::diff(u32, u32): u32
5StLoc[3](loc1: u32)
6CopyLoc[0](Arg0: &mut PairParameters)
7ImmBorrowField[8](PairParameters.volatility_reference: u32)
8ReadRef
9CastU64
10StLoc[6](loc4: u64)
11MoveLoc[3](loc1: u32)
12CastU64
13StLoc[2](loc0: u64)
14MoveLoc[6](loc4: u64)
15MoveLoc[2](loc0: u64)
16LdU64(10)
17Call safe_math::mul_u64(u64, u64): u64
18Call safe_math::add_u64(u64, u64): u64
19StLoc[5](loc3: u64)
20CopyLoc[0](Arg0: &mut PairParameters)
21ImmBorrowField[6](PairParameters.max_volatility_accumulator: u32)
22ReadRef
23CastU64
24StLoc[4](loc2: u64)
25MoveLoc[5](loc3: u64)
26MoveLoc[4](loc2: u64)
27Call u64::min(u64, u64): u64
28Call safe_math::u64_to_u32(u64): u32
29MoveLoc[0](Arg0: &mut PairParameters)
30MutBorrowField[7](PairParameters.volatility_accumulator: u32)
31WriteRef
32Ret
}
 
public(friend) update_references(Arg0: &mut PairParameters, Arg1: u64) {
L2: loc0: u64
B0:
0CopyLoc[1](Arg1: u64)
1CopyLoc[0](Arg0: &mut PairParameters)
2ImmBorrowField[10](PairParameters.time_of_last_update: u64)
3ReadRef
4Sub
5StLoc[2](loc0: u64)
6CopyLoc[2](loc0: u64)
7CopyLoc[0](Arg0: &mut PairParameters)
8ImmBorrowField[1](PairParameters.filter_period: u16)
9ReadRef
10CastU64
11Ge
12BrFalse(28)
B1:
13CopyLoc[0](Arg0: &mut PairParameters)
14Call update_id_reference(&mut PairParameters)
15MoveLoc[2](loc0: u64)
16CopyLoc[0](Arg0: &mut PairParameters)
17ImmBorrowField[2](PairParameters.decay_period: u16)
18ReadRef
19CastU64
20Lt
21BrFalse(25)
B2:
22CopyLoc[0](Arg0: &mut PairParameters)
23Call update_volatility_reference(&mut PairParameters)
24Branch(28)
B3:
25CopyLoc[0](Arg0: &mut PairParameters)
26LdU32(0)
27Call set_volatility_reference(&mut PairParameters, u32)
B4:
28MoveLoc[0](Arg0: &mut PairParameters)
29MoveLoc[1](Arg1: u64)
30Call update_time_of_last_update(&mut PairParameters, u64)
31Ret
}
 
public(friend) update_volatility_parameters(Arg0: &mut PairParameters, Arg1: u32, Arg2: u64) {
B0:
0CopyLoc[0](Arg0: &mut PairParameters)
1MoveLoc[2](Arg2: u64)
2Call update_references(&mut PairParameters, u64)
3MoveLoc[0](Arg0: &mut PairParameters)
4MoveLoc[1](Arg1: u32)
5Call update_volatility_accumulator(&mut PairParameters, u32)
6Ret
}
 
Constants [
0 => u64: 900
]
}