Points and Badges
Architecture
┌──────────────────────────────────────────────────────────────────┐
│ PointsHubV2 │
│ (single aggregator — total balance per user) │
│ │
│ getTotalPoints(user) ─► Σ across modules │
│ getClaimablePoints(user) ─► Σ minus already-deducted │
└─────────────┬──────────────────────────────┬──────────────────────┘
│ │
│ REWARD_ROLE │ DEDUCTOR_ROLE
│ (writes to) │ (deducts on use)
│ │
┌──────────┴──────────┐ ┌─────────┴─────────┐
▼ ▼ ▼ ▼
┌─────────────┐ ┌──────────────┐ ┌────────────┐ ┌──────────────┐
│ StakingModule│ │ LPStaking │ │ Launchpad │ │ Points │
│ (PPT stake) │ │ Module │ │ Drop │ │ Redemption │
│ │ │ │ │ │ │ │
│ • Flexible │ │ (Pancake LP) │ │ commit() │ │ consume │
│ • Locked │ │ │ │ consumes │ │ points for │
│ • Boost 1-2x │ │ │ │ points │ │ rewards │
└──────────────┘ └──────────────┘ └────────────┘ └──────────────┘Module
Mainnet address
Role
Point Sources
Source 1: PPT Staking (live)
Stake type
Lock window
Boost
Notes
Constant
Value
Source
Source 2: LP Staking (live)
Source 3: Future modules
Point Sinks
Sink 1: Launchpad Drops (live)
Sink 2: Direct Redemption (live)
Soulbound Badges
Enum
Display name
Color
Earned by
What badges unlock
Putting It Together — A Holder's Lifecycle
Last updated