diff --git a/x/dao/keeper/distribution.go b/x/dao/keeper/distribution.go index fedb737..d483186 100644 --- a/x/dao/keeper/distribution.go +++ b/x/dao/keeper/distribution.go @@ -49,7 +49,10 @@ func (k Keeper) ComputeDistribution(ctx sdk.Context, lastReissuance int64, block distribution.PopAddr = k.GetParams(ctx).DistributionAddressPop // PoP rewards subtracted from DaoAmount and added to PoPAmount for later distribution - validatorPoPRewards := k.GetValidatorPoPReward(ctx) + validatorPoPRewards, err := k.accumulateValidatorPoPRewardsForDistribution(ctx, lastReissuance, blockHeight) + if err != nil { + util.GetAppLogger().Error(ctx, "error calculating Validator PoP rewards from height %v to %v", lastReissuance, blockHeight) + } distribution.DaoAmount = util.UintValueToRDDLTokenString(uint64(float64(amount)*types.PercentageDao) - validatorPoPRewards) distribution.EarlyInvAmount = util.UintValueToRDDLTokenString(uint64(float64(amount) * types.PercentageEarlyInvestor)) @@ -60,6 +63,20 @@ func (k Keeper) ComputeDistribution(ctx sdk.Context, lastReissuance int64, block return distribution } +func (k Keeper) accumulateValidatorPoPRewardsForDistribution(ctx sdk.Context, firstPop int64, lastPop int64) (amount uint64, err error) { + challenges, err := k.GetChallengeRange(ctx, firstPop, lastPop) + if err != nil { + return 0, err + } + for _, challenge := range challenges { + reward, found := k.getChallengeInitiatorReward(ctx, challenge.GetHeight()) + if found { + amount += reward + } + } + return amount, nil +} + func getUint64FromTxString(ctx sdk.Context, tx string) (amount uint64, err error) { subStrings := strings.Split(tx, " ") if len(subStrings) < 3 {