Full-Reward Quantity
Decimal-aware whole-token targets with proportional rewards below each target.
Each Rewarder V3 side has a full-reward quantity denominated in the token the maker sells.
quantityFactor = min(soldAmount / fullRewardQuantity, 1)An order below the target earns proportionally less. An order at or above it receives the full quantity component, but remains subject to the emission ceiling and spread multiplier.
Thirty-day ramp
The target begins at one whole token and rises geometrically for 30 days after that side activates:
Q(t) = 1 token × (Qmax / 1 token)^(min(t, 30 days) / 30 days)It remains at Qmax for the rest of the 365-day schedule.
The value is evaluated continuously in wall-clock seconds and stays flat after day 30.
NVDA/USDG targets
| Pool side | Maker sells | Start | Day-30 maximum | Raw start | Raw maximum |
|---|---|---|---|---|---|
| NVDA/USDG bid | USDG | 1 USDG | 1,000,000 USDG | 1e6 | 1_000_000e6 |
| NVDA/USDG ask | NVDA | 1 NVDA | 5,000 NVDA | 1e18 | 5_000e18 |
Generic token decimals
Factory callers provide whole-token maxima, such as 20_000. The Factory reads decimals(), uses one whole token as the start, and scales the maximum into raw units. Native ETH uses 18 decimals.
The Factory rejects a maximum above 1,000,000 whole tokens relative to the one-token start. It does not require a token to be USDG, NVDA, 6 decimals, or 18 decimals.
Continuous integration
The target moves continuously while an order is active. The rewarder analytically integrates the quantity factor against the emission curve rather than sampling only the start or end of an interval.
quantityAdjusted[a,b] = integral from a to b of min(soldAmount / Q(t), 1) dC(t)The result is then multiplied by the spread factor applicable to that checkpointed interval.