Skip to content

Commit 982d939

Browse files
authored
[PSL-1158] optimise score-aggregation for health check & storage challenges (#866)
1 parent 5ef766f commit 982d939

16 files changed

+324
-381
lines changed

supernode/cmd/app.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ func runApp(ctx context.Context, config *configs.Config) error {
286286
senseRegister := senseregister.NewService(&config.SenseRegister, fileStorage, pastelClient, nodeClient, p2p, ddClient, hDB)
287287
cascadeRegister := cascaderegister.NewService(&config.CascadeRegister, fileStorage, pastelClient, nodeClient, p2p, hDB, rqstore)
288288
collectionRegister := collectionregister.NewService(&config.CollectionRegister, fileStorage, pastelClient, nodeClient, p2p, hDB)
289-
storageChallenger := storagechallenge.NewService(&config.StorageChallenge, fileStorage, pastelClient, nodeClient, p2p, nil, hDB, sDB)
289+
storageChallenger := storagechallenge.NewService(&config.StorageChallenge, fileStorage, pastelClient, nodeClient, p2p, hDB, sDB)
290290
healthCheckChallenger := healthcheckchallenge.NewService(&config.HealthCheckChallenge, fileStorage, pastelClient, nodeClient, p2p, nil, hDB, sDB)
291291
selfHealing := selfhealing.NewService(&config.SelfHealingChallenge, fileStorage, pastelClient, nodeClient, p2p, hDB, nftDownload, rqstore)
292292
// // ----Userdata Services----

supernode/services/healthcheckchallenge/accumulate_hc_challenge_data.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ func getCommonEvaluationResult(evaluationMap map[bool]int) bool {
153153
}
154154

155155
func (task *HCTask) processChallengerEvaluation(challengerEvaluations int, challengerID string, successThreshold int, infos types.PingInfos) error {
156-
aggregatedScoreData, err := task.scoreStore.GetAccumulativeHCData(challengerID)
156+
aggregatedScoreData, err := task.ScoreStore.GetAccumulativeHCData(challengerID)
157157
if err != nil {
158158
if errors.Is(err, sql.ErrNoRows) {
159159
nodeID, nodeIP := getNodeInfo(infos, challengerID)
@@ -173,15 +173,15 @@ func (task *HCTask) processChallengerEvaluation(challengerEvaluations int, chall
173173

174174
aggregatedScoreData.TotalChallengesAsChallengers = aggregatedScoreData.TotalChallengesAsChallengers + 1
175175

176-
if err := task.scoreStore.UpsertAccumulativeHCData(aggregatedScoreData); err != nil {
176+
if err := task.ScoreStore.UpsertAccumulativeHCData(aggregatedScoreData); err != nil {
177177
return err
178178
}
179179

180180
return nil
181181
}
182182

183183
func (task *HCTask) processRecipientEvaluation(recipientEvaluations int, recipientID string, successThreshold int, infos types.PingInfos) error {
184-
aggregatedScoreData, err := task.scoreStore.GetAccumulativeHCData(recipientID)
184+
aggregatedScoreData, err := task.ScoreStore.GetAccumulativeHCData(recipientID)
185185
if err != nil {
186186
if errors.Is(err, sql.ErrNoRows) {
187187
nodeID, nodeIP := getNodeInfo(infos, recipientID)
@@ -201,15 +201,15 @@ func (task *HCTask) processRecipientEvaluation(recipientEvaluations int, recipie
201201

202202
aggregatedScoreData.TotalChallengesAsRecipients = aggregatedScoreData.TotalChallengesAsRecipients + 1
203203

204-
if err := task.scoreStore.UpsertAccumulativeHCData(aggregatedScoreData); err != nil {
204+
if err := task.ScoreStore.UpsertAccumulativeHCData(aggregatedScoreData); err != nil {
205205
return err
206206
}
207207

208208
return nil
209209
}
210210

211211
func (task *HCTask) processObserverEvaluation(commonEval, observerEval bool, observerID string, infos types.PingInfos) error {
212-
aggregatedScoreData, err := task.scoreStore.GetAccumulativeHCData(observerID)
212+
aggregatedScoreData, err := task.ScoreStore.GetAccumulativeHCData(observerID)
213213
if err != nil {
214214
if errors.Is(err, sql.ErrNoRows) {
215215
nodeID, nodeIP := getNodeInfo(infos, observerID)
@@ -229,7 +229,7 @@ func (task *HCTask) processObserverEvaluation(commonEval, observerEval bool, obs
229229
aggregatedScoreData.CorrectObserverEvaluations++
230230
}
231231

232-
if err := task.scoreStore.UpsertAccumulativeHCData(aggregatedScoreData); err != nil {
232+
if err := task.ScoreStore.UpsertAccumulativeHCData(aggregatedScoreData); err != nil {
233233
return err
234234
}
235235

supernode/services/healthcheckchallenge/get_score_aggregation_challenges.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func (task *HCTask) GetScoreAggregationChallenges(ctx context.Context) error {
2121

2222
logger.Info("invoked")
2323

24-
tracker, err := task.scoreStore.GetScoreLastAggregatedAt(scorestore.HealthCheckChallengeScoreAggregationType)
24+
tracker, err := task.ScoreStore.GetScoreLastAggregatedAt(scorestore.HealthCheckChallengeScoreAggregationType)
2525
if err != nil {
2626
logger.WithError(err).Error("error retrieving score-aggregate tracker for healthcheck-challenges")
2727
return errors.Errorf("error retrieving score-aggregate tracker for healthcheck-challenges")
@@ -67,7 +67,7 @@ func (task *HCTask) GetScoreAggregationChallenges(ctx context.Context) error {
6767
}
6868
}
6969

70-
if err := task.scoreStore.UpsertScoreLastAggregatedAt(scorestore.HealthCheckChallengeScoreAggregationType); err != nil {
70+
if err := task.ScoreStore.UpsertScoreLastAggregatedAt(scorestore.HealthCheckChallengeScoreAggregationType); err != nil {
7171
logger.WithError(err).Error("error updating aggregated til for health-check-challenge score aggregation tracker")
7272
return errors.Errorf("error updating aggregated til")
7373
}

supernode/services/healthcheckchallenge/service.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ type HCService struct {
3838
numberOfChallengeReplicas int
3939
numberOfVerifyingNodes int
4040
historyDB queries.LocalStoreInterface
41-
scoreStore scorestore.ScoreStorageInterface
41+
ScoreStore scorestore.ScoreStorageInterface
4242

4343
currentBlockCount int32
4444
// currently unimplemented, default always used instead.
@@ -291,7 +291,7 @@ func NewService(config *Config, fileStorage storage.FileStorageInterface, pastel
291291
challengeStatusObserver: challengeStatusObserver,
292292
localKeys: sync.Map{},
293293
historyDB: historyDB,
294-
scoreStore: scoreDB,
294+
ScoreStore: scoreDB,
295295
eventRetryMap: make(map[string]int),
296296
}
297297
}

supernode/services/storagechallenge/accumulate_sc_data.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ func getCorrectHash(hashMap map[string]int) (correctHash string) {
139139
}
140140

141141
func (task *SCTask) processChallengerEvaluation(ctx context.Context, challengerEvaluations int, challengerID string, successThreshold int, infos types.PingInfos) error {
142-
aggregatedScoreData, err := task.scoreStore.GetAccumulativeSCData(challengerID)
142+
aggregatedScoreData, err := task.ScoreStore.GetAccumulativeSCData(challengerID)
143143
if err != nil {
144144
if errors.Is(err, sql.ErrNoRows) {
145145
nodeID, nodeIP := getNodeInfo(infos, challengerID)
@@ -158,15 +158,15 @@ func (task *SCTask) processChallengerEvaluation(ctx context.Context, challengerE
158158
aggregatedScoreData.CorrectChallengerEvaluations = aggregatedScoreData.CorrectChallengerEvaluations + 1
159159
}
160160

161-
if err := task.scoreStore.UpsertAccumulativeSCData(aggregatedScoreData); err != nil {
161+
if err := task.ScoreStore.UpsertAccumulativeSCData(aggregatedScoreData); err != nil {
162162
return err
163163
}
164164

165165
return nil
166166
}
167167

168168
func (task *SCTask) processRecipientEvaluation(ctx context.Context, recipientEvaluations int, recipientID string, successThreshold int, infos types.PingInfos) error {
169-
aggregatedScoreData, err := task.scoreStore.GetAccumulativeSCData(recipientID)
169+
aggregatedScoreData, err := task.ScoreStore.GetAccumulativeSCData(recipientID)
170170
if err != nil {
171171
if errors.Is(err, sql.ErrNoRows) {
172172
nodeID, nodeIP := getNodeInfo(infos, recipientID)
@@ -186,15 +186,15 @@ func (task *SCTask) processRecipientEvaluation(ctx context.Context, recipientEva
186186

187187
aggregatedScoreData.TotalChallengesAsRecipients = aggregatedScoreData.TotalChallengesAsRecipients + 1
188188

189-
if err := task.scoreStore.UpsertAccumulativeSCData(aggregatedScoreData); err != nil {
189+
if err := task.ScoreStore.UpsertAccumulativeSCData(aggregatedScoreData); err != nil {
190190
return err
191191
}
192192

193193
return nil
194194
}
195195

196196
func (task *SCTask) processObserverEvaluation(ctx context.Context, commonHash string, observerTrueHash, observerID string, infos types.PingInfos) error {
197-
aggregatedScoreData, err := task.scoreStore.GetAccumulativeSCData(observerID)
197+
aggregatedScoreData, err := task.ScoreStore.GetAccumulativeSCData(observerID)
198198
if err != nil {
199199
if errors.Is(err, sql.ErrNoRows) {
200200
nodeID, nodeIP := getNodeInfo(infos, observerID)
@@ -213,7 +213,7 @@ func (task *SCTask) processObserverEvaluation(ctx context.Context, commonHash st
213213
aggregatedScoreData.CorrectObserverEvaluations++
214214
}
215215

216-
if err := task.scoreStore.UpsertAccumulativeSCData(aggregatedScoreData); err != nil {
216+
if err := task.ScoreStore.UpsertAccumulativeSCData(aggregatedScoreData); err != nil {
217217
return err
218218
}
219219

supernode/services/storagechallenge/aggregate_challenge_score.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,30 @@ package storagechallenge
22

33
import (
44
"context"
5+
56
"github.com/pastelnetwork/gonode/common/errors"
67
"github.com/pastelnetwork/gonode/common/log"
78
"github.com/pastelnetwork/gonode/common/types"
89
)
910

11+
const (
12+
challengerWeightage float64 = 40
13+
recipientWeightage float64 = 40
14+
observerWeightage float64 = 20
15+
)
16+
1017
// AggregateChallengesScore calculates the score based on specified weightages
1118
func (task *SCTask) AggregateChallengesScore(ctx context.Context) error {
1219
logger := log.WithContext(ctx).WithField("method", "AggregateChallengesScore")
1320
logger.Info("invoked")
1421

15-
accumulativeSCNodesData, err := task.scoreStore.GetAccumulativeSCDataForAllNodes()
22+
accumulativeSCNodesData, err := task.ScoreStore.GetAccumulativeSCDataForAllNodes()
1623
if err != nil {
1724
logger.WithError(err).Error("error retrieving accumulative data for nodes")
1825
return errors.Errorf("error retrieving accumulative data for nodes")
1926
}
2027

21-
accumulativeHCNodesData, err := task.scoreStore.GetAccumulativeHCDataForAllNodes()
28+
accumulativeHCNodesData, err := task.ScoreStore.GetAccumulativeHCDataForAllNodes()
2229
if err != nil {
2330
logger.WithError(err).Error("error retrieving accumulative data for nodes")
2431
return errors.Errorf("error retrieving accumulative data for nodes")
@@ -50,7 +57,7 @@ func (task *SCTask) AggregateChallengesScore(ctx context.Context) error {
5057

5158
for nodeID, nodeData := range mapOfAggregatedScores {
5259

53-
if err := task.scoreStore.UpsertAggregatedScore(nodeData); err != nil {
60+
if err := task.ScoreStore.UpsertAggregatedScore(nodeData); err != nil {
5461
logger.WithField("node_id", nodeID).WithError(err).Error("error updating aggregated score")
5562
continue
5663
}
@@ -63,15 +70,15 @@ func AggregateChallengeScore(data types.AccumulativeChallengeData) float64 {
6370
var challengerScore, recipientScore, observerScore float64
6471

6572
if data.TotalChallengesAsChallengers > 0 {
66-
challengerScore = (float64(data.CorrectChallengerEvaluations) / float64(data.TotalChallengesAsChallengers)) * 40
73+
challengerScore = (float64(data.CorrectChallengerEvaluations) / float64(data.TotalChallengesAsChallengers)) * challengerWeightage
6774
}
6875

6976
if data.TotalChallengesAsRecipients > 0 {
70-
recipientScore = (float64(data.CorrectRecipientEvaluations) / float64(data.TotalChallengesAsRecipients)) * 40
77+
recipientScore = (float64(data.CorrectRecipientEvaluations) / float64(data.TotalChallengesAsRecipients)) * recipientWeightage
7178
}
7279

7380
if data.TotalChallengesAsObservers > 0 {
74-
observerScore = (float64(data.CorrectObserverEvaluations) / float64(data.TotalChallengesAsObservers)) * 20
81+
observerScore = (float64(data.CorrectObserverEvaluations) / float64(data.TotalChallengesAsObservers)) * observerWeightage
7582
}
7683

7784
return challengerScore + recipientScore + observerScore

0 commit comments

Comments
 (0)