Docs

Technical Specification: Rollup Activity Rank

1. Overview

This document provides a detailed technical specification for the Rollups Activity Rank system. This system is designed to evaluate and rank blockchain rollups built on Celestia based on their on-chain activity, development momentum, and total value locked (TVL) growth.

The final score is a weighted aggregation of several normalized metrics, calculated periodically to provide a near-real-time assessment of rollup performance.

2. Master Ranking Formula

The final Activity Rank Score for a rollup is calculated as a weighted sum of its normalized metric scores.

Where:

  • is the normalized score for metric i, scaled to a range of 0, 100.
  • is the weight (coefficient) assigned to metric i.
  • The sum of all coefficients equals 1.

2.1. Calculation and Data Refresh Cadence

The system operates on a multi-tiered refresh schedule due to limitations of various data sources:

  • Final Rank Calculation: The master ranking formula is executed every hour, aggregating the most recently available data.
  • On-chain Metrics: Data for blobs_count and mb_price are updated hourly.
  • TVL Data: Updated once per day.
  • GitHub Metrics: Updated once per week.

This means that while the overall rank is refreshed hourly, the components of that rank change at different intervals.

3. Metric Normalization and Dynamic Baselines

3.1. Dynamic Baselines for Normalization

For metrics requiring a comparative maximum or minimum value (e.g., maxValue, minValue), these values are calculated dynamically at the time of the rank computation. They are derived from the set of all active rollups.

  • maxValue = The maximum value observed for that metric across all rollups.
  • minValue = The minimum value observed for that metric across all rollups.

Note: Rank Volatility This dynamic approach makes the ranking highly competitive and relative. A rollup's rank can change not only due to its own activity but also due to significant changes in the activity of its peers. This creates a volatile environment where ranks are a direct reflection of performance relative to the current ecosystem.

3.2. Normalization Formulas

Metrics are normalized using one of the following functions. The output of each function is multiplied by 100 to produce the final metric score .

TypeFormulaSQL Implementation Notes
QuantitativeLEAST(value / maxValue, 1)
LogarithmicLOG(value) / LOG(maxValue). Handles value <= 0 by returning 0.
Reciprocal Quant.LEAST((maxValue - value) / (maxValue - minValue), 1)
Time-BasedEXP(-(EXTRACT(EPOCH FROM (reference - value)) / delay))

4. Metric Implementation Details

The final score is composed of the following six metrics.

MetricTypeCoeff. (K)Normalization Details & Formulas
Price for MbReciprocal Quant.0.20value = mb_price. maxValue and minValue are dynamic. A lower price gives a higher score.
BlobsLogarithmic0.20value = blobs_count. maxValue is dynamic. Uses base-10 logarithm.
Last ActivityTime-Based0.20value = last_message_time. referenceValue = now(). delay = 43,200 (12 hours).
TVLCustom (Growth & Stability)0.30The score is pre-calculated based on a 7-day TVL analysis. See Section 5 for details.
Last CommitTime-Based0.05value = last_pushed_at. referenceValue = MAX(last_pushed_at) across all rollups. delay = 2,419,200 (4 weeks).
CommitsQuantitative0.05value = commits_weekly. maxValue is dynamic.

Note: Last Commit Reference The Last Commit metric uses a relative time reference (MAX(last_pushed_at)) instead of now(). This was an intentional choice to measure development activity relative to the most "fresh" project in the ecosystem, preventing universal score decay during periods of low global activity (e.g., holidays).

5. TVL Score Calculation

The TVL score (tvl_rank) constitutes 30% of the total rank. Its objective is to reward stable, sustained TVL growth.

5.1. Parameters & Filtering

  • Data Window: A historical period of up to 31 days.
  • Minimum Data Points: A rollup must have at least 7 days of TVL data within the window to be scored.
  • Minimum TVL: Rollups with a current TVL below a set threshold (e.g., $1,000,000) are excluded and receive a final TVL score of 0.

5.2. Raw Score Calculation

For each eligible rollup, a raw_score is computed to balance total growth against day-to-day volatility.

  • Calculate Daily Differences (diffs):
    An array of daily TVL changes is created from the historical data:
    diff[i] = TVL[day i] - TVL[day i-1]
  • Calculate Volatility:
    The standard deviation of the diffs array is calculated to quantify the volatility of the TVL changes.
    volatility = standard_deviation(diffs)
  • Calculate Total Change:
    The total growth over the entire window is calculated.
    change = TVL[last day] - TVL[first day]
  • Calculate Raw Score:
    The final raw score is the total change penalized by its volatility.

Note: TVL Score Behavior This formula is designed to reward high growth while actively penalizing instability. A rollup with massive but erratic TVL swings will have a high volatility, significantly reducing its score. A rollup with lower but smooth, consistent growth may achieve a higher score. This prioritizes the quality and sustainability of growth over short-term hype.

5.3. Normalization

The raw scores are normalized to the final 0, 100 range.

  • Find min_score and max_score from the set of all calculated raw_scores.
  • If max_score == min_score, all rollups receive a score of 100.
  • Otherwise, the normalized score is calculated as:

6. Final Aggregation

The final rank is computed by summing the weighted scores of all metrics. Null or failed metric calculations are treated as 0.

Claim your ideas or suggestions: Issue Tracker