Skip to content

Commit be06ed0

Browse files
committed
vectorize vesting changes
1 parent 3e295c6 commit be06ed0

File tree

2 files changed

+19
-28
lines changed

2 files changed

+19
-28
lines changed
9 Bytes
Binary file not shown.

precompile/modules/initia_stdlib/sources/vip/reward.move

+19-28
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,13 @@ module initia_std::vip_reward {
179179
remaining_reward: u64,
180180
initial_reward: u64
181181
}
182+
183+
struct VestingChange has drop, store {
184+
vesting_start_stage: u64,
185+
initial_reward: u64,
186+
remaining_reward: u64,
187+
}
188+
182189
//
183190
// Events
184191
//
@@ -194,10 +201,10 @@ module initia_std::vip_reward {
194201
vesting_reward_amount: u64,
195202
// accumulated claimed vesting reward that was previously distributed.
196203
vested_reward_amount: u64,
197-
// reward coin metadata
198-
metadata: Object<Metadata>,
199204
// l2 score
200205
l2_score: u64,
206+
// vesting changes
207+
vesting_changes: vector<VestingChange>,
201208
}
202209

203210
struct FundEvent has drop, store {
@@ -207,15 +214,6 @@ module initia_std::vip_reward {
207214
reward_amount: u64,
208215
}
209216

210-
struct VestingEvent has drop, store {
211-
account: address,
212-
bridge_id: u64,
213-
claim_stage: u64,
214-
vesting_start_stage: u64,
215-
initial_reward: u64,
216-
remaining_reward: u64,
217-
}
218-
219217
//
220218
// Heldper Functions
221219
//
@@ -419,12 +417,11 @@ module initia_std::vip_reward {
419417
}
420418

421419
fun vest_reward(
422-
account: address,
423-
bridge_id: u64,
424420
stage: u64,
425421
l2_score: u64,
426422
vestings: &mut table::Table<vector<u8>, VestingScore>,
427423
vestings_finalized: &mut table::Table<vector<u8>, VestingScore>,
424+
vesting_changes: &mut vector<VestingChange>,
428425
) : u64 {
429426
let vested_reward = 0u64;
430427
let iter = table::iter_mut(vestings, option::none(), option::none(), 1);
@@ -451,22 +448,16 @@ module initia_std::vip_reward {
451448
//
452449
// vest_ratio = max_ratio * score_ratio
453450
// vest_amount = value.initial_reward * vest_ratio
454-
455451
let vest_amount = calculate_vest(value, l2_score);
456452

457453
vested_reward = vested_reward + vest_amount;
458454
value.remaining_reward = value.remaining_reward - vest_amount;
459455

460-
event::emit(
461-
VestingEvent {
462-
account,
463-
bridge_id,
464-
claim_stage: stage,
465-
vesting_start_stage: value.start_stage,
466-
initial_reward: value.initial_reward,
467-
remaining_reward: value.remaining_reward,
468-
}
469-
);
456+
vector::push_back(vesting_changes, VestingChange {
457+
vesting_start_stage: value.start_stage,
458+
initial_reward: value.initial_reward,
459+
remaining_reward: value.remaining_reward,
460+
});
470461
};
471462
vested_reward
472463
}
@@ -518,13 +509,13 @@ module initia_std::vip_reward {
518509

519510
// Vest previous vesting rewards.
520511
let reward_signer = &object::generate_signer_for_extending(&reward_store.extend_ref);
512+
let vesting_changes = vector::empty<VestingChange>();
521513
let amount = vest_reward(
522-
account_addr,
523-
bridge_id,
524514
stage,
525515
l2_score,
526516
&mut vesting_store.vestings,
527517
&mut vesting_store.vestings_finalized,
518+
&mut vesting_changes,
528519
);
529520
let vested_reward = fungible_asset::withdraw(reward_signer, reward_store.reward, amount);
530521

@@ -555,8 +546,8 @@ module initia_std::vip_reward {
555546
stage,
556547
vesting_reward_amount,
557548
vested_reward_amount: fungible_asset::amount(&vested_reward),
558-
metadata: reward_metadata(),
559-
l2_score
549+
l2_score,
550+
vesting_changes,
560551
}
561552
);
562553

0 commit comments

Comments
 (0)