staking
Module0x9193…6edc
- Move path
- 0x9193…6edc::staking
- Functions
- 44 public, 0 entry
- Structs
- 3
- Friend modules
- None
staking
Bytecode216 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v6
module 9193d45dad53d69b83728cc015e398196fc7a35c06f1e758dfd5f71c51cf6edc.staking {
use 66f3283a3a4ed92aa4de92a3105f90dc1dd07921a43585785b206d9d708a3193::chakra_nft;
use 66f3283a3a4ed92aa4de92a3105f90dc1dd07921a43585785b206d9d708a3193::leaderboard;
use 9193d45dad53d69b83728cc015e398196fc7a35c06f1e758dfd5f71c51cf6edc::staking_pool;
use 9193d45dad53d69b83728cc015e398196fc7a35c06f1e758dfd5f71c51cf6edc::version;
use 0000000000000000000000000000000000000000000000000000000000000002::clock;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::event;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
struct StakeEvent<phantom Ty0> has copy, drop {
pool_id: ID,
user: address,
amount: u64,
duration: u64,
chakra_level: u64,
timestamp: u64,
position_id: ID
}
struct UnstakeEvent<phantom Ty0> has copy, drop {
pool_id: ID,
user: address,
amount: u64,
timestamp: u64,
position_id: ID
}
struct ClaimEvent<phantom Ty0> has copy, drop {
pool_id: ID,
user: address,
amount: u64,
timestamp: u64,
position_id: ID
}
public stake<Ty0>(Arg0: &mut StakingPool<Ty0>, Arg1: Coin<Ty0>, Arg2: u64, Arg3: &Version, Arg4: &Clock, Arg5: &mut TxContext): StakedPosition<Ty0> {
L6: loc0: u64
L7: loc1: StakedPosition<Ty0>
B0:
0MoveLoc[3](Arg3: &Version)
1Call version::assert_current_version(&Version)
2ImmBorrowLoc[1](Arg1: Coin<Ty0>)
3Call coin::value<Ty0>(&Coin<Ty0>): u64
4StLoc[6](loc0: u64)
5CopyLoc[0](Arg0: &mut StakingPool<Ty0>)
6MoveLoc[1](Arg1: Coin<Ty0>)
7CopyLoc[2](Arg2: u64)
8LdU64(0)
9CopyLoc[4](Arg4: &Clock)
10CopyLoc[5](Arg5: &mut TxContext)
11Call staking_pool::stake<Ty0>(&mut StakingPool<Ty0>, Coin<Ty0>, u64, u64, &Clock, &mut TxContext): StakedPosition<Ty0>
12StLoc[7](loc1: StakedPosition<Ty0>)
13MoveLoc[0](Arg0: &mut StakingPool<Ty0>)
14FreezeRef
15Call object::id<StakingPool<Ty0>>(&StakingPool<Ty0>): ID
16MoveLoc[5](Arg5: &mut TxContext)
17FreezeRef
18Call tx_context::sender(&TxContext): address
19MoveLoc[6](loc0: u64)
20MoveLoc[2](Arg2: u64)
21LdU64(0)
22MoveLoc[4](Arg4: &Clock)
23Call clock::timestamp_ms(&Clock): u64
24ImmBorrowLoc[7](loc1: StakedPosition<Ty0>)
25Call object::id<StakedPosition<Ty0>>(&StakedPosition<Ty0>): ID
26PackGeneric[0](StakeEvent<Ty0>)
27Call event::emit<StakeEvent<Ty0>>(StakeEvent<Ty0>)
28MoveLoc[7](loc1: StakedPosition<Ty0>)
29Ret
}
public stake_with_chakra<Ty0>(Arg0: &mut StakingPool<Ty0>, Arg1: &ChakraNFT, Arg2: &Leaderboard, Arg3: &GlobalConfig, Arg4: Coin<Ty0>, Arg5: u64, Arg6: &Version, Arg7: &Clock, Arg8: &mut TxContext): StakedPosition<Ty0> {
L9: loc0: bool
L10: loc1: u64
L11: loc2: u64
L12: loc3: StakedPosition<Ty0>
B0:
0MoveLoc[6](Arg6: &Version)
1Call version::assert_current_version(&Version)
2ImmBorrowLoc[4](Arg4: Coin<Ty0>)
3Call coin::value<Ty0>(&Coin<Ty0>): u64
4StLoc[10](loc1: u64)
5MoveLoc[2](Arg2: &Leaderboard)
6MoveLoc[3](Arg3: &GlobalConfig)
7MoveLoc[1](Arg1: &ChakraNFT)
8Call leaderboard::get_chakra_level(&Leaderboard, &GlobalConfig, &ChakraNFT): u8
9CastU64
10StLoc[11](loc2: u64)
11CopyLoc[11](loc2: u64)
12LdU64(1)
13Ge
14BrFalse(20)
B1:
15CopyLoc[11](loc2: u64)
16LdU64(7)
17Le
18StLoc[9](loc0: bool)
19Branch(22)
B2:
20LdFalse
21StLoc[9](loc0: bool)
B3:
22MoveLoc[9](loc0: bool)
23BrFalse(25)
B4:
24Branch(33)
B5:
25MoveLoc[0](Arg0: &mut StakingPool<Ty0>)
26Pop
27MoveLoc[8](Arg8: &mut TxContext)
28Pop
29MoveLoc[7](Arg7: &Clock)
30Pop
31LdConst[0](u64: 0)
32Abort
B6:
33CopyLoc[0](Arg0: &mut StakingPool<Ty0>)
34MoveLoc[4](Arg4: Coin<Ty0>)
35CopyLoc[5](Arg5: u64)
36CopyLoc[11](loc2: u64)
37CopyLoc[7](Arg7: &Clock)
38CopyLoc[8](Arg8: &mut TxContext)
39Call staking_pool::stake<Ty0>(&mut StakingPool<Ty0>, Coin<Ty0>, u64, u64, &Clock, &mut TxContext): StakedPosition<Ty0>
40StLoc[12](loc3: StakedPosition<Ty0>)
41MoveLoc[0](Arg0: &mut StakingPool<Ty0>)
42FreezeRef
43Call object::id<StakingPool<Ty0>>(&StakingPool<Ty0>): ID
44MoveLoc[8](Arg8: &mut TxContext)
45FreezeRef
46Call tx_context::sender(&TxContext): address
47MoveLoc[10](loc1: u64)
48MoveLoc[5](Arg5: u64)
49MoveLoc[11](loc2: u64)
50MoveLoc[7](Arg7: &Clock)
51Call clock::timestamp_ms(&Clock): u64
52ImmBorrowLoc[12](loc3: StakedPosition<Ty0>)
53Call object::id<StakedPosition<Ty0>>(&StakedPosition<Ty0>): ID
54PackGeneric[0](StakeEvent<Ty0>)
55Call event::emit<StakeEvent<Ty0>>(StakeEvent<Ty0>)
56MoveLoc[12](loc3: StakedPosition<Ty0>)
57Ret
}
public unstake<Ty0>(Arg0: &mut StakingPool<Ty0>, Arg1: StakedPosition<Ty0>, Arg2: &Version, Arg3: &Clock, Arg4: &mut TxContext): Coin<Ty0> * Coin<Ty0> {
L5: loc0: Coin<Ty0>
L6: loc1: ID
L7: loc2: Coin<Ty0>
B0:
0MoveLoc[2](Arg2: &Version)
1Call version::assert_current_version(&Version)
2ImmBorrowLoc[1](Arg1: StakedPosition<Ty0>)
3Call object::id<StakedPosition<Ty0>>(&StakedPosition<Ty0>): ID
4StLoc[6](loc1: ID)
5CopyLoc[0](Arg0: &mut StakingPool<Ty0>)
6MoveLoc[1](Arg1: StakedPosition<Ty0>)
7CopyLoc[3](Arg3: &Clock)
8CopyLoc[4](Arg4: &mut TxContext)
9Call staking_pool::unstake<Ty0>(&mut StakingPool<Ty0>, StakedPosition<Ty0>, &Clock, &mut TxContext): Coin<Ty0> * Coin<Ty0>
10StLoc[7](loc2: Coin<Ty0>)
11StLoc[5](loc0: Coin<Ty0>)
12MoveLoc[0](Arg0: &mut StakingPool<Ty0>)
13FreezeRef
14Call object::id<StakingPool<Ty0>>(&StakingPool<Ty0>): ID
15MoveLoc[4](Arg4: &mut TxContext)
16FreezeRef
17Call tx_context::sender(&TxContext): address
18ImmBorrowLoc[5](loc0: Coin<Ty0>)
19Call coin::value<Ty0>(&Coin<Ty0>): u64
20MoveLoc[3](Arg3: &Clock)
21Call clock::timestamp_ms(&Clock): u64
22MoveLoc[6](loc1: ID)
23PackGeneric[1](UnstakeEvent<Ty0>)
24Call event::emit<UnstakeEvent<Ty0>>(UnstakeEvent<Ty0>)
25MoveLoc[5](loc0: Coin<Ty0>)
26MoveLoc[7](loc2: Coin<Ty0>)
27Ret
}
public claim_rewards<Ty0>(Arg0: &mut StakingPool<Ty0>, Arg1: &mut StakedPosition<Ty0>, Arg2: &Version, Arg3: &Clock, Arg4: &mut TxContext): Coin<Ty0> {
L5: loc0: Coin<Ty0>
B0:
0MoveLoc[2](Arg2: &Version)
1Call version::assert_current_version(&Version)
2CopyLoc[0](Arg0: &mut StakingPool<Ty0>)
3CopyLoc[1](Arg1: &mut StakedPosition<Ty0>)
4CopyLoc[3](Arg3: &Clock)
5CopyLoc[4](Arg4: &mut TxContext)
6Call staking_pool::claim<Ty0>(&mut StakingPool<Ty0>, &mut StakedPosition<Ty0>, &Clock, &mut TxContext): Coin<Ty0>
7StLoc[5](loc0: Coin<Ty0>)
8MoveLoc[0](Arg0: &mut StakingPool<Ty0>)
9FreezeRef
10Call object::id<StakingPool<Ty0>>(&StakingPool<Ty0>): ID
11MoveLoc[4](Arg4: &mut TxContext)
12FreezeRef
13Call tx_context::sender(&TxContext): address
14ImmBorrowLoc[5](loc0: Coin<Ty0>)
15Call coin::value<Ty0>(&Coin<Ty0>): u64
16MoveLoc[3](Arg3: &Clock)
17Call clock::timestamp_ms(&Clock): u64
18MoveLoc[1](Arg1: &mut StakedPosition<Ty0>)
19FreezeRef
20Call object::id<StakedPosition<Ty0>>(&StakedPosition<Ty0>): ID
21PackGeneric[2](ClaimEvent<Ty0>)
22Call event::emit<ClaimEvent<Ty0>>(ClaimEvent<Ty0>)
23MoveLoc[5](loc0: Coin<Ty0>)
24Ret
}
Constants [
0 => u64: 0
]
}