Optimism · Season 8 · Growth grants

What the liquidity did after 2.2M OP

Nine Season 8 growth programs, measured contract by contract on-chain, day by day: what the liquidity in the incentivized contracts did while the rewards ran, what it did afterwards, and what the next program should do differently.

Data through 2026-09-15, when the two programs still running were frozen. Page built 2026-09-22. The ΔTVL, peak and milestone figures come from measurements committed to a public repository: cohort_summary.py works out the figures, and report_html.py builds this page. Dates and OP amounts come from the sources listed at the end.


The short version

Observed ΔTVL +$8.00Min the targeted contracts across the nine programs, or $3.62 per OP delivered. Six of nine were positive.
Concentration 84%of the net total came from one grant, 40acres.finance. Of the positive movements alone it is 75.8%.
Milestones 5 of 8grants with a Milestone 1 target reached that target on at least one day inside their incentive window. Of the seven with a full-program target, one reached it.
Unclaimed 1.27M OPsits in the claim contract, never claimed, by grants that never ran a program.

One way of looking at the season. These figures are a targeted measurement: the change in TVL inside the contracts each grant named, across the days it actually paid incentives, with quantities valued at one fixed date. A different formula, window or scope gives a different number.

  • Programs peak early and give it back. The median program peaked on day 56, which is 41% of the way in. Three of the five that met M1 were below that target again at their last reading: Extrafi when it closed, and Velodrome and Curve Lending at the cutoff.
  • OP fell 55% between the average program start and the average program end. The OP behind these grants was worth $708k when delivered and $291k when the programs ended.
  • Most of the wait came before the OP was delivered. From application to the first day of incentives took a median of 71 days. In seven of the nine programs most of it passed before the OP reached the grantee, and the other two began before it did. Lesson 2 breaks it down. The year in the schedule was the allowance, not the work.
  • Staging worked. 2.47M OP was never released because later tranches depended on progress. But 340k OP was delivered to grants that never ran anything.

What each program did

ΔTVL is measured at fixed end-date prices, so it counts liquidity added, not token prices moving. The peak is the highest the daily series reached inside the incentive window, and the milestone columns are judged on it.

Figure 1 · Peak reached vs. where it ended

Each program's highest day against its closing figure. Velodrome reached +$10.4M and is now below zero. 40acres kept 95% of its peak.

GranteeOPS8 ΔTVL$/OP M1 targetM1Total targetTotal Retention +30dPeakLength
Velodrome Finance interim 760,000 −$463,690 −0.61 $3.20M ✓ $8.00M ✓ — $10,446,6802026-03-20 31 wk
40acres.finance 200,000 $6,757,803 33.79 $3.50M ✓ $9.00M ✗ 109.0% $7,150,4112026-01-25 15 wk
Curve Lending interim 250,000 $442,797 1.77 $3.00M ✓ — — — $3,777,0802026-07-07 22 wk
Extrafi 100,000 −$126,636 −1.27 $1.50M ✓ $3.00M ✗ 76.8% $2,059,4482026-01-28 15 wk
Truemarkets 70,000 $984,742 14.07 $2.00M ✗ $4.00M ✗ 43.7% $1,776,4042025-11-30 20 wk
PancakeSwap 600,000 $685,923 1.14 $2.64M ✗ $6.60M ✗ 61.0% $1,512,9612026-01-21 30 wk
Hydrex 50,000 −$315,659 −6.31 $1.50M ✗ — — 33.6% $186,2242026-01-13 9 wk
Oku 150,000 $37,310 0.25 $25K ✓ $75K ✗ — $37,3102026-01-28 10 wk
Super DCA 30,000 $1,390 0.05 — — $150K ✗ 97.4% $2,4962026-01-03 17 wk
Total2,210,000$8,003,979 3.625 met1 met

Scroll the table sideways for the milestone, retention and peak columns. The grantee names stay in place.

Interim programs (Curve Lending, Velodrome) have no announced end date and are measured to the 2026-09-15 cutoff. Retention is only available where a window closed 30 days ago.

Figure 2 · The same nine curves, on one scale

Each program's ΔTVL as a share of its own peak, against how far it was through its window. Point at a name above, or at a line, to follow one program through the tangle. Click a name to keep it lit. The shape repeats: climb, peak around the middle, drift down.

Lessons for the next program

1 · Judge milestones on what actually happened

A milestone is met here if the target was reached on any day inside the incentive window, evidenced by the validated daily series. A single-date checkpoint, either the snapshot or the incentive end, is kept as data. But it cannot tell apart a program that reached its target and lost the liquidity from one that never got close.

The obvious objection is gaming: touch the target for a day, then pull the liquidity out. The defence is to require an average over a set number of days. Here it changes nothing: the best 7-day average produces the same verdicts. That says these peaks were levels held for weeks, not one-day spikes.

2 · Twelve months is the allowance; three is the useful deadline

Every grant in this season was approved between 12 September and 19 December 2025: 40acres in September, and the other 23 between 2 October and 19 December. Teams had about a year to run the work end to end. A year on, several approved grants still have nothing to show, while the ones that delivered did not need the year. From the application going in to the first day of incentives the median was 71 days: 21 to the decision, 41 more until the OP reached the grantee, and 3 from delivery to launch. Each stage is the median of its own distribution, so the three do not sum to the 71 in the last row. The rows cover the same nine grants. "Delivered" means the first tranche reached the grantee on-chain, so the middle stage includes however long the grantee took to claim. A negative figure means incentives began before the OP was delivered.

StageMedianRange
Application submitted → approved21 days15–59
Approved → OP delivered41 days20–144
OP delivered → incentives live3 days−91 to 88
Application → incentives live71 days51–218

40acres is the model case: application created Aug 25, 2025, announced as approved in the Cycle 41 report on Sep 12, OP delivered Oct 7, distribution started Oct 15, program finished Jan 27, 2026. That is 51 days from application to launch, and the best result in the cohort. At the other end, Curve Lending took 218 days. Give three months from approval to launch, not twelve, with a deadline for the final report. Count the delivery inside those three months, since getting the OP delivered took a median of 41 days, against 21 for the decision itself.

3 · The extra weeks bought decay, not liquidity

Across all nine programs, including the two still running, the median length was 16.6 weeks, from 9 to 31. But the peak landed at a median of day 56, week eight, and it did not move later in the longer programs (the Spearman rank correlation between a program's length and the day it peaked is −0.10, i.e. none; Pearson on the same pairs gives −0.13, which says the same thing). Eight of the nine peaked inside twelve weeks. What the longer windows added was the decline after the peak, not more liquidity.

Two of the nine are still running, so their length is set by the cutoff and not by the program. On the seven that closed, the median length is 14.9 weeks, from 9 to 30. The peak still lands at a median of day 56, six of the seven peaked inside twelve weeks, and the Spearman correlation is −0.21, which with seven points is no more distinguishable from none.

So: set a fixed duration of about twelve weeks, with a review at week eight, where the median program topped out. Extend only on evidence that liquidity is still climbing. Nine programs cannot prove an optimal length, and the sample says nothing about whether a shorter program would have reached the same peak. What it does say is that running past the peak, with the incentive still paying out, is what these windows mostly bought.

4 · Staged payments worked, and there is OP worth trying to recover

Figure 3 · Where the 6.29M OP went

Only the first block funded a measured program. The third block never left the claim contract. The four blocks are built from the Council's five cycle reports and the Foundation's public delivery tracker, cross-checked against the Hedgey claim contract on-chain.

  • 2.47M OP was never released, because later tranches were conditional on progress.
  • 340k OP was delivered to grants that never ran a program. A 20% first tranche instead of 40% would have exposed about half of it.
  • 1.27M OP was sent to the claim contract and never claimed by the grantee: Morpho 600k, Tydro 600k, LiqPass 32k, Strands 28k, NEUS 8k. None of it has left the contract, which is visible on-chain. Treat the 1.27M as potentially recoverable and worth pursuing, not as recovered. LiqPass was withdrawn outright.

Both councils were dissolved on 15 July 2026. The remaining milestones are not unattended: the approved dissolution proposal states that any remaining milestones for existing Grants Council grants will be monitored by the Foundation through a third-party contractor. What the proposal does not settle is who decides what happens to OP that was released and never used. That is still an opening for the community at large: watch whether these programs are delivered, and press for recovery where they are not. The fifteen grants that never ran a program were approved between 23 October and 19 December 2025, so each reaches one year between October and December 2026: none has passed that mark yet, and all of them do within three months.

5 · OP moved too much for USD-denominated planning

Figure 4 · OP price across the season

Targets were written in USD and stayed fixed. The incentive behind them lost more than half its value between the average start and the average end.

Hydrex's own milestone report notes the grant was structured at $0.65 OP against $0.33 at reporting time. A fall of that size is also a candidate explanation for the modest $/OP: a program designed around a budget worth twice what it turned out to be, matched by co-incentives sized the same way, delivers less than the approval assumed, and is then judged against a target that never moved.

6 · Collect the evaluation inputs at approval time

The incentive windows and the incentivized contracts had to be rebuilt by hand for this review, from milestone updates, social posts and on-chain data. TVL valued at each date's own prices, the way DefiLlama and similar dashboards report it, is no substitute: across the eight grants with a price breakdown, the same contracts fell $5.62M measured that way, while ΔTVL at fixed prices rose $7.97M. The $13.59M gap is token price movement, not liquidity.

A short form at approval, updated at each milestone, would have produced this review automatically: incentive start and end dates with a link to the announcement; contract addresses or pool IDs per chain and their type; incentive token and amount per period; and co-incentives in token units.

7 · Size the incentive in OP, and say how a USD milestone will be measured

Denominate the incentive itself in OP, not in USD. A program that promises users a fixed amount in USD for keeping their funds in for a set time is exposed to the token price. That happened in this season: when OP fell, the grant no longer covered the promise and the team had to find the difference elsewhere. A grant is a number of tokens, and the program should be written the same way.

A milestone can still be set in USD. That is often how a target makes sense to everyone reading it. What has to come with it is how it will be measured. That calculation is a small piece of work with public tools: on-chain reads for quantities, DefiLlama or a price API for the fixed-date prices. It is the same calculation behind every figure in this report. Agree on it when the grant is approved, not when it is being judged.

The nine curves

Every program's daily ΔTVL, validated against the on-chain checkpoints before it was used. These daily series do not always end on the table's closing figure, for two reasons. For the seven finished programs the line continues 30 days past the incentive end, so its last point is a later date than the one the table reports. And for Velodrome the daily series is rebuilt from Dune token transfers, which do not cover Soneium: the line therefore leaves out Soneium, which contributes −$62,904 to the table's ΔTVL, because the table is measured by direct on-chain reads across every chain in scope. Where the two differ, the table is the measurement and the line is the shape. The dotted rule marks the day the incentive stopped, and the shaded band after it is the following 30 days. It shows what the liquidity did once the rewards ended, and it never counts toward the peak. The two interim programs have no band: their window is still open.

Sources: Dune token transfers for AMM pools; pool-manager events for PancakeSwap Infinity; VotingEscrow events for 40acres' veNFT loans; daily on-chain reads for vaults, lending markets and Uniswap v4 pools.

Method, and who wrote this

I served on the last iteration of the Milestones and Metrics Council, so the payment data here is first-hand up to the point the councils were dissolved. That is a disclosure, not a claim of neutrality: everything above is reproducible from the sources named, and the full pipeline is public if you want to check any of it.

The decisions behind the figures, and why

Each of these is a choice, and each one moves the numbers. They are listed so that anyone who would have chosen differently can see exactly where the difference enters and recompute from the same measurements.

  • Metric. ΔTVL = Σ (quantity at incentive end − quantity at incentive start) × token price at the end date, over the contracts each grant incentivized. The formula is the one in the S8 Impact Measurement Methodology.
  • The window here is not the official one. The S8 methodology opens the window at the date of actual grant delivery and closes it at the earlier of the incentive close and the end of Season 8, which the Guide to Season 8 gives as 24 December 2025. This review opens it on the first day incentives were actually paid and closes it on the last, with no season cap. Both choices move the figures. Opening at delivery would misplace the window for several programs: the first tranche reached the grantee a median of 3 days before the first incentive day, but 88 days before for Curve Lending, and after it for two programs whose teams began incentives before claiming. The cap is the larger difference. All nine incentive windows ended after 24 December 2025, and Velodrome and Curve Lending began after it, so applying the cap would cut every program short and leave those two with no incentive days inside the window. The daily series behind each figure are in the repository, so the same measurement can be run over the official window.
  • Scope is targeted, contract by contract, not protocol-wide. Each grant named the contracts it would incentivize, and only those are measured. A protocol's headline TVL moves for reasons that have nothing to do with a grant, so counting all of it would credit or blame a program for liquidity it never touched. The cost of this choice is that it misses any spillover into the rest of the protocol. Oku has no contract of its own, so it is measured as the Morpho vault position of the 67 wallets it paid.
  • Quantities are valued at one fixed date, not at each day's price. Lesson 6 shows how far the two readings can differ.
  • A milestone counts as met if the target was reached on any day inside the window. Lesson 1 explains why.
  • The peak is the highest day inside the incentive window. The 30 days drawn after it never count toward the peak or the closing figure.
  • Which grants this covers. The Council approved 24 applications on final review across Season 8, spending the full 6.29M OP budget. This review measures the nine of those that claimed their OP and ran an incentive program that could be measured on-chain. The other fifteen are counted in the OP figures but have no ΔTVL.
  • Two programs are still running. Curve Lending and Velodrome are marked interim throughout. Their figures are a reading at the 2026-09-15 cutoff, so they are not comparable to the seven that closed.
What the records can and cannot show
  • How OP reached grantees. The Milestones and Metrics Council's multisig sent each grant's OP to the Hedgey ClaimCampaigns contract, and each grantee then had to claim it there. One payment did not go through the contract: Curve Lending's second, which the multisig sent directly and which counts as a delivery.
  • Delivery dates are on-chain. A grant is dated as delivered on the day its first tranche reached the grantee, read from Blockscout as the transfer out of the claim contract. That is later than the day the multisig sent the OP into it, because it includes however long the grantee took to claim. The Foundation's public delivery tracker keeps its own initial delivery date, which is not used here. Payments made after the councils were dissolved, or routed another way, may be missing.
  • Approval dates are the Council's cycle-report dates. Each grant is dated to the report of the cycle that announced it, listed under Sources, so every approval rests on one public source and one rule. A conditional pass counts from its report. Karma supplies the application dates only: its own approval field disagrees with the reports for some grants, and 40acres shows why. The Cycle 41 report of 12 September already lists it as passed, but Karma dates its approval 2 October.
  • Co-incentives are excluded. Teams sized them in USD at application time, and I did not find a way to verify how much was actually deployed. There may well be one. I did not pursue it.
How it was built
  • Built with Claude. I used Claude Design for my brand's design system, Claude Chat to shape the first approaches and to choose the tools, and Claude Code for the code, the charts, this report and the audits.
  • On-chain reads: an Alchemy archive node: eth_call at a block per checkpoint, eth_getCode to date deployments by binary search, eth_getLogs for one-off events and alchemy_getAssetTransfers for ERC-721 movements. A local cache means every figure can be recomputed without paying for the reads twice.
  • Protocol shapes read directly: ERC-4626 vaults, Aave-style aTokens, Uniswap v3 and v4 (tick-walked through StateView), PancakeSwap Infinity, Velodrome and Aerodrome VotingEscrow veNFTs, and Curve LlamaLend. Function selectors and event topics were derived with keccak from signatures verified in each protocol's source, never copied from memory.
  • Dune (DuneSQL / Trino): six saved queries rebuild daily balances from token transfers and from pool-manager and VotingEscrow events, where a daily on-chain read would have been too slow.
  • DefiLlama: protocol TVL series and historical token prices, including the fixed end-date prices the S8 formula uses.
  • Karma API: each application's submission date.
  • The registry is a spreadsheet: grants, windows and scope contracts live in Google Sheets and are read as CSV at run time, so a human can correct a date without touching code. Apps Script calls Blockscout inside the sheet to date each payment, rather than copying transaction dates by hand.
  • Python (pandas, requests) for the pipeline, Plotly for the charts on this page, and Blockscout, Etherscan and Herd for reading unfamiliar contracts on Base before trusting a selector or an event.
  • Every derived number is validated before it is used: each daily series has to reproduce every on-chain checkpoint, and the reconstructions cross-check against each other: the veNFT rebuild against DefiLlama, the v4 tick walk against Uniswap's own ReservesLens.
Sources

If you have information to add, please get in touch. Maybe you were on one of these teams, or you know a program that ran without being reported, or you can identify a payment we could not. This review is only as good as what is visible from the outside.

Thank you to everyone who read earlier drafts of this report and sent feedback.