Docs
Scoring Types
The various scoring types of Merkl campaigns
What is Scoring?
Scoring types define how individual user contributions are measured and converted into reward shares. While distribution types determine the overall reward model and budget allocation, scoring types control how each user's activity is scored within that model.
At its core, Merkl computes time-weighted integrals of user balances or contributions, essentially tracking how much liquidity or assets each user provided over time.
Scoring Types Overview
Merkl supports various scoring methods. Campaign creators choose how individual user contributions are measured. Each scoring type applies a different function to the time-weighted integrals. Each function creates a distinct reward allocation pattern.
-
Default scoring (1:1 mapping): By default, Merkl uses a proportional scoring system where a user's share of rewards equals their share of the total time-weighted contributions. For example, if a user contributed 10% of the total liquidity-time across all participants, they receive 10% of the rewards (in a variable APR campaign).
-
Custom scoring functions: Campaign creators can apply different scoring functions to transform these integrals before calculating reward shares. Examples include:
- Maximum balance cap: Taking the minimum between a user's time-weighted balance and a predefined cap. This limits how much eligible balance counts toward rewards, preventing excessive concentration.
- Logarithmic scoring: Applying a logarithmic function to the time-weighted integral. This reduces the advantage of large contributors, creating a more equitable distribution where smaller participants receive proportionally higher rewards relative to their contribution size.
- New deposits only: Rewarding only balance increases above a snapshot taken at campaign start, or at a specified time.
- Old deposits only: Rewarding the portion of a snapshot balance still held. This is the inverse of "new deposits only".
Merkl supports many more scoring types beyond these examples: capped and threshold variants, time-based boosts, and protocol-specific methods.
This page covers a few representative examples, not the full list. For the complete, always-current set of scoring types — and the exact parameters each one takes — see the schema explorer in our developer docs. It reads live from the engine, so it is the single source of truth for what Merkl supports.