DEEPSTATEDOCS
Market Making

Full-Reward Quantity

Exponential NVDA and USDG targets with linear reward scaling below each target.

Implemented on merged protocol master

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.

Full-reward quantityExponential ramp · logarithmic quantity axis
USDG bid sideNVDA side
10^010^110^210^310^410^510^60d5d10d15d20d25d30d

The value is evaluated continuously in wall-clock seconds and stays flat after day 30.

Targets

Pool sideMaker sellsStartDay-30 maximumRaw startRaw maximum
NVDA/USDG bidUSDG1 USDG1,000,000 USDG1e61_000_000e6
NVDA/USDG askNVDA1 NVDA5,000 NVDA1e185_000e18

USDG has 6 decimals and NVDA has 18. The deployment script rejects tokens with different decimals for these two roles.

Ramp table

DayUSDG targetNVDA target
01.0000001.000000
11.5848931.328309
510.0000004.135186
725.1188647.296137
10100.00000017.099759
151,000.00000070.710678
2010,000.000000292.401774
25100,000.0000001,209.135588
301,000,000.0000005,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.

On this page