Momentum package::staking_pool bytecode | tide- Move path
- 0x23ec…39f5::staking_pool
- Functions
- 359 public, 0 entry
- Structs
- 5
staking_pool
The on-chain disassembly. Offsets are bytecode positions within each function.
1// Move bytecode v6
2module 23ecc2b1c55a7e1c1c1e5091afee8ffdbbfc7b044d059d536804ad050c0c39f5.staking_pool {
3use 35169bc93e1fddfcf3a82a9eae726d349689ed59e4b065369af8789fe59f8608::mmt;
4use 0000000000000000000000000000000000000000000000000000000000000001::u64;
5use 0000000000000000000000000000000000000000000000000000000000000002::balance;
6use 0000000000000000000000000000000000000000000000000000000000000002::clock;
7
use 0000000000000000000000000000000000000000000000000000000000000002::object;
8use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
9use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
10use 0000000000000000000000000000000000000000000000000000000000000002::vec_map;
11use 23ecc2b1c55a7e1c1c1e5091afee8ffdbbfc7b044d059d536804ad050c0c39f5::consts;
12use 23ecc2b1c55a7e1c1c1e5091afee8ffdbbfc7b044d059d536804ad050c0c39f5::epoch;
13use 23ecc2b1c55a7e1c1c1e5091afee8ffdbbfc7b044d059d536804ad050c0c39f5::error;
14use 23ecc2b1c55a7e1c1c1e5091afee8ffdbbfc7b044d059d536804ad050c0c39f5::event;
15use 23ecc2b1c55a7e1c1c1e5091afee8ffdbbfc7b044d059d536804ad050c0c39f5::math_u128;
16use 23ecc2b1c55a7e1c1c1e5091afee8ffdbbfc7b044d059d536804ad050c0c39f5::math_u64;
17use 23ecc2b1c55a7e1c1c1e5091afee8ffdbbfc7b044d059d536804ad050c0c39f5::ve_mmt;
18use 23ecc2b1c55a7e1c1c1e5091afee8ffdbbfc7b044d059d536804ad050c0c39f5::ve_token;
19use 23ecc2b1c55a7e1c1c1e5091afee8ffdbbfc7b044d059d536804ad050c0c39f5::vote_power;
21struct STAKING_POOL has drop {
25struct StakingPool has store, key {
27 unbond_bucket: VecMap<u64, u64>,
28 total_vote_power: u64,
31 current_global_index: u128,
32 epoch_data: VecMap<u64, PoolRewardData>,
34 reward_remain_amount: u128,
38 total_reward_allocated: u128,
39 reward_last_update_at: u64
42struct PoolRewardData has drop, store {
47struct UserRewardData has drop, store {
49 last_claimed_epoch: u64,
50 last_claimed_index: u128,
54struct UpdatePoolRewardEmissionEvent has copy, drop {
57 total_reward_allocated: u128,
58 reward_remain_amount: u128,
63init(Arg0: STAKING_POOL, Arg1: &mut TxContext) {
650MoveLoc[1](Arg1: &mut TxContext)
661Call object::new(&mut TxContext): UID
672Call vec_map::empty<u64, u64>(): VecMap<u64, u64>
727Call vec_map::empty<u64, PoolRewardData>(): VecMap<u64, PoolRewardData>
738Call balance::zero<MMT>(): Balance<MMT>
8116Call transfer::share_object<StakingPool>(StakingPool)
85public(friend) initialize(Arg0: &mut StakingPool, Arg1: &EpochConfig, Arg2: &Clock) {
870MoveLoc[1](Arg1: &EpochConfig)
881CopyLoc[2](Arg2: &Clock)
892Call clock::timestamp_ms(&Clock): u64
903Call epoch::epoch_id(&EpochConfig, u64): u64
914CopyLoc[0](Arg0: &mut StakingPool)
925MutBorrowField[0](StakingPool.current_epoch: u64)
947MoveLoc[2](Arg2: &Clock)
958Call clock::timestamp_ms(&Clock): u64
969CopyLoc[0](Arg0: &mut StakingPool)
9710MutBorrowField[1](StakingPool.last_update_at: u64)
9912CopyLoc[0](Arg0: &mut StakingPool)
10013MutBorrowField[2](StakingPool.epoch_data: VecMap<u64, PoolRewardData>)
10114MoveLoc[0](Arg0: &mut StakingPool)
10215ImmBorrowField[0](StakingPool.current_epoch: u64)
10619Pack[2](PoolRewardData)
10720Call vec_map::insert<u64, PoolRewardData>(&mut VecMap<u64, PoolRewardData>, u64, PoolRewardData)
111public current_epoch(Arg0: &StakingPool): u64 {
1130MoveLoc[0](Arg0: &StakingPool)
1141ImmBorrowField[0](StakingPool.current_epoch: u64)
119public current_global_index(Arg0: &StakingPool): u128 {
1210MoveLoc[0](Arg0: &StakingPool)
1221ImmBorrowField[3](StakingPool.current_global_index: u128)
127public total_vote_power(Arg0: &StakingPool): u64 {
1290MoveLoc[0](Arg0: &StakingPool)
1301ImmBorrowField[4](StakingPool.total_vote_power: u64)
135public last_update_at(Arg0: &StakingPool): u64 {
1370MoveLoc[0](Arg0: &StakingPool)
1381ImmBorrowField[1](StakingPool.last_update_at: u64)
143public init_reward_at(Arg0: &StakingPool): u64 {
1450MoveLoc[0](Arg0: &StakingPool)
1461ImmBorrowField[5](StakingPool.init_reward_at: u64)
151public reward_data(Arg0: &StakingPool): u64 * u64 * u64 * u64 * u128 * u128 * u128 {
1530CopyLoc[0](Arg0: &StakingPool)
1541ImmBorrowField[5](StakingPool.init_reward_at: u64)
1563CopyLoc[0](Arg0: &StakingPool)
1574ImmBorrowField[6](StakingPool.reward_end_at: u64)
1596CopyLoc[0](Arg0: &StakingPool)
1607ImmBorrowField[7](StakingPool.reward_last_update_at: u64)
1629CopyLoc[0](Arg0: &StakingPool)
16310ImmBorrowField[8](StakingPool.reward: Balance<MMT>)
16411Call balance::value<MMT>(&Balance<MMT>): u64
16512CopyLoc[0](Arg0: &StakingPool)
16613ImmBorrowField[9](StakingPool.reward_remain_amount: u128)
16815CopyLoc[0](Arg0: &StakingPool)
16916ImmBorrowField[10](StakingPool.reward_rate: u128)
17118MoveLoc[0](Arg0: &StakingPool)
17219ImmBorrowField[11](StakingPool.total_reward_allocated: u128)
177public get_epoch_data_by_epoch_id(Arg0: &StakingPool, Arg1: u64): u128 * u128 {
178L2: loc0: &PoolRewardData
1800MoveLoc[0](Arg0: &StakingPool)
1811ImmBorrowField[2](StakingPool.epoch_data: VecMap<u64, PoolRewardData>)
1822ImmBorrowLoc[1](Arg1: u64)
1833Call vec_map::get<u64, PoolRewardData>(&VecMap<u64, PoolRewardData>, &u64): &PoolRewardData
1844StLoc[2](loc0: &PoolRewardData)
1855CopyLoc[2](loc0: &PoolRewardData)
1866ImmBorrowField[12](PoolRewardData.start_index: u128)
1888MoveLoc[2](loc0: &PoolRewardData)
1899ImmBorrowField[13](PoolRewardData.end_index: u128)
194public get_user_reward_data(Arg0: &VeToken): u64 * u64 * u128 * u128 {
195L1: loc0: &UserRewardData
1970MoveLoc[0](Arg0: &VeToken)
1981Call ve_token::get_dynamic_field<UserRewardData>(&VeToken): &UserRewardData
1992StLoc[1](loc0: &UserRewardData)
2003CopyLoc[1](loc0: &UserRewardData)
2014ImmBorrowField[14](UserRewardData.last_claimed_at: u64)
2036CopyLoc[1](loc0: &UserRewardData)
2047ImmBorrowField[15](UserRewardData.last_claimed_epoch: u64)
2069CopyLoc[1](loc0: &UserRewardData)
20710ImmBorrowField[16](UserRewardData.last_claimed_index: u128)
20912MoveLoc[1](loc0: &UserRewardData)
21013ImmBorrowField[17](UserRewardData.reward_claimed: u128)
215public(friend) deposit(Arg0: &mut StakingPool, Arg1: &VeMMT, Arg2: &mut VeToken, Arg3: &Clock) {
217L5: loc1: &mut StakingPool
218L6: loc2: &EpochConfig
2210CopyLoc[0](Arg0: &mut StakingPool)
2232CopyLoc[3](Arg3: &Clock)
2243Call assert_pool_synced(&StakingPool, &Clock)
2254CopyLoc[2](Arg2: &mut VeToken)
2276Call is_ve_staked(&VeToken): bool
23310MoveLoc[1](Arg1: &VeMMT)
23512MoveLoc[2](Arg2: &mut VeToken)
23714MoveLoc[0](Arg0: &mut StakingPool)
23916MoveLoc[3](Arg3: &Clock)
24118Call error::e_ve_already_staked(): u64
24420CopyLoc[1](Arg1: &VeMMT)
24521Call ve_mmt::config_fields(&VeMMT): &VotePowerConfig * &EpochConfig
24622StLoc[6](loc2: &EpochConfig)
24824CopyLoc[2](Arg2: &mut VeToken)
25026MoveLoc[1](Arg1: &VeMMT)
25127CopyLoc[2](Arg2: &mut VeToken)
25329Call ve_token::balance(&VeToken): u64
25430CopyLoc[3](Arg3: &Clock)
25531Call clock::timestamp_ms(&Clock): u64
25632Call ve_token::calculate_ve_vote_power(&VeToken, &VeMMT, u64, u64): u64
25834CopyLoc[0](Arg0: &mut StakingPool)
25935StLoc[5](loc1: &mut StakingPool)
26036CopyLoc[2](Arg2: &mut VeToken)
26238Call ve_token::unbond_at(&VeToken): u64
26440MoveLoc[5](loc1: &mut StakingPool)
26541ImmBorrowLoc[4](loc0: u64)
26642CopyLoc[2](Arg2: &mut VeToken)
26844Call ve_token::balance(&VeToken): u64
26945Call add_to_unbond_bucket(&mut StakingPool, &u64, u64)
27046CopyLoc[0](Arg0: &mut StakingPool)
27147ImmBorrowField[4](StakingPool.total_vote_power: u64)
27349MoveLoc[7](loc3: u64)
27450Call math_u64::add(u64, u64): u64
27551CopyLoc[0](Arg0: &mut StakingPool)
27652MutBorrowField[4](StakingPool.total_vote_power: u64)
27854MoveLoc[2](Arg2: &mut VeToken)
27955CopyLoc[3](Arg3: &Clock)
28056Call clock::timestamp_ms(&Clock): u64
28157MoveLoc[6](loc2: &EpochConfig)
28258MoveLoc[3](Arg3: &Clock)
28359Call clock::timestamp_ms(&Clock): u64
28460Call epoch::epoch_id(&EpochConfig, u64): u64
28561MoveLoc[0](Arg0: &mut StakingPool)
28662ImmBorrowField[3](StakingPool.current_global_index: u128)
28864Call init_user_reward_data(&mut VeToken, u64, u64, u128)
292public(friend) claim_reward(Arg0: &mut StakingPool, Arg1: &VeMMT, Arg2: &mut VeToken, Arg3: &Clock): Balance<MMT> {
294L5: loc1: Balance<MMT>
2970CopyLoc[0](Arg0: &mut StakingPool)
2992CopyLoc[3](Arg3: &Clock)
3003Call assert_pool_synced(&StakingPool, &Clock)
3014CopyLoc[0](Arg0: &mut StakingPool)
3036MoveLoc[1](Arg1: &VeMMT)
3047CopyLoc[2](Arg2: &mut VeToken)
3069Call get_user_claim_reward_data(&StakingPool, &VeMMT, &VeToken): u128 * u128
30710StLoc[4](loc0: u128)
30811StLoc[6](loc2: u128)
30912CopyLoc[6](loc2: u128)
31013CopyLoc[0](Arg0: &mut StakingPool)
31114ImmBorrowField[8](StakingPool.reward: Balance<MMT>)
31215Call balance::value<MMT>(&Balance<MMT>): u64
31719CopyLoc[0](Arg0: &mut StakingPool)
31820ImmBorrowField[8](StakingPool.reward: Balance<MMT>)
31921Call balance::value<MMT>(&Balance<MMT>): u64
32123StLoc[6](loc2: u128)
32324CopyLoc[0](Arg0: &mut StakingPool)
32425MutBorrowField[8](StakingPool.reward: Balance<MMT>)
32526CopyLoc[6](loc2: u128)
32728Call balance::split<MMT>(&mut Balance<MMT>, u64): Balance<MMT>
32829StLoc[5](loc1: Balance<MMT>)
32930MoveLoc[2](Arg2: &mut VeToken)
33031MoveLoc[3](Arg3: &Clock)
33132Call clock::timestamp_ms(&Clock): u64
33233MoveLoc[0](Arg0: &mut StakingPool)
33435Call current_epoch(&StakingPool): u64
33536MoveLoc[4](loc0: u128)
33637MoveLoc[6](loc2: u128)
33738Call update_user_reward_data(&mut VeToken, u64, u64, u128, u128)
33839MoveLoc[5](loc1: Balance<MMT>)
342public(friend) get_user_claim_reward_data(Arg0: &StakingPool, Arg1: &VeMMT, Arg2: &VeToken): u128 * u128 {
350L10: loc7: &UserRewardData
3520CopyLoc[2](Arg2: &VeToken)
3531Call ve_token::get_dynamic_field<UserRewardData>(&VeToken): &UserRewardData
3542StLoc[10](loc7: &UserRewardData)
3553CopyLoc[10](loc7: &UserRewardData)
3564ImmBorrowField[15](UserRewardData.last_claimed_epoch: u64)
3597CopyLoc[10](loc7: &UserRewardData)
3608ImmBorrowField[15](UserRewardData.last_claimed_epoch: u64)
36311CopyLoc[0](Arg0: &StakingPool)
36412Call current_epoch(&StakingPool): u64
36715StLoc[8](loc5: u128)
36816MoveLoc[10](loc7: &UserRewardData)
36917ImmBorrowField[16](UserRewardData.last_claimed_index: u128)
37119StLoc[6](loc3: u128)
37320CopyLoc[5](loc2: u64)
37421CopyLoc[4](loc1: u64)
38025CopyLoc[0](Arg0: &StakingPool)
38126CopyLoc[1](Arg1: &VeMMT)
38227CopyLoc[2](Arg2: &VeToken)
38328MoveLoc[7](loc4: u64)
38429MoveLoc[6](loc3: u128)
38530CopyLoc[5](loc2: u64)
38631Call calculate_reward_single_epoch(&StakingPool, &VeMMT, &VeToken, u64, u128, u64): u128 * u128
38732StLoc[3](loc0: u128)
38833StLoc[9](loc6: u128)
38934CopyLoc[5](loc2: u64)
39136MoveLoc[5](loc2: u64)
39540MoveLoc[8](loc5: u128)
39641MoveLoc[9](loc6: u128)
39843StLoc[8](loc5: u128)
39944MoveLoc[3](loc0: u128)
40045StLoc[6](loc3: u128)
40347MoveLoc[1](Arg1: &VeMMT)
40549MoveLoc[2](Arg2: &VeToken)
40751MoveLoc[0](Arg0: &StakingPool)
40953MoveLoc[8](loc5: u128)
41054MoveLoc[6](loc3: u128)
414public(friend) claim_reward_single_epoch(Arg0: &mut StakingPool, Arg1: &VeMMT, Arg2: &mut VeToken, Arg3: &Clock): Balance<MMT> {
418L7: loc3: &PoolRewardData
421L10: loc6: &UserRewardData
4230CopyLoc[0](Arg0: &mut StakingPool)
4252CopyLoc[3](Arg3: &Clock)
4263Call assert_pool_synced(&StakingPool, &Clock)
4274CopyLoc[2](Arg2: &mut VeToken)
4296Call ve_token::get_dynamic_field<UserRewardData>(&VeToken): &UserRewardData
4307StLoc[10](loc6: &UserRewardData)
4318CopyLoc[10](loc6: &UserRewardData)
4329ImmBorrowField[15](UserRewardData.last_claimed_epoch: u64)
43512CopyLoc[0](Arg0: &mut StakingPool)
43613ImmBorrowField[2](StakingPool.epoch_data: VecMap<u64, PoolRewardData>)
43714ImmBorrowLoc[8](loc4: u64)
43815Call vec_map::get<u64, PoolRewardData>(&VecMap<u64, PoolRewardData>, &u64): &PoolRewardData
43916StLoc[7](loc3: &PoolRewardData)
44017CopyLoc[10](loc6: &UserRewardData)
44118ImmBorrowField[16](UserRewardData.last_claimed_index: u128)
44320MoveLoc[7](loc3: &PoolRewardData)
44421ImmBorrowField[13](PoolRewardData.end_index: u128)
44925CopyLoc[8](loc4: u64)
45530CopyLoc[8](loc4: u64)
45832MoveLoc[4](loc0: u64)
46034CopyLoc[0](Arg0: &mut StakingPool)
46236MoveLoc[1](Arg1: &VeMMT)
46337CopyLoc[2](Arg2: &mut VeToken)
46539MoveLoc[8](loc4: u64)
46640MoveLoc[10](loc6: &UserRewardData)
46741ImmBorrowField[16](UserRewardData.last_claimed_index: u128)
46943CopyLoc[5](loc1: u64)
47044Call calculate_reward_single_epoch(&StakingPool, &VeMMT, &VeToken, u64, u128, u64): u128 * u128
47145StLoc[6](loc2: u128)
47246StLoc[9](loc5: u128)
47347MoveLoc[2](Arg2: &mut VeToken)
47448MoveLoc[3](Arg3: &Clock)
47549Call clock::timestamp_ms(&Clock): u64
47650MoveLoc[5](loc1: u64)
47751MoveLoc[6](loc2: u128)
47852CopyLoc[9](loc5: u128)
47953Call update_user_reward_data(&mut VeToken, u64, u64, u128, u128)
48054CopyLoc[9](loc5: u128)
48155CopyLoc[0](Arg0: &mut StakingPool)
48256ImmBorrowField[8](StakingPool.reward: Balance<MMT>)
48357Call balance::value<MMT>(&Balance<MMT>): u64
48861CopyLoc[0](Arg0: &mut StakingPool)
48962ImmBorrowField[8](StakingPool.reward: Balance<MMT>)
49063Call balance::value<MMT>(&Balance<MMT>): u64
49265StLoc[9](loc5: u128)
49466MoveLoc[0](Arg0: &mut StakingPool)
49567MutBorrowField[8](StakingPool.reward: Balance<MMT>)
49668MoveLoc[9](loc5: u128)
49870Call balance::split<MMT>(&mut Balance<MMT>, u64): Balance<MMT>
502public(friend) withdraw(Arg0: &mut StakingPool, Arg1: &VeMMT, Arg2: &mut VeToken, Arg3: &Clock) {
504L5: loc1: &mut StakingPool
5070CopyLoc[0](Arg0: &mut StakingPool)
5092CopyLoc[3](Arg3: &Clock)
5103Call assert_pool_synced(&StakingPool, &Clock)
5114CopyLoc[2](Arg2: &mut VeToken)
5136Call is_ve_staked(&VeToken): bool
5189MoveLoc[1](Arg1: &VeMMT)
52011MoveLoc[2](Arg2: &mut VeToken)
52213MoveLoc[0](Arg0: &mut StakingPool)
52415MoveLoc[3](Arg3: &Clock)
52617Call error::e_ve_not_staked(): u64
52919CopyLoc[2](Arg2: &mut VeToken)
53121CopyLoc[3](Arg3: &Clock)
53222Call assert_reward_claimed(&VeToken, &Clock)
53323CopyLoc[0](Arg0: &mut StakingPool)
53424StLoc[5](loc1: &mut StakingPool)
53525CopyLoc[2](Arg2: &mut VeToken)
53727Call ve_token::unbond_at(&VeToken): u64
53929MoveLoc[5](loc1: &mut StakingPool)
54030ImmBorrowLoc[4](loc0: u64)
54131CopyLoc[2](Arg2: &mut VeToken)
54333Call ve_token::balance(&VeToken): u64
54434Call remove_from_unbond_bucket(&mut StakingPool, &u64, u64)
54535CopyLoc[2](Arg2: &mut VeToken)
54737MoveLoc[1](Arg1: &VeMMT)
54838CopyLoc[2](Arg2: &mut VeToken)
55040Call ve_token::balance(&VeToken): u64
55141MoveLoc[3](Arg3: &Clock)
55242Call clock::timestamp_ms(&Clock): u64
55343Call ve_token::calculate_ve_vote_power(&VeToken, &VeMMT, u64, u64): u64
55545CopyLoc[0](Arg0: &mut StakingPool)
55646ImmBorrowField[4](StakingPool.total_vote_power: u64)
55848MoveLoc[6](loc2: u64)
55949Call math_u64::sub(u64, u64): u64
56050MoveLoc[0](Arg0: &mut StakingPool)
56151MutBorrowField[4](StakingPool.total_vote_power: u64)
56353MoveLoc[2](Arg2: &mut VeToken)
56454Call ve_token::remove_dynamic_field<UserRewardData>(&mut VeToken)
568public(friend) init_user_reward_data(Arg0: &mut VeToken, Arg1: u64, Arg2: u64, Arg3: u128) {
569L4: loc0: UserRewardData
5710MoveLoc[1](Arg1: u64)
5721MoveLoc[2](Arg2: u64)
5732MoveLoc[3](Arg3: u128)
5754Pack[3](UserRewardData)
5765StLoc[4](loc0: UserRewardData)
5776MoveLoc[0](Arg0: &mut VeToken)
5787MoveLoc[4](loc0: UserRewardData)
5798Call ve_token::update_dynamic_field<UserRewardData>(&mut VeToken, UserRewardData)
583public(friend) update_user_reward_data(Arg0: &mut VeToken, Arg1: u64, Arg2: u64, Arg3: u128, Arg4: u128) {
584L5: loc0: &mut UserRewardData
5860MoveLoc[0](Arg0: &mut VeToken)
5871Call ve_token::get_dynamic_field_mut<UserRewardData>(&mut VeToken): &mut UserRewardData
5882StLoc[5](loc0: &mut UserRewardData)
5893MoveLoc[1](Arg1: u64)
5904CopyLoc[5](loc0: &mut UserRewardData)
5915MutBorrowField[14](UserRewardData.last_claimed_at: u64)
5937MoveLoc[2](Arg2: u64)
5948CopyLoc[5](loc0: &mut UserRewardData)
5959MutBorrowField[15](UserRewardData.last_claimed_epoch: u64)
59711MoveLoc[3](Arg3: u128)
59812CopyLoc[5](loc0: &mut UserRewardData)
59913MutBorrowField[16](UserRewardData.last_claimed_index: u128)
60115CopyLoc[5](loc0: &mut UserRewardData)
60216ImmBorrowField[17](UserRewardData.reward_claimed: u128)
60418MoveLoc[4](Arg4: u128)
60620MoveLoc[5](loc0: &mut UserRewardData)
60721MutBorrowField[17](UserRewardData.reward_claimed: u128)
612public(friend) sync_or_advance_epoch(Arg0: &mut StakingPool, Arg1: &VeMMT, Arg2: &Clock) {
618L8: loc5: &EpochConfig
619L9: loc6: &mut PoolRewardData
625L15: loc12: &VotePowerConfig
6270MoveLoc[1](Arg1: &VeMMT)
6281Call ve_mmt::config_fields(&VeMMT): &VotePowerConfig * &EpochConfig
6292StLoc[8](loc5: &EpochConfig)
6303StLoc[15](loc12: &VotePowerConfig)
6314MoveLoc[2](Arg2: &Clock)
6325Call clock::timestamp_ms(&Clock): u64
6347CopyLoc[0](Arg0: &mut StakingPool)
6358ImmBorrowField[0](StakingPool.current_epoch: u64)
63710StLoc[10](loc7: u64)
63811CopyLoc[8](loc5: &EpochConfig)
63912CopyLoc[5](loc2: u64)
64013Call epoch::epoch_id(&EpochConfig, u64): u64
64114StLoc[12](loc9: u64)
64215CopyLoc[12](loc9: u64)
64316CopyLoc[10](loc7: u64)
64719MoveLoc[15](loc12: &VotePowerConfig)
64921MoveLoc[8](loc5: &EpochConfig)
65123CopyLoc[0](Arg0: &mut StakingPool)
65224ImmBorrowField[6](StakingPool.reward_end_at: u64)
65829CopyLoc[5](loc2: u64)
66232CopyLoc[5](loc2: u64)
66333CopyLoc[0](Arg0: &mut StakingPool)
66434ImmBorrowField[6](StakingPool.reward_end_at: u64)
66636Call u64::min(u64, u64): u64
66938MoveLoc[3](loc0: u64)
67140CopyLoc[6](loc3: u64)
67241CopyLoc[0](Arg0: &mut StakingPool)
67342ImmBorrowField[1](StakingPool.last_update_at: u64)
67746StLoc[13](loc10: u128)
67847CopyLoc[0](Arg0: &mut StakingPool)
67948MoveLoc[13](loc10: u128)
68049MoveLoc[5](loc2: u64)
68150Call update_global_index(&mut StakingPool, u128, u64)
68251MoveLoc[6](loc3: u64)
68352CopyLoc[0](Arg0: &mut StakingPool)
68453MutBorrowField[1](StakingPool.last_update_at: u64)
68655CopyLoc[0](Arg0: &mut StakingPool)
68756MutBorrowField[2](StakingPool.epoch_data: VecMap<u64, PoolRewardData>)
68857ImmBorrowLoc[12](loc9: u64)
68958Call vec_map::get_mut<u64, PoolRewardData>(&mut VecMap<u64, PoolRewardData>, &u64): &mut PoolRewardData
69059StLoc[9](loc6: &mut PoolRewardData)
69160MoveLoc[0](Arg0: &mut StakingPool)
69261ImmBorrowField[3](StakingPool.current_global_index: u128)
69463MoveLoc[9](loc6: &mut PoolRewardData)
69564MutBorrowField[13](PoolRewardData.end_index: u128)
69967CopyLoc[8](loc5: &EpochConfig)
70068CopyLoc[10](loc7: u64)
70169Call epoch::epoch_end(&EpochConfig, u64): u64
70270StLoc[11](loc8: u64)
70371CopyLoc[0](Arg0: &mut StakingPool)
70472ImmBorrowField[6](StakingPool.reward_end_at: u64)
71077MoveLoc[11](loc8: u64)
71480MoveLoc[11](loc8: u64)
71581CopyLoc[0](Arg0: &mut StakingPool)
71682ImmBorrowField[6](StakingPool.reward_end_at: u64)
71884Call u64::min(u64, u64): u64
72186MoveLoc[4](loc1: u64)
72388CopyLoc[7](loc4: u64)
72489CopyLoc[0](Arg0: &mut StakingPool)
72590ImmBorrowField[1](StakingPool.last_update_at: u64)
72994StLoc[14](loc11: u128)
73095CopyLoc[0](Arg0: &mut StakingPool)
73196MoveLoc[14](loc11: u128)
73297MoveLoc[5](loc2: u64)
73398Call update_global_index(&mut StakingPool, u128, u64)
73499MoveLoc[7](loc4: u64)
735100CopyLoc[0](Arg0: &mut StakingPool)
736101MutBorrowField[1](StakingPool.last_update_at: u64)
738103MoveLoc[0](Arg0: &mut StakingPool)
739104MoveLoc[15](loc12: &VotePowerConfig)
740105MoveLoc[8](loc5: &EpochConfig)
741106MoveLoc[10](loc7: u64)
742107Call transition_to_next_epoch(&mut StakingPool, &VotePowerConfig, &EpochConfig, u64)
746public(friend) transition_to_next_epoch(Arg0: &mut StakingPool, Arg1: &VotePowerConfig, Arg2: &EpochConfig, Arg3: u64) {
7480CopyLoc[3](Arg3: u64)
7513CopyLoc[0](Arg0: &mut StakingPool)
7524MutBorrowField[0](StakingPool.current_epoch: u64)
7546CopyLoc[0](Arg0: &mut StakingPool)
7568MoveLoc[1](Arg1: &VotePowerConfig)
7579MoveLoc[2](Arg2: &EpochConfig)
75810CopyLoc[3](Arg3: u64)
76113Call calculate_total_vote_power_at_epoch_id(&StakingPool, &VotePowerConfig, &EpochConfig, u64): u64
76214CopyLoc[0](Arg0: &mut StakingPool)
76315MutBorrowField[4](StakingPool.total_vote_power: u64)
76517MoveLoc[0](Arg0: &mut StakingPool)
76618MoveLoc[3](Arg3: u64)
76719Call finalize_epoch_and_create_next(&mut StakingPool, u64)
771public(friend) add_to_unbond_bucket(Arg0: &mut StakingPool, Arg1: &u64, Arg2: u64) {
7730CopyLoc[0](Arg0: &mut StakingPool)
7741ImmBorrowField[18](StakingPool.unbond_bucket: VecMap<u64, u64>)
7752CopyLoc[1](Arg1: &u64)
7763Call vec_map::contains<u64, u64>(&VecMap<u64, u64>, &u64): bool
7795CopyLoc[0](Arg0: &mut StakingPool)
7806ImmBorrowField[18](StakingPool.unbond_bucket: VecMap<u64, u64>)
7817CopyLoc[1](Arg1: &u64)
7828Call vec_map::get<u64, u64>(&VecMap<u64, u64>, &u64): &u64
78410MoveLoc[2](Arg2: u64)
78612MoveLoc[0](Arg0: &mut StakingPool)
78713MutBorrowField[18](StakingPool.unbond_bucket: VecMap<u64, u64>)
78814MoveLoc[1](Arg1: &u64)
78915Call vec_map::get_mut<u64, u64>(&mut VecMap<u64, u64>, &u64): &mut u64
79318MoveLoc[0](Arg0: &mut StakingPool)
79419MutBorrowField[18](StakingPool.unbond_bucket: VecMap<u64, u64>)
79520MoveLoc[1](Arg1: &u64)
79722MoveLoc[2](Arg2: u64)
79823Call vec_map::insert<u64, u64>(&mut VecMap<u64, u64>, u64, u64)
803public(friend) remove_from_unbond_bucket(Arg0: &mut StakingPool, Arg1: &u64, Arg2: u64) {
8060CopyLoc[0](Arg0: &mut StakingPool)
8071ImmBorrowField[18](StakingPool.unbond_bucket: VecMap<u64, u64>)
8082CopyLoc[1](Arg1: &u64)
8093Call vec_map::contains<u64, u64>(&VecMap<u64, u64>, &u64): bool
8146MoveLoc[1](Arg1: &u64)
8168MoveLoc[0](Arg0: &mut StakingPool)
81810Call error::e_unbond_bucket_not_found(): u64
82112CopyLoc[0](Arg0: &mut StakingPool)
82213ImmBorrowField[18](StakingPool.unbond_bucket: VecMap<u64, u64>)
82314CopyLoc[1](Arg1: &u64)
82415Call vec_map::get<u64, u64>(&VecMap<u64, u64>, &u64): &u64
82718CopyLoc[3](loc0: u64)
82819CopyLoc[2](Arg2: u64)
83423MoveLoc[1](Arg1: &u64)
83625MoveLoc[0](Arg0: &mut StakingPool)
83827Call error::e_invalid_amount(): u64
84129CopyLoc[3](loc0: u64)
84230CopyLoc[2](Arg2: u64)
84633MoveLoc[0](Arg0: &mut StakingPool)
84734MutBorrowField[18](StakingPool.unbond_bucket: VecMap<u64, u64>)
84835MoveLoc[1](Arg1: &u64)
84936Call vec_map::remove<u64, u64>(&mut VecMap<u64, u64>, &u64): u64 * u64
85440MoveLoc[3](loc0: u64)
85541MoveLoc[2](Arg2: u64)
85743MoveLoc[0](Arg0: &mut StakingPool)
85844MutBorrowField[18](StakingPool.unbond_bucket: VecMap<u64, u64>)
85945MoveLoc[1](Arg1: &u64)
86046Call vec_map::get_mut<u64, u64>(&mut VecMap<u64, u64>, &u64): &mut u64
866public(friend) get_unbond_bucket(Arg0: &StakingPool): VecMap<u64, u64> {
8680MoveLoc[0](Arg0: &StakingPool)
8691ImmBorrowField[18](StakingPool.unbond_bucket: VecMap<u64, u64>)
874public(friend) get_unbond_bucket_entry_by_key(Arg0: &StakingPool, Arg1: u64): u64 {
8760MoveLoc[0](Arg0: &StakingPool)
8771ImmBorrowField[18](StakingPool.unbond_bucket: VecMap<u64, u64>)
8782ImmBorrowLoc[1](Arg1: u64)
8793Call vec_map::get<u64, u64>(&VecMap<u64, u64>, &u64): &u64
884public(friend) update_global_index(Arg0: &mut StakingPool, Arg1: u128, Arg2: u64) {
8870CopyLoc[0](Arg0: &mut StakingPool)
8892CopyLoc[1](Arg1: u128)
8903MoveLoc[2](Arg2: u64)
8914Call should_skip_index_update(&StakingPool, u128, u64): bool
8946MoveLoc[0](Arg0: &mut StakingPool)
8989MoveLoc[1](Arg1: u128)
89910CopyLoc[0](Arg0: &mut StakingPool)
90011ImmBorrowField[10](StakingPool.reward_rate: u128)
90213CopyLoc[0](Arg0: &mut StakingPool)
90314ImmBorrowField[4](StakingPool.total_vote_power: u64)
90617Call math_u128::mul_div_floor(u128, u128, u128): u128
90718StLoc[3](loc0: u128)
90819CopyLoc[0](Arg0: &mut StakingPool)
90920ImmBorrowField[3](StakingPool.current_global_index: u128)
91122MoveLoc[3](loc0: u128)
91324MoveLoc[0](Arg0: &mut StakingPool)
91425MutBorrowField[3](StakingPool.current_global_index: u128)
919should_skip_index_update(Arg0: &StakingPool, Arg1: u128, Arg2: u64): bool {
9230CopyLoc[0](Arg0: &StakingPool)
9241ImmBorrowField[4](StakingPool.total_vote_power: u64)
9306MoveLoc[0](Arg0: &StakingPool)
93611MoveLoc[1](Arg1: u128)
94115MoveLoc[0](Arg0: &StakingPool)
94418StLoc[3](loc0: bool)
94720CopyLoc[0](Arg0: &StakingPool)
94821ImmBorrowField[10](StakingPool.reward_rate: u128)
95426MoveLoc[0](Arg0: &StakingPool)
95729StLoc[3](loc0: bool)
96031CopyLoc[0](Arg0: &StakingPool)
96132ImmBorrowField[6](StakingPool.reward_end_at: u64)
96737CopyLoc[0](Arg0: &StakingPool)
96838ImmBorrowField[1](StakingPool.last_update_at: u64)
97040CopyLoc[0](Arg0: &StakingPool)
97141ImmBorrowField[6](StakingPool.reward_end_at: u64)
97444StLoc[4](loc1: bool)
97847StLoc[4](loc1: bool)
98048MoveLoc[4](loc1: bool)
98350MoveLoc[0](Arg0: &StakingPool)
98653StLoc[3](loc0: bool)
98955MoveLoc[0](Arg0: &StakingPool)
99056ImmBorrowField[5](StakingPool.init_reward_at: u64)
99258MoveLoc[2](Arg2: u64)
99460StLoc[3](loc0: bool)
99661MoveLoc[3](loc0: bool)
1000assert_pool_synced(Arg0: &StakingPool, Arg1: &Clock) {
10030CopyLoc[0](Arg0: &StakingPool)
10041ImmBorrowField[1](StakingPool.last_update_at: u64)
10063MoveLoc[1](Arg1: &Clock)
10074Call clock::timestamp_ms(&Clock): u64
10117MoveLoc[0](Arg0: &StakingPool)
101410StLoc[2](loc0: bool)
101712CopyLoc[0](Arg0: &StakingPool)
101813ImmBorrowField[1](StakingPool.last_update_at: u64)
102015MoveLoc[0](Arg0: &StakingPool)
102116ImmBorrowField[6](StakingPool.reward_end_at: u64)
102419StLoc[2](loc0: bool)
102620MoveLoc[2](loc0: bool)
103123Call error::e_pool_not_synced(): u64
1037assert_reward_claimed(Arg0: &VeToken, Arg1: &Clock) {
10390MoveLoc[0](Arg0: &VeToken)
10401Call ve_token::get_dynamic_field<UserRewardData>(&VeToken): &UserRewardData
10412ImmBorrowField[14](UserRewardData.last_claimed_at: u64)
10434MoveLoc[1](Arg1: &Clock)
10445Call clock::timestamp_ms(&Clock): u64
10509Call error::e_reward_not_claimed(): u64
1056public(friend) is_ve_staked(Arg0: &VeToken): bool {
10580MoveLoc[0](Arg0: &VeToken)
10591Call ve_token::has_dynamic_field<UserRewardData>(&VeToken): bool
1063public calculate_epoch_total_vote_power(Arg0: &StakingPool, Arg1: &VeMMT, Arg2: u64): u64 {
10650MoveLoc[0](Arg0: &StakingPool)
10661CopyLoc[1](Arg1: &VeMMT)
10672Call ve_mmt::vp_config(&VeMMT): &VotePowerConfig
10683MoveLoc[1](Arg1: &VeMMT)
10694Call ve_mmt::ep_config(&VeMMT): &EpochConfig
10705MoveLoc[2](Arg2: u64)
10716Call calculate_total_vote_power_at_epoch_id(&StakingPool, &VotePowerConfig, &EpochConfig, u64): u64
1075calculate_total_vote_power_at_epoch_id(Arg0: &StakingPool, Arg1: &VotePowerConfig, Arg2: &EpochConfig, Arg3: u64): u64 {
10894CopyLoc[7](loc3: u64)
10905CopyLoc[0](Arg0: &StakingPool)
10916ImmBorrowField[18](StakingPool.unbond_bucket: VecMap<u64, u64>)
10927Call vec_map::length<u64, u64>(&VecMap<u64, u64>): u64
109811CopyLoc[0](Arg0: &StakingPool)
109912ImmBorrowField[18](StakingPool.unbond_bucket: VecMap<u64, u64>)
110013CopyLoc[7](loc3: u64)
110114Call vec_map::get_entry_by_idx<u64, u64>(&VecMap<u64, u64>, u64): &u64 * &u64
110215StLoc[6](loc2: &u64)
110417MoveLoc[6](loc2: &u64)
110619StLoc[5](loc1: u64)
110720StLoc[9](loc5: u64)
110821CopyLoc[9](loc5: u64)
110922Call ve_token::max_bond_unbond_at(): u64
111325MoveLoc[5](loc1: u64)
111426Call vote_power::vote_power_for_max_bond(u64): u64
111527StLoc[4](loc0: u64)
111829CopyLoc[1](Arg1: &VotePowerConfig)
111930CopyLoc[2](Arg2: &EpochConfig)
112031MoveLoc[5](loc1: u64)
112132CopyLoc[3](Arg3: u64)
112233MoveLoc[9](loc5: u64)
112334Call vote_power::vote_power_for_epoch_id_ceil(&VotePowerConfig, &EpochConfig, u64, u64, u64): u64
112435StLoc[4](loc0: u64)
112636MoveLoc[4](loc0: u64)
112737StLoc[10](loc6: u64)
112838MoveLoc[8](loc4: u64)
112939MoveLoc[10](loc6: u64)
113141StLoc[8](loc4: u64)
113242MoveLoc[7](loc3: u64)
113545StLoc[7](loc3: u64)
113847MoveLoc[1](Arg1: &VotePowerConfig)
114049MoveLoc[0](Arg0: &StakingPool)
114251MoveLoc[2](Arg2: &EpochConfig)
114453MoveLoc[8](loc4: u64)
1148public(friend) finalize_epoch_and_create_next(Arg0: &mut StakingPool, Arg1: u64) {
1149L2: loc0: &mut PoolRewardData
11520CopyLoc[0](Arg0: &mut StakingPool)
11531MutBorrowField[2](StakingPool.epoch_data: VecMap<u64, PoolRewardData>)
11542ImmBorrowLoc[1](Arg1: u64)
11553Call vec_map::get_mut<u64, PoolRewardData>(&mut VecMap<u64, PoolRewardData>, &u64): &mut PoolRewardData
11564StLoc[2](loc0: &mut PoolRewardData)
11575CopyLoc[0](Arg0: &mut StakingPool)
11586ImmBorrowField[3](StakingPool.current_global_index: u128)
11608MoveLoc[2](loc0: &mut PoolRewardData)
11619MutBorrowField[13](PoolRewardData.end_index: u128)
116311MoveLoc[1](Arg1: u64)
116614StLoc[3](loc1: u64)
116715CopyLoc[0](Arg0: &mut StakingPool)
116816MutBorrowField[2](StakingPool.epoch_data: VecMap<u64, PoolRewardData>)
116917MoveLoc[3](loc1: u64)
117018CopyLoc[0](Arg0: &mut StakingPool)
117119ImmBorrowField[3](StakingPool.current_global_index: u128)
117321MoveLoc[0](Arg0: &mut StakingPool)
117422ImmBorrowField[3](StakingPool.current_global_index: u128)
117624Pack[2](PoolRewardData)
117725Call vec_map::insert<u64, PoolRewardData>(&mut VecMap<u64, PoolRewardData>, u64, PoolRewardData)
1181calculate_reward_single_epoch(Arg0: &StakingPool, Arg1: &VeMMT, Arg2: &VeToken, Arg3: u64, Arg4: u128, Arg5: u64): u128 * u128 {
1187L11: loc5: &EpochConfig
1188L12: loc6: &PoolRewardData
11920CopyLoc[0](Arg0: &StakingPool)
11931Call current_epoch(&StakingPool): u64
11953CopyLoc[5](Arg5: u64)
11964CopyLoc[3](Arg3: u64)
12007MoveLoc[1](Arg1: &VeMMT)
12029MoveLoc[2](Arg2: &VeToken)
120411MoveLoc[0](Arg0: &StakingPool)
120714MoveLoc[4](Arg4: u128)
121016CopyLoc[0](Arg0: &StakingPool)
121117ImmBorrowField[2](StakingPool.epoch_data: VecMap<u64, PoolRewardData>)
121218ImmBorrowLoc[5](Arg5: u64)
121319Call vec_map::get<u64, PoolRewardData>(&VecMap<u64, PoolRewardData>, &u64): &PoolRewardData
121420StLoc[12](loc6: &PoolRewardData)
121521CopyLoc[12](loc6: &PoolRewardData)
121622ImmBorrowField[13](PoolRewardData.end_index: u128)
121824StLoc[8](loc2: u128)
121925CopyLoc[1](Arg1: &VeMMT)
122026Call ve_mmt::config_fields(&VeMMT): &VotePowerConfig * &EpochConfig
122127StLoc[11](loc5: &EpochConfig)
122329CopyLoc[2](Arg2: &VeToken)
122430MoveLoc[1](Arg1: &VeMMT)
122531MoveLoc[2](Arg2: &VeToken)
122632Call ve_token::balance(&VeToken): u64
122733MoveLoc[11](loc5: &EpochConfig)
122834CopyLoc[5](Arg5: u64)
122935Call epoch::epoch_start(&EpochConfig, u64): u64
123036Call ve_token::calculate_ve_vote_power(&VeToken, &VeMMT, u64, u64): u64
123137StLoc[14](loc8: u64)
123238CopyLoc[5](Arg5: u64)
123339MoveLoc[9](loc3: u64)
123742MoveLoc[12](loc6: &PoolRewardData)
123944MoveLoc[0](Arg0: &StakingPool)
124045Call current_global_index(&StakingPool): u128
124146StLoc[10](loc4: u128)
124247CopyLoc[10](loc4: u128)
124348StLoc[8](loc2: u128)
124449MoveLoc[10](loc4: u128)
124550MoveLoc[4](Arg4: u128)
124752StLoc[7](loc1: u128)
125054MoveLoc[0](Arg0: &StakingPool)
125256CopyLoc[5](Arg5: u64)
125357MoveLoc[3](Arg3: u64)
125760MoveLoc[12](loc6: &PoolRewardData)
125861ImmBorrowField[13](PoolRewardData.end_index: u128)
126063MoveLoc[4](Arg4: u128)
126265StLoc[6](loc0: u128)
126567CopyLoc[12](loc6: &PoolRewardData)
126668ImmBorrowField[13](PoolRewardData.end_index: u128)
126870MoveLoc[12](loc6: &PoolRewardData)
126971ImmBorrowField[12](PoolRewardData.start_index: u128)
127274StLoc[6](loc0: u128)
127475MoveLoc[6](loc0: u128)
127576StLoc[7](loc1: u128)
127777MoveLoc[7](loc1: u128)
127878StLoc[13](loc7: u128)
127979MoveLoc[14](loc8: u64)
128181MoveLoc[13](loc7: u128)
128282Call consts::precision(): u128
128383Call math_u128::mul_div_floor(u128, u128, u128): u128
128484MoveLoc[8](loc2: u128)
1288public(friend) init_reward(Arg0: &mut StakingPool, Arg1: u64) {
12900CopyLoc[1](Arg1: u64)
12911CopyLoc[0](Arg0: &mut StakingPool)
12922MutBorrowField[7](StakingPool.reward_last_update_at: u64)
12944CopyLoc[1](Arg1: u64)
12955CopyLoc[0](Arg0: &mut StakingPool)
12966MutBorrowField[5](StakingPool.init_reward_at: u64)
12988MoveLoc[1](Arg1: u64)
12999MoveLoc[0](Arg0: &mut StakingPool)
130010MutBorrowField[6](StakingPool.reward_end_at: u64)
1305public(friend) update_reward_info(Arg0: &mut StakingPool, Arg1: u64) {
13090CopyLoc[1](Arg1: u64)
13101CopyLoc[0](Arg0: &mut StakingPool)
13112ImmBorrowField[7](StakingPool.reward_last_update_at: u64)
13166CopyLoc[1](Arg1: u64)
13177CopyLoc[0](Arg0: &mut StakingPool)
13188ImmBorrowField[6](StakingPool.reward_end_at: u64)
132010Call u64::min(u64, u64): u64
132111StLoc[2](loc0: u64)
132212CopyLoc[2](loc0: u64)
132313CopyLoc[0](Arg0: &mut StakingPool)
132414ImmBorrowField[7](StakingPool.reward_last_update_at: u64)
132918MoveLoc[2](loc0: u64)
133019CopyLoc[0](Arg0: &mut StakingPool)
133120ImmBorrowField[7](StakingPool.reward_last_update_at: u64)
133524CopyLoc[0](Arg0: &mut StakingPool)
133625ImmBorrowField[10](StakingPool.reward_rate: u128)
133827Call consts::precision(): u128
133928Call math_u128::mul_div_floor(u128, u128, u128): u128
134029StLoc[3](loc1: u128)
134130CopyLoc[0](Arg0: &mut StakingPool)
134231ImmBorrowField[11](StakingPool.total_reward_allocated: u128)
134433CopyLoc[3](loc1: u128)
134635CopyLoc[0](Arg0: &mut StakingPool)
134736MutBorrowField[11](StakingPool.total_reward_allocated: u128)
134938CopyLoc[0](Arg0: &mut StakingPool)
135039ImmBorrowField[9](StakingPool.reward_remain_amount: u128)
135241MoveLoc[3](loc1: u128)
135443CopyLoc[0](Arg0: &mut StakingPool)
135544MutBorrowField[9](StakingPool.reward_remain_amount: u128)
135846MoveLoc[1](Arg1: u64)
135947MoveLoc[0](Arg0: &mut StakingPool)
136048MutBorrowField[7](StakingPool.reward_last_update_at: u64)
136451MoveLoc[0](Arg0: &mut StakingPool)
1370public(friend) update_reward_emission(Arg0: &mut StakingPool, Arg1: Balance<MMT>, Arg2: u64, Arg3: &TxContext) {
13730CopyLoc[0](Arg0: &mut StakingPool)
13741ImmBorrowField[6](StakingPool.reward_end_at: u64)
13763MoveLoc[2](Arg2: u64)
13796CopyLoc[4](loc0: u64)
13807CopyLoc[0](Arg0: &mut StakingPool)
13818ImmBorrowField[7](StakingPool.reward_last_update_at: u64)
138813MoveLoc[0](Arg0: &mut StakingPool)
139015MoveLoc[3](Arg3: &TxContext)
139217Call error::e_invalid_last_update_time(): u64
139519MoveLoc[4](loc0: u64)
139620CopyLoc[0](Arg0: &mut StakingPool)
139721MutBorrowField[6](StakingPool.reward_end_at: u64)
139923CopyLoc[0](Arg0: &mut StakingPool)
140024ImmBorrowField[9](StakingPool.reward_remain_amount: u128)
140226ImmBorrowLoc[1](Arg1: Balance<MMT>)
140327Call balance::value<MMT>(&Balance<MMT>): u64
140630CopyLoc[0](Arg0: &mut StakingPool)
140731MutBorrowField[9](StakingPool.reward_remain_amount: u128)
140933CopyLoc[0](Arg0: &mut StakingPool)
141034MutBorrowField[8](StakingPool.reward: Balance<MMT>)
141135MoveLoc[1](Arg1: Balance<MMT>)
141236Call balance::join<MMT>(&mut Balance<MMT>, Balance<MMT>): u64
141438CopyLoc[0](Arg0: &mut StakingPool)
141539ImmBorrowField[9](StakingPool.reward_remain_amount: u128)
141741Call consts::precision(): u128
141842CopyLoc[0](Arg0: &mut StakingPool)
141943ImmBorrowField[6](StakingPool.reward_end_at: u64)
142145CopyLoc[0](Arg0: &mut StakingPool)
142246ImmBorrowField[7](StakingPool.reward_last_update_at: u64)
142650Call math_u128::mul_div_floor(u128, u128, u128): u128
142751CopyLoc[0](Arg0: &mut StakingPool)
142852MutBorrowField[10](StakingPool.reward_rate: u128)
143054MoveLoc[3](Arg3: &TxContext)
143155Call tx_context::sender(&TxContext): address
143256CopyLoc[0](Arg0: &mut StakingPool)
143357ImmBorrowField[8](StakingPool.reward: Balance<MMT>)
143458Call balance::value<MMT>(&Balance<MMT>): u64
143559CopyLoc[0](Arg0: &mut StakingPool)
143660ImmBorrowField[11](StakingPool.total_reward_allocated: u128)
143862CopyLoc[0](Arg0: &mut StakingPool)
143963ImmBorrowField[9](StakingPool.reward_remain_amount: u128)
144165CopyLoc[0](Arg0: &mut StakingPool)
144266ImmBorrowField[6](StakingPool.reward_end_at: u64)
144468MoveLoc[0](Arg0: &mut StakingPool)
144569ImmBorrowField[10](StakingPool.reward_rate: u128)
144771Pack[4](UpdatePoolRewardEmissionEvent)
144872Call event::emit<UpdatePoolRewardEmissionEvent>(UpdatePoolRewardEmissionEvent)