@@ -253,9 +253,24 @@ func (s *Staker) IncreaseStake(validator thor.Address, endorser thor.Address, am
253253 if err := s .validateNextPeriodTVL (validator ); err != nil {
254254 return err
255255 }
256+ agg , err := s .aggregationService .GetAggregation (validator )
257+ if err != nil {
258+ return err
259+ }
260+
261+ weightedStake := stakes .NewWeightedStake (amount , validation .Multiplier )
262+ if agg .LockedVET .Sign () == 1 || agg .PendingVET .Sign () == 1 {
263+ weightedStake .AddWeight (* amount )
264+ aggWeightIncrease := stakes .NewWeightedStake (big .NewInt (0 ), validation .Multiplier )
265+ aggWeightIncrease .AddWeight (* amount )
266+ err = s .aggregationService .AddPendingVET (validator , aggWeightIncrease )
267+ if err != nil {
268+ return err
269+ }
270+ }
256271
257272 // update global totals
258- if err := s .globalStatsService .AddQueued (stakes . NewWeightedStake ( amount , validation . Multiplier ) ); err != nil {
273+ if err := s .globalStatsService .AddQueued (weightedStake ); err != nil {
259274 return err
260275 }
261276
@@ -272,8 +287,20 @@ func (s *Staker) DecreaseStake(validator thor.Address, endorser thor.Address, am
272287 return err
273288 }
274289
290+ agg , err := s .aggregationService .GetAggregation (validator )
291+ if err != nil {
292+ return err
293+ }
294+
295+ weightedStake := stakes .NewWeightedStake (amount , validation .Multiplier )
296+ if agg .LockedVET .Sign () == 1 || agg .PendingVET .Sign () == 1 {
297+ weightedStake .AddWeight (* amount )
298+ aggWeightDecrease := stakes .NewWeightedStake (big .NewInt (0 ), validation .Multiplier )
299+ aggWeightDecrease .AddWeight (* amount )
300+ }
301+
275302 if queued {
276- err = s .globalStatsService .RemoveQueued (stakes . NewWeightedStake ( amount , validation . Multiplier ) )
303+ err = s .globalStatsService .RemoveQueued (weightedStake )
277304 if err != nil {
278305 return err
279306 }
@@ -357,6 +384,9 @@ func (s *Staker) AddDelegation(
357384 }
358385 if agg .PendingWeight .Cmp (big .NewInt (0 ).Add (valStake , stake )) < 0 {
359386 weightedStake .AddWeight (* valStake )
387+ if val .Status != validation .StatusQueued {
388+ weightedStake .AddWeight (* val .QueuedVET )
389+ }
360390 }
361391 }
362392
@@ -374,7 +404,9 @@ func (s *Staker) AddDelegation(
374404 }
375405
376406 // update global figures
377- weightedStake .AddWeight (* val .QueuedVET )
407+ if val .Status == validation .StatusQueued {
408+ weightedStake .AddWeight (* val .QueuedVET )
409+ }
378410 if err = s .globalStatsService .AddQueued (weightedStake ); err != nil {
379411 return nil , err
380412 }
0 commit comments