Skip to content

Commit 71cc094

Browse files
committed
feat: fill efficiency field in dashboard group summary
See: BEDS-1065
1 parent cfe2495 commit 71cc094

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

backend/pkg/api/data_access/vdb_summary.go

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -678,8 +678,13 @@ func (d *DataAccessService) GetValidatorDashboardGroupSummary(ctx context.Contex
678678
totalBlockChance := float64(0)
679679
totalInclusionDelaySum := int64(0)
680680
totalInclusionDelayDivisor := int64(0)
681+
681682
totalSyncExpected := float64(0)
682-
totalProposals := uint32(0)
683+
totalSyncScheduled := uint32(0)
684+
totalSyncExecuted := uint32(0)
685+
686+
totalBlocksScheduled := uint32(0)
687+
totalBlocksProposed := uint32(0)
683688

684689
validatorArr := make([]t.VDBValidator, 0)
685690
for _, row := range rows {
@@ -699,15 +704,18 @@ func (d *DataAccessService) GetValidatorDashboardGroupSummary(ctx context.Contex
699704
if row.ValidatorIndex == 0 && row.BlocksProposed > 0 && row.BlocksProposed != row.BlocksScheduled {
700705
row.BlocksProposed-- // subtract the genesis block from validator 0 (TODO: remove when fixed in the dashoard data exporter)
701706
}
702-
703-
totalProposals += row.BlocksScheduled
707+
totalBlocksProposed += row.BlocksProposed
708+
totalBlocksScheduled += row.BlocksScheduled
704709
if row.BlocksScheduled > 0 {
705710
if ret.ProposalValidators == nil {
706711
ret.ProposalValidators = make([]t.VDBValidator, 0, 10)
707712
}
708713
ret.ProposalValidators = append(ret.ProposalValidators, t.VDBValidator(row.ValidatorIndex))
709714
}
710715

716+
totalSyncScheduled += row.SyncScheduled
717+
totalSyncExecuted += row.SyncExecuted
718+
711719
ret.SyncCommittee.StatusCount.Success += uint64(row.SyncExecuted)
712720
ret.SyncCommittee.StatusCount.Failed += uint64(row.SyncScheduled) - uint64(row.SyncExecuted)
713721

@@ -773,7 +781,7 @@ func (d *DataAccessService) GetValidatorDashboardGroupSummary(ctx context.Contex
773781
}
774782

775783
if totalBlockChance > 0 {
776-
ret.Luck.Proposal.Percent = (float64(totalProposals)) / totalBlockChance * 100
784+
ret.Luck.Proposal.Percent = (float64(totalBlocksScheduled)) / totalBlockChance * 100
777785

778786
// calculate the average time it takes for the set of validators to propose a single block on average
779787
ret.Luck.Proposal.AverageIntervalSeconds = uint64(time.Duration((luckHours / totalBlockChance) * float64(time.Hour)).Seconds())
@@ -825,6 +833,20 @@ func (d *DataAccessService) GetValidatorDashboardGroupSummary(ctx context.Contex
825833
ret.SyncCommittee.Validators = ret.SyncCommittee.Validators[:3]
826834
}
827835
}
836+
var attestationEfficiency, proposerEfficiency, syncEfficiency sql.NullFloat64
837+
if totalIdealAttestationRewards > 0 {
838+
attestationEfficiency.Float64 = decimal.NewFromInt(totalAttestationRewards).Div(decimal.NewFromInt(totalIdealAttestationRewards)).InexactFloat64()
839+
attestationEfficiency.Valid = true
840+
}
841+
if totalBlocksScheduled > 0 {
842+
proposerEfficiency.Float64 = float64(totalBlocksProposed) / float64(totalBlocksScheduled)
843+
proposerEfficiency.Valid = true
844+
}
845+
if totalSyncScheduled > 0 {
846+
syncEfficiency.Float64 = float64(totalSyncExecuted) / float64(totalSyncScheduled)
847+
syncEfficiency.Valid = true
848+
}
849+
ret.Efficiency = utils.CalculateTotalEfficiency(attestationEfficiency, proposerEfficiency, syncEfficiency)
828850

829851
return ret, nil
830852
}

0 commit comments

Comments
 (0)