Full-Reward Quantity
Exponential NVDA and USDG targets with linear reward scaling below each target.
Each NVDA/USDG side has a fullRewardQuantity: the live collateral amount required to earn 100% of that side's scheduled ceiling while the order holds the best price. The quantity is denominated in the token the maker is selling.
At one instant:
quantityFactor = min(soldAmount / fullRewardQuantity, 1)A top order below the target earns in direct proportion. An order at or above the target earns the full ceiling. More size never allows the rewarder to exceed its schedule.
Ramp
The target begins at one whole sold token and rises exponentially for the first 30 days after that side activates:
Q(t) = Qstart × (Qmax / Qstart)^(min(t, 30 days) / 30 days)After day 30, it remains at Qmax through the end of the 395-day side schedule.
The value is evaluated continuously in wall-clock seconds and stays flat after day 30.
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 |
USDG has 6 decimals and NVDA has 18. The deployment script rejects tokens with different decimals for these two roles.
Ramp table
| Day | USDG target | NVDA target |
|---|---|---|
| 0 | 1.000000 | 1.000000 |
| 1 | 1.584893 | 1.328309 |
| 5 | 10.000000 | 4.135186 |
| 7 | 25.118864 | 7.296137 |
| 10 | 100.000000 | 17.099759 |
| 15 | 1,000.000000 | 70.710678 |
| 20 | 10,000.000000 | 292.401774 |
| 25 | 100,000.000000 | 1,209.135588 |
| 30 | 1,000,000.000000 | 5,000.000000 |
Interval integration
The target moves while an order is active. The rewarder does not sample only the start or end value. It analytically integrates the quantity factor against the changing emission curve:
reward[a,b] = integral from a to b of min(soldAmount / Q(t), 1) dC(t)This keeps the result nearly independent of how often hooks split the same economic interval. Tests partition long intervals thousands of ways and bound the remaining fixed-point rounding dust.
Sold-token engine support
The matching engine preserves the five-word hook ABI while reporting the required economic units:
- a market bid reports quote collateral sold, USDG used to buy NVDA; and
- a market ask reports base collateral sold, NVDA offered for USDG.
The engine derives bid collateral from the packed price and remaining base quantity using settlement rounding, and saturates values above uint160.max. It also exposes topOrder(bookId, isBid) so a claim can verify the current nonce and live sold amount.
The matching engine and rewarder must be compiled and tested together because reward correctness depends on this exact unit convention.