Epic: #1229 · Spec: §6.3 · Type: CODE · Estimate: 0.5 day · Depends on: T2.4b
Scope
GET /api/airdrop/projection?address=X
Auth: none (public read)
Response shape:
```json
{
"address": "0x...",
"buy_volume": 1234.5,
"qualified_refs": 3,
"has_fc_bonus": true,
"multiplier": 1.8,
"weighted_spend": 2222.1,
"community_total": 100000.0,
"projected_share": {
"bronze": 12.3,
"silver": 123.4,
"gold": 617.0,
"diamond": 1234.0
}
}
```
Implementation:
- Select base columns for
address from shared v_weighted_spend helper (T2.4b)
- Read current FDV from
pl_daily_prices to determine current milestone tier
- Apply
share = released_pool × (weighted_spend / community_total) for EACH milestone tier (Bronze/Silver/Gold/Diamond)
- Return all 4 projected shares so UI can render the climb chart
Cache: 30s.
Canonical: This is the single v5 contribution API. /api/airdrop/points (T2.5f) becomes a deprecated thin shim.
Acceptance
Dependencies
T2.4b (shared SQL helper)
Epic: #1229 · Spec: §6.3 · Type: CODE · Estimate: 0.5 day · Depends on: T2.4b
Scope
GET /api/airdrop/projection?address=XAuth: none (public read)
Response shape:
```json
{
"address": "0x...",
"buy_volume": 1234.5,
"qualified_refs": 3,
"has_fc_bonus": true,
"multiplier": 1.8,
"weighted_spend": 2222.1,
"community_total": 100000.0,
"projected_share": {
"bronze": 12.3,
"silver": 123.4,
"gold": 617.0,
"diamond": 1234.0
}
}
```
Implementation:
addressfrom sharedv_weighted_spendhelper (T2.4b)pl_daily_pricesto determine current milestone tiershare = released_pool × (weighted_spend / community_total)for EACH milestone tier (Bronze/Silver/Gold/Diamond)Cache: 30s.
Canonical: This is the single v5 contribution API.
/api/airdrop/points(T2.5f) becomes a deprecated thin shim.Acceptance
v_weighted_spend)Dependencies
T2.4b (shared SQL helper)