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

API

emode_admin

Module0x45ba…fc70
Move path
0xfe1d…80bf::emode_admin
Functions
65 public, 0 entry
Structs
2
Friend modules
None
emode_admin

Bytecode375 lines

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

// Move bytecode v6
module fe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf.emode_admin {
use f01bf3d01c8f50247fdf597e3f565b865e00b4a20a01b353d44d71c993f36e9a::float;
use fe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf::app;
use fe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf::emode;
use fe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf::error;
use fe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf::limiter;
use fe1d8929d13b00aaecd7642dec1c6d41cab82882a1b139efa46bf61dfd6380bf::market;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
use 0000000000000000000000000000000000000000000000000000000000000002::clock;
use 0000000000000000000000000000000000000000000000000000000000000002::event;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
 
struct NewEModeGroupEvent has copy, drop {
market: TypeName,
emode_group_id: u8,
oracle_base_token: u8,
time: u64,
operator: address
}
 
struct EModeUpdated<Ty0> has copy, drop {
who: address,
what: u8,
market: TypeName,
asset: TypeName,
emode_group: u8,
new: Ty0
}
 
public create_limiter(Arg0: &AdminCap, Arg1: &ProtocolApp, Arg2: u64, Arg3: u32, Arg4: u32): NewLimiter {
B0:
0MoveLoc[1](Arg1: &ProtocolApp)
1Call app::ensure_version_matches(&ProtocolApp)
2MoveLoc[2](Arg2: u64)
3MoveLoc[3](Arg3: u32)
4MoveLoc[4](Arg4: u32)
5Call limiter::create_new_limiter_change(u64, u32, u32): NewLimiter
6Ret
}
 
public onboard_new_emode_group<Ty0>(Arg0: &AdminCap, Arg1: &ProtocolApp, Arg2: &mut Market<Ty0>, Arg3: u8, Arg4: &Clock, Arg5: &mut TxContext) {
L6: loc0: u8
L7: loc1: u64
B0:
0CopyLoc[2](Arg2: &mut Market<Ty0>)
1FreezeRef
2Call market::has_circuit_break_triggered<Ty0>(&Market<Ty0>): bool
3Not
4BrFalse(6)
B1:
5Branch(16)
B2:
6MoveLoc[1](Arg1: &ProtocolApp)
7Pop
8MoveLoc[2](Arg2: &mut Market<Ty0>)
9Pop
10MoveLoc[5](Arg5: &mut TxContext)
11Pop
12MoveLoc[4](Arg4: &Clock)
13Pop
14Call error::market_under_circuit_break(): u64
15Abort
B3:
16CopyLoc[1](Arg1: &ProtocolApp)
17CopyLoc[2](Arg2: &mut Market<Ty0>)
18FreezeRef
19Call app::validate_market<Ty0>(&ProtocolApp, &Market<Ty0>)
20MoveLoc[1](Arg1: &ProtocolApp)
21Call app::ensure_version_matches(&ProtocolApp)
22MoveLoc[2](Arg2: &mut Market<Ty0>)
23Call market::emode_registry_mut<Ty0>(&mut Market<Ty0>): &mut EModeGroupRegistry
24CopyLoc[3](Arg3: u8)
25CopyLoc[5](Arg5: &mut TxContext)
26Call emode::new_emode_group(&mut EModeGroupRegistry, u8, &mut TxContext): u8
27StLoc[6](loc0: u8)
28MoveLoc[4](Arg4: &Clock)
29Call clock::timestamp_ms(&Clock): u64
30LdU64(1000)
31Div
32StLoc[7](loc1: u64)
33Call type_name::with_defining_ids<Ty0>(): TypeName
34MoveLoc[6](loc0: u8)
35MoveLoc[3](Arg3: u8)
36MoveLoc[7](loc1: u64)
37MoveLoc[5](Arg5: &mut TxContext)
38FreezeRef
39Call tx_context::sender(&TxContext): address
40Pack[0](NewEModeGroupEvent)
41Call event::emit<NewEModeGroupEvent>(NewEModeGroupEvent)
42Ret
}
 
public create_emode_params(Arg0: &AdminCap, Arg1: &ProtocolApp, Arg2: u64, Arg3: u64, Arg4: u64, Arg5: u64, Arg6: u64, Arg7: u64, Arg8: NewLimiter, Arg9: NewLimiter): NewEMode {
B0:
0CopyLoc[2](Arg2: u64)
1CopyLoc[3](Arg3: u64)
2Lt
3BrFalse(5)
B1:
4Branch(11)
B2:
5MoveLoc[1](Arg1: &ProtocolApp)
6Pop
7MoveLoc[0](Arg0: &AdminCap)
8Pop
9Call error::invalid_params_error(): u64
10Abort
B3:
11CopyLoc[3](Arg3: u64)
12CopyLoc[2](Arg2: u64)
13Sub
14CopyLoc[4](Arg4: u64)
15Lt
16BrFalse(18)
B4:
17Branch(24)
B5:
18MoveLoc[1](Arg1: &ProtocolApp)
19Pop
20MoveLoc[0](Arg0: &AdminCap)
21Pop
22Call error::invalid_params_error(): u64
23Abort
B6:
24MoveLoc[1](Arg1: &ProtocolApp)
25Call app::ensure_version_matches(&ProtocolApp)
26CopyLoc[3](Arg3: u64)
27LdConst[2](u64: 10000)
28CopyLoc[4](Arg4: u64)
29Add
30Mul
31LdConst[2](u64: 10000)
32Div
33LdConst[2](u64: 10000)
34Lt
35BrFalse(37)
B7:
36Branch(41)
B8:
37MoveLoc[0](Arg0: &AdminCap)
38Pop
39Call error::invalid_params_error(): u64
40Abort
B9:
41MoveLoc[0](Arg0: &AdminCap)
42MoveLoc[2](Arg2: u64)
43MoveLoc[3](Arg3: u64)
44MoveLoc[4](Arg4: u64)
45MoveLoc[5](Arg5: u64)
46MoveLoc[6](Arg6: u64)
47MoveLoc[7](Arg7: u64)
48MoveLoc[8](Arg8: NewLimiter)
49MoveLoc[9](Arg9: NewLimiter)
50Call create_emode_params_inner(&AdminCap, u64, u64, u64, u64, u64, u64, NewLimiter, NewLimiter): NewEMode
51Ret
}
 
public onboard_asset_to_emode_group<Ty0, Ty1>(Arg0: &AdminCap, Arg1: &ProtocolApp, Arg2: &mut Market<Ty0>, Arg3: u8, Arg4: NewEMode, Arg5: &mut TxContext) {
L6: loc0: TypeName
L7: loc1: TypeName
L8: loc2: u8
L9: loc3: address
L10: loc4: NewEMode
B0:
0CopyLoc[2](Arg2: &mut Market<Ty0>)
1FreezeRef
2Call market::has_circuit_break_triggered<Ty0>(&Market<Ty0>): bool
3Not
4BrFalse(6)
B1:
5Branch(14)
B2:
6MoveLoc[1](Arg1: &ProtocolApp)
7Pop
8MoveLoc[2](Arg2: &mut Market<Ty0>)
9Pop
10MoveLoc[5](Arg5: &mut TxContext)
11Pop
12Call error::market_under_circuit_break(): u64
13Abort
B3:
14CopyLoc[1](Arg1: &ProtocolApp)
15CopyLoc[2](Arg2: &mut Market<Ty0>)
16FreezeRef
17Call app::validate_market<Ty0>(&ProtocolApp, &Market<Ty0>)
18MoveLoc[1](Arg1: &ProtocolApp)
19Call app::ensure_version_matches(&ProtocolApp)
20MoveLoc[2](Arg2: &mut Market<Ty0>)
21Call market::emode_registry_mut<Ty0>(&mut Market<Ty0>): &mut EModeGroupRegistry
22CopyLoc[3](Arg3: u8)
23CopyLoc[4](Arg4: NewEMode)
24CopyLoc[5](Arg5: &mut TxContext)
25Call emode::support_asset<Ty1>(&mut EModeGroupRegistry, u8, NewEMode, &mut TxContext)
26Call type_name::with_defining_ids<Ty0>(): TypeName
27StLoc[6](loc0: TypeName)
28Call type_name::with_defining_ids<Ty1>(): TypeName
29StLoc[7](loc1: TypeName)
30MoveLoc[3](Arg3: u8)
31StLoc[8](loc2: u8)
32MoveLoc[5](Arg5: &mut TxContext)
33FreezeRef
34Call tx_context::sender(&TxContext): address
35StLoc[9](loc3: address)
36MoveLoc[4](Arg4: NewEMode)
37StLoc[10](loc4: NewEMode)
38MoveLoc[9](loc3: address)
39LdConst[0](u8: 0)
40MoveLoc[6](loc0: TypeName)
41MoveLoc[7](loc1: TypeName)
42MoveLoc[8](loc2: u8)
43MoveLoc[10](loc4: NewEMode)
44PackGeneric[0](EModeUpdated<NewEMode>)
45Call event::emit<EModeUpdated<NewEMode>>(EModeUpdated<NewEMode>)
46Ret
}
 
public update_asset_in_emode_group<Ty0, Ty1>(Arg0: &AdminCap, Arg1: &ProtocolApp, Arg2: &mut Market<Ty0>, Arg3: u8, Arg4: NewEMode, Arg5: &TxContext) {
L6: loc0: TypeName
L7: loc1: u8
L8: loc2: TypeName
L9: loc3: address
L10: loc4: NewEMode
L11: loc5: TypeName
B0:
0CopyLoc[2](Arg2: &mut Market<Ty0>)
1FreezeRef
2Call market::has_circuit_break_triggered<Ty0>(&Market<Ty0>): bool
3Not
4BrFalse(6)
B1:
5Branch(14)
B2:
6MoveLoc[1](Arg1: &ProtocolApp)
7Pop
8MoveLoc[2](Arg2: &mut Market<Ty0>)
9Pop
10MoveLoc[5](Arg5: &TxContext)
11Pop
12Call error::market_under_circuit_break(): u64
13Abort
B3:
14CopyLoc[1](Arg1: &ProtocolApp)
15CopyLoc[2](Arg2: &mut Market<Ty0>)
16FreezeRef
17Call app::validate_market<Ty0>(&ProtocolApp, &Market<Ty0>)
18MoveLoc[1](Arg1: &ProtocolApp)
19Call app::ensure_version_matches(&ProtocolApp)
20Call type_name::with_defining_ids<Ty1>(): TypeName
21StLoc[11](loc5: TypeName)
22MoveLoc[2](Arg2: &mut Market<Ty0>)
23Call market::emode_registry_mut<Ty0>(&mut Market<Ty0>): &mut EModeGroupRegistry
24CopyLoc[3](Arg3: u8)
25CopyLoc[11](loc5: TypeName)
26Call emode::borrow_mut_emode(&mut EModeGroupRegistry, u8, TypeName): &mut EMode
27CopyLoc[4](Arg4: NewEMode)
28Call emode::update(&mut EMode, NewEMode)
29Call type_name::with_defining_ids<Ty0>(): TypeName
30StLoc[6](loc0: TypeName)
31MoveLoc[3](Arg3: u8)
32StLoc[7](loc1: u8)
33MoveLoc[11](loc5: TypeName)
34StLoc[8](loc2: TypeName)
35MoveLoc[5](Arg5: &TxContext)
36Call tx_context::sender(&TxContext): address
37StLoc[9](loc3: address)
38MoveLoc[4](Arg4: NewEMode)
39StLoc[10](loc4: NewEMode)
40MoveLoc[9](loc3: address)
41LdConst[1](u8: 1)
42MoveLoc[6](loc0: TypeName)
43MoveLoc[8](loc2: TypeName)
44MoveLoc[7](loc1: u8)
45MoveLoc[10](loc4: NewEMode)
46PackGeneric[0](EModeUpdated<NewEMode>)
47Call event::emit<EModeUpdated<NewEMode>>(EModeUpdated<NewEMode>)
48Ret
}
 
create_emode_params_inner(Arg0: &AdminCap, Arg1: u64, Arg2: u64, Arg3: u64, Arg4: u64, Arg5: u64, Arg6: u64, Arg7: NewLimiter, Arg8: NewLimiter): NewEMode {
L9: loc0: Decimal
L10: loc1: Decimal
L11: loc2: Decimal
L12: loc3: Decimal
L13: loc4: Decimal
B0:
0CopyLoc[1](Arg1: u64)
1LdConst[2](u64: 10000)
2Lt
3BrFalse(5)
B1:
4Branch(7)
B2:
5Call error::invalid_params_error(): u64
6Abort
B3:
7CopyLoc[2](Arg2: u64)
8LdConst[2](u64: 10000)
9Lt
10BrFalse(12)
B4:
11Branch(14)
B5:
12Call error::invalid_params_error(): u64
13Abort
B6:
14CopyLoc[3](Arg3: u64)
15LdConst[2](u64: 10000)
16Lt
17BrFalse(19)
B7:
18Branch(21)
B8:
19Call error::invalid_params_error(): u64
20Abort
B9:
21CopyLoc[5](Arg5: u64)
22LdConst[2](u64: 10000)
23Ge
24BrFalse(26)
B10:
25Branch(28)
B11:
26Call error::invalid_params_error(): u64
27Abort
B12:
28CopyLoc[6](Arg6: u64)
29LdConst[2](u64: 10000)
30Lt
31BrFalse(33)
B13:
32Branch(35)
B14:
33Call error::invalid_params_error(): u64
34Abort
B15:
35MoveLoc[1](Arg1: u64)
36LdConst[2](u64: 10000)
37Call float::from_quotient(u64, u64): Decimal
38StLoc[10](loc1: Decimal)
39MoveLoc[2](Arg2: u64)
40LdConst[2](u64: 10000)
41Call float::from_quotient(u64, u64): Decimal
42StLoc[12](loc3: Decimal)
43MoveLoc[3](Arg3: u64)
44LdConst[2](u64: 10000)
45Call float::from_quotient(u64, u64): Decimal
46StLoc[13](loc4: Decimal)
47MoveLoc[5](Arg5: u64)
48LdConst[2](u64: 10000)
49Call float::from_quotient(u64, u64): Decimal
50StLoc[9](loc0: Decimal)
51MoveLoc[6](Arg6: u64)
52LdConst[2](u64: 10000)
53Call float::from_quotient(u64, u64): Decimal
54StLoc[11](loc2: Decimal)
55MoveLoc[10](loc1: Decimal)
56MoveLoc[12](loc3: Decimal)
57MoveLoc[13](loc4: Decimal)
58MoveLoc[4](Arg4: u64)
59MoveLoc[9](loc0: Decimal)
60MoveLoc[11](loc2: Decimal)
61MoveLoc[7](Arg7: NewLimiter)
62MoveLoc[8](Arg8: NewLimiter)
63Call emode::new_emode_params(Decimal, Decimal, Decimal, u64, Decimal, Decimal, NewLimiter, NewLimiter): NewEMode
64Ret
}
 
Constants [
0 => u8: 0
1 => u8: 1
2 => u64: 10000
]
}