Score methodology
What the score means
The diversity score (0–100) measures how well a validator contributes to network decentralization. It combines geographic diversity (country and city) with infrastructure diversity (hosting provider). Less saturated locations and providers receive higher scores.
Input fields used
- Country — from validator-info metadata or IP geolocation
- City — from validator-info metadata or IP geolocation
- Provider — hosting provider, from metadata or IP org/hostname
Logarithmic penalty
Each field is penalized based on how many other validators share the same value. The penalty uses the natural logarithm so that going from 1→2 validators has a small impact, while 10→100 has diminishing additional impact.
Penalty = log(max(1, count)). For example: count 1 → 0, count 2 → 0.69, count 10 → 2.30, count 100 → 4.61.
Formulas
geoPenalty = log(countryCount) × 14 + log(cityCount) × 6 providerPenalty = log(providerCount) × 18 geoScore = clamp(100 - geoPenalty, 0, 100) providerScore = clamp(100 - providerPenalty, 0, 100) total = clamp(geoScore × 0.55 + providerScore × 0.45, 0, 100)
Worked example
Fictional validator "Acme Staking" in Germany, Berlin, provider AWS. Assume: 20 validators in Germany, 5 in Berlin, 15 on AWS.
geoPenalty = log(20)×14 + log(5)×6 = 2.996×14 + 1.609×6 ≈ 41.93 + 9.65 ≈ 51.6 providerPenalty = log(15)×18 ≈ 2.708×18 ≈ 48.7 geoScore = 100 - 51.6 ≈ 48 providerScore = 100 - 48.7 ≈ 51 total = 48×0.55 + 51×0.45 ≈ 26.4 + 23.0 ≈ 49 → badge: saturated
Badge interpretation
- unique — score ≥ 80. Strong diversity contribution.
- ok — score 55–79. Moderate diversity.
- saturated — score < 55. Overlapping with many others.
Missing metadata handling
Validators are classified into two categories:
- With metadata: Validators that have at least one of country, city, or provider. Missing individual fields within this group are marked as "Unknown" and included in diversity calculations.
- Without metadata: Validators with no country, city, or provider data at all. These are marked as "No data" and receive an "insufficient-data" badge with a score of 0, rather than being artificially saturated.