staking
Module0xb39d…06f6
- Move path
- 0xaec9…5faa::staking
- Functions
- 53 public, 0 entry
- Structs
- 1
- Friend modules
- router
staking
Bytecode292 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v6
module aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa.staking {
use aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa::admin;
use aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa::csui;
use aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa::events;
use aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa::protocol_fee;
use aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa::treasury;
use aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa::version;
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::clock;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::sui;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
use 0000000000000000000000000000000000000000000000000000000000000002::types;
struct StakeConfig has store, key {
id: UID,
version: u64,
tge_time: u64,
ratio_base_18: u64,
max_stake_limit: u64,
total_staked: u64
}
check_version(Arg0: &StakeConfig) {
B0:
0MoveLoc[0](Arg0: &StakeConfig)
1ImmBorrowField[0](StakeConfig.version: u64)
2ReadRef
3Call version::check_version(u64)
4Ret
}
public change_stake_config(Arg0: &AdminCap, Arg1: &mut StakeConfig, Arg2: &mut Option<u64>, Arg3: &mut Option<u64>, Arg4: &mut Option<u64>, Arg5: &mut Option<u64>) {
B0:
0CopyLoc[2](Arg2: &mut Option<u64>)
1FreezeRef
2Call option::is_some<u64>(&Option<u64>): bool
3BrFalse(10)
B1:
4MoveLoc[2](Arg2: &mut Option<u64>)
5Call option::extract<u64>(&mut Option<u64>): u64
6CopyLoc[1](Arg1: &mut StakeConfig)
7MutBorrowField[0](StakeConfig.version: u64)
8WriteRef
9Branch(12)
B2:
10MoveLoc[2](Arg2: &mut Option<u64>)
11Pop
B3:
12CopyLoc[3](Arg3: &mut Option<u64>)
13FreezeRef
14Call option::is_some<u64>(&Option<u64>): bool
15BrFalse(22)
B4:
16MoveLoc[3](Arg3: &mut Option<u64>)
17Call option::extract<u64>(&mut Option<u64>): u64
18CopyLoc[1](Arg1: &mut StakeConfig)
19MutBorrowField[1](StakeConfig.tge_time: u64)
20WriteRef
21Branch(24)
B5:
22MoveLoc[3](Arg3: &mut Option<u64>)
23Pop
B6:
24CopyLoc[4](Arg4: &mut Option<u64>)
25FreezeRef
26Call option::is_some<u64>(&Option<u64>): bool
27BrFalse(34)
B7:
28MoveLoc[4](Arg4: &mut Option<u64>)
29Call option::extract<u64>(&mut Option<u64>): u64
30CopyLoc[1](Arg1: &mut StakeConfig)
31MutBorrowField[2](StakeConfig.ratio_base_18: u64)
32WriteRef
33Branch(36)
B8:
34MoveLoc[4](Arg4: &mut Option<u64>)
35Pop
B9:
36CopyLoc[5](Arg5: &mut Option<u64>)
37FreezeRef
38Call option::is_some<u64>(&Option<u64>): bool
39BrFalse(46)
B10:
40MoveLoc[5](Arg5: &mut Option<u64>)
41Call option::extract<u64>(&mut Option<u64>): u64
42MoveLoc[1](Arg1: &mut StakeConfig)
43MutBorrowField[3](StakeConfig.max_stake_limit: u64)
44WriteRef
45Branch(50)
B11:
46MoveLoc[1](Arg1: &mut StakeConfig)
47Pop
48MoveLoc[5](Arg5: &mut Option<u64>)
49Pop
B12:
50Ret
}
public(friend) create_config<Ty0: drop>(Arg0: &Ty0, Arg1: &mut TxContext): StakeConfig {
B0:
0MoveLoc[0](Arg0: &Ty0)
1Call types::is_one_time_witness<Ty0>(&Ty0): bool
2BrFalse(4)
B1:
3Branch(8)
B2:
4MoveLoc[1](Arg1: &mut TxContext)
5Pop
6LdU64(1)
7Abort
B3:
8MoveLoc[1](Arg1: &mut TxContext)
9Call object::new(&mut TxContext): UID
10Call version::current_version(): u64
11LdConst[0](u64: 1746..)
12LdConst[1](u64: 2500..)
13LdU64(180000000000000)
14LdU64(0)
15Pack[0](StakeConfig)
16Ret
}
public stake(Arg0: &mut CSUITreasuryCoinfig, Arg1: &mut StakeConfig, Arg2: &mut Treasury, Arg3: Coin<SUI>, Arg4: &Clock, Arg5: &mut TxContext): Coin<CSUI> {
L6: loc0: u64
L7: loc1: Coin<CSUI>
L8: loc2: u64
B0:
0CopyLoc[1](Arg1: &mut StakeConfig)
1FreezeRef
2Call check_version(&StakeConfig)
3LdU64(1000000000)
4CopyLoc[1](Arg1: &mut StakeConfig)
5ImmBorrowField[2](StakeConfig.ratio_base_18: u64)
6ReadRef
7Call protocol_fee::take_percent_base_18(u64, u64): u64
8MoveLoc[4](Arg4: &Clock)
9Call clock::timestamp_ms(&Clock): u64
10CopyLoc[1](Arg1: &mut StakeConfig)
11ImmBorrowField[1](StakeConfig.tge_time: u64)
12ReadRef
13Sub
14Mul
15LdConst[2](u64: 3153..)
16Div
17StLoc[8](loc2: u64)
18ImmBorrowLoc[3](Arg3: Coin<SUI>)
19Call coin::value<SUI>(&Coin<SUI>): u64
20CastU128
21LdU128(1000000000)
22Mul
23LdU128(1000000000)
24MoveLoc[8](loc2: u64)
25CastU128
26Add
27Div
28CastU64
29StLoc[6](loc0: u64)
30ImmBorrowLoc[3](Arg3: Coin<SUI>)
31Call coin::value<SUI>(&Coin<SUI>): u64
32CopyLoc[1](Arg1: &mut StakeConfig)
33ImmBorrowField[4](StakeConfig.total_staked: u64)
34ReadRef
35Add
36CopyLoc[1](Arg1: &mut StakeConfig)
37MutBorrowField[4](StakeConfig.total_staked: u64)
38WriteRef
39CopyLoc[1](Arg1: &mut StakeConfig)
40ImmBorrowField[4](StakeConfig.total_staked: u64)
41ReadRef
42MoveLoc[1](Arg1: &mut StakeConfig)
43ImmBorrowField[3](StakeConfig.max_stake_limit: u64)
44ReadRef
45Le
46BrFalse(48)
B1:
47Branch(56)
B2:
48MoveLoc[2](Arg2: &mut Treasury)
49Pop
50MoveLoc[5](Arg5: &mut TxContext)
51Pop
52MoveLoc[0](Arg0: &mut CSUITreasuryCoinfig)
53Pop
54LdU64(0)
55Abort
B3:
56MoveLoc[2](Arg2: &mut Treasury)
57MoveLoc[3](Arg3: Coin<SUI>)
58Call treasury::deposit<SUI>(&mut Treasury, Coin<SUI>)
59MoveLoc[0](Arg0: &mut CSUITreasuryCoinfig)
60CopyLoc[6](loc0: u64)
61CopyLoc[5](Arg5: &mut TxContext)
62Call csui::mint_csui(&mut CSUITreasuryCoinfig, u64, &mut TxContext): Coin<CSUI>
63StLoc[7](loc1: Coin<CSUI>)
64MoveLoc[6](loc0: u64)
65MoveLoc[5](Arg5: &mut TxContext)
66FreezeRef
67Call events::emit_stake_event(u64, &TxContext)
68MoveLoc[7](loc1: Coin<CSUI>)
69Ret
}
public unstake(Arg0: &mut CSUITreasuryCoinfig, Arg1: &mut StakeConfig, Arg2: &mut Treasury, Arg3: Coin<CSUI>, Arg4: &Clock, Arg5: &mut TxContext): Coin<SUI> {
L6: loc0: u64
L7: loc1: Balance<SUI>
L8: loc2: u64
B0:
0CopyLoc[1](Arg1: &mut StakeConfig)
1FreezeRef
2Call check_version(&StakeConfig)
3LdU64(1000000000)
4CopyLoc[1](Arg1: &mut StakeConfig)
5ImmBorrowField[2](StakeConfig.ratio_base_18: u64)
6ReadRef
7Call protocol_fee::take_percent_base_18(u64, u64): u64
8MoveLoc[4](Arg4: &Clock)
9Call clock::timestamp_ms(&Clock): u64
10CopyLoc[1](Arg1: &mut StakeConfig)
11ImmBorrowField[1](StakeConfig.tge_time: u64)
12ReadRef
13Sub
14Mul
15LdConst[2](u64: 3153..)
16Div
17StLoc[8](loc2: u64)
18ImmBorrowLoc[3](Arg3: Coin<CSUI>)
19Call coin::value<CSUI>(&Coin<CSUI>): u64
20CastU128
21LdU128(1000000000)
22MoveLoc[8](loc2: u64)
23CastU128
24Add
25Mul
26LdU128(1000000000)
27Div
28CastU64
29StLoc[6](loc0: u64)
30CopyLoc[1](Arg1: &mut StakeConfig)
31ImmBorrowField[4](StakeConfig.total_staked: u64)
32ReadRef
33CopyLoc[6](loc0: u64)
34Sub
35CopyLoc[1](Arg1: &mut StakeConfig)
36MutBorrowField[4](StakeConfig.total_staked: u64)
37WriteRef
38MoveLoc[1](Arg1: &mut StakeConfig)
39ImmBorrowField[4](StakeConfig.total_staked: u64)
40ReadRef
41CopyLoc[6](loc0: u64)
42Ge
43BrFalse(45)
B1:
44Branch(53)
B2:
45MoveLoc[2](Arg2: &mut Treasury)
46Pop
47MoveLoc[5](Arg5: &mut TxContext)
48Pop
49MoveLoc[0](Arg0: &mut CSUITreasuryCoinfig)
50Pop
51LdU64(0)
52Abort
B3:
53MoveLoc[0](Arg0: &mut CSUITreasuryCoinfig)
54MoveLoc[3](Arg3: Coin<CSUI>)
55Call csui::burn_csui(&mut CSUITreasuryCoinfig, Coin<CSUI>)
56MoveLoc[2](Arg2: &mut Treasury)
57Call treasury::borrow_from_treasury<SUI>(&mut Treasury): &mut Balance<SUI>
58CopyLoc[6](loc0: u64)
59Call balance::split<SUI>(&mut Balance<SUI>, u64): Balance<SUI>
60StLoc[7](loc1: Balance<SUI>)
61MoveLoc[6](loc0: u64)
62CopyLoc[5](Arg5: &mut TxContext)
63FreezeRef
64Call events::emit_unstake_event(u64, &TxContext)
65MoveLoc[7](loc1: Balance<SUI>)
66MoveLoc[5](Arg5: &mut TxContext)
67Call coin::from_balance<SUI>(Balance<SUI>, &mut TxContext): Coin<SUI>
68Ret
}
Constants [
0 => u64: 1746057600000
1 => u64: 25000000000000000
2 => u64: 31536000000
]
}