Emissions
fact Sources contracts/src/governance/EmissionSchedule.sol and contracts/src/governance/Minter.sol. Emissions are the only NOTE that gauges distribute. The schedule is a pure function of time; the Minter is the only path that turns it into tokens, and it can never exceed the NOTE epoch cap.
Schedule
Section titled “Schedule”START is rounded down to a week boundary at construction and is immutable. The other four parameters are governed through setSchedule(initialWeekly, decayBps, decayPeriodWeeks, floorWeekly) (owner = 48-hour Timelock), which reverts InvalidSchedule when decayBps ≥ 10,000, decayPeriodWeeks == 0 or floor > initial, and emits ScheduleUpdated(initialWeekly, decayBps, decayPeriodWeeks, floorWeekly).
Deployed defaults from DeployGovernance. Emission is constant inside a 4-week period and steps down 2% at each period boundary until it reaches the floor after about 123 periods (week 492, roughly 9.5 years). The decay loop exits early once the floor is reached, so gas is bounded by periods to the floor, not by elapsed time.
est. The tokenomics document (v2, September 2026) reserves a gauge-emission budget of 30,000,000 NOTE (30% of the hard cap) and quotes mainnet launch parameters of 250,000 NOTE per week, 3% decay every 4 weeks and a 20,000 floor, under which the budget is exhausted after roughly 5.8 years. The budget is not enforced by EmissionSchedule; governance is expected to lower the schedule to zero when it is reached, and the NOTE epoch cap remains the hard brake. The DeployGovernance defaults above are the current deploy-script values and may be changed before launch.
Schedule table
Section titled “Schedule table”illustrative Computed from the defaults; governance may change any of the four parameters through a proposal.
| Week | Period | Weekly emission | Cumulative (approx.) |
|---|---|---|---|
| 0 | 0 | 300,000 | — |
| 4 | 1 | 294,000 | — |
| 12 | 3 | 282,358 | — |
| 26 | 6 | 265,753 | — |
| 52 (year 1) | 13 | 230,707 | 13.86m |
| 104 (year 2) | 26 | 177,419 | 24.52m |
| 156 (year 3) | 39 | 136,439 | 32.71m |
| 208 (year 4) | 52 | 104,925 | 39.02m |
| 260 (year 5) | 65 | 80,689 | 43.86m |
| 364 (year 7) | 91 | 47,719 | — |
| 468 (year 9) | 117 | 28,221 | — |
| 492 onward | 123+ | 25,000 (floor) | 55.70m at year 10 |
The weekly mint
Section titled “The weekly mint”fact Minter.mintWeekly() is nonReentrant, whenNotPaused and callable by anyone once per week:
week = currentWeek(); revertAlreadyMinted(week)if already done.budget = min(schedule.weeklyEmission(week), NOTE.epochMintRemaining()); revertNothingToMint(week)if zero.- Mark the week minted, then for every registered gauge:
rw = controller.gaugeRelativeWeightWrite(gauge, week),amount = budget × rw / 1e18clamped tobudget − mintedSoFar; if non-zero,NOTE.mint(gauge, amount)followed bygauge.notifyRewardAmount(amount). - Record
mintedForWeek,mintedToGauge,totalMinted; emitGaugeMintedper gauge andWeeklyMint(week, budget, minted).
The clamp in step 3 is a second line of defence: totalMinted cannot exceed the schedule even if a future controller version mis-reports weights. setSchedule(schedule) on the Minter (owner) swaps the schedule contract; currentWeek() and mintedWeek(week) are views. The first mintWeekly() is possible from EMISSION_START, which defaults to the week boundary after deployment. NOTE.setMinter(minter, true) must have been executed by the NOTE owner.
Interplay with the NOTE epoch cap
Section titled “Interplay with the NOTE epoch cap”NOTE has its own brake: mintCapPerEpoch per 7-day epoch counted from GENESIS, with epochMintRemaining() = min(mintCapPerEpoch − mintedInEpoch, CAP − totalSupply). The Minter is one of several minters (bonds and governed Treasury minting are the others) and shares that headroom.
| Situation | What mintWeekly does |
|---|---|
| Epoch headroom ≥ scheduled emission | Mints the full schedule |
| Bonds have used part of the epoch cap | Mints only the remaining headroom; never reverts on the cap and never pre-empts other minters |
| Epoch fully used by others | Reverts NothingToMint(week); the week’s emission is forgone, not deferred |
| Schedule and epoch windows misaligned | The schedule week is Thursday-anchored while NOTE’s epoch is anchored at GENESIS; a partial overlap only makes the effective budget more conservative |
Raising emissions therefore takes two governed steps when the cap binds: EmissionSchedule.setSchedule and NOTE.setMintCapPerEpoch, both through the 48-hour Timelock. The epoch cap is the ceiling; the schedule is the target.
Where the NOTE goes
Section titled “Where the NOTE goes”Emissions are split by gauge relative weight, so veNOTE voters decide the allocation between COUPON stakers per series, Desk depositors and sNOTE stakers each week. See Gauges for the weekly cycle and a numerical split of a 300,000 NOTE week, and Desk for how the same votes steer the Desk’s per-underlying caps.