Kerne Logo

Kerne Honesty Index

Curve scrvUSD

Live . ethereum . 0x0655977FEb2f289A4aB78af67BAB0d17aAb84367

What this vault advertises, against what it actually paid, measured from its own share price on chain over a 30 day window. Everything below is recomputed hourly and every figure on this page comes from the snapshot named at the bottom. Nothing here is typed by hand.

Advertised

1.16%

projected rate

Realized

1.27%

30 day window

Gap

not comparable

advertised as a projection off current market conditions, which reprices continuously, against a 30 day realized window, so no gap is stated.

What Curve published.

"proj_apy":1.1559099539662165,"supply":15367670.495241826

Figure we recorded

1.16%

Basis

projected rate (spot-projected)

Label on their surface

Projected APY

Read on

2026-08-12

Age at the end of our window

2.8 days, limit 10

Source

https://prices.curve.finance/v1/crvusd/savings/statistics

Open the page we read it from. It is a first-party surface by rule. An aggregator figure is never recorded in this column, whatever it says.

Recompute it yourself.

The realized figure is two calls and one exponent. Both calls are pinned to a block height, so they return the same values for you as they did for us, forever. Use any archive endpoint. We deliberately do not name one: a reproduction that runs on our RPC is not a reproduction.

The call

Chain

ethereum

Contract

0x0655977FEb2f289A4aB78af67BAB0d17aAb84367

Method

convertToAssets(uint256)

Argument

1000000000000000000 (one whole scrvUSD share, 18 decimals)

eth_call data

0x07a2d13a0000000000000000000000000000000000000000000000000de0b6b3a7640000

Returns

crvUSD, 18 decimals

The argument is one whole share in the SHARE token's own decimals, which is not always eighteen. Kerne's own skUSD reports twenty four, so calling it with 1e18 returns a millionth of the right answer. Ask the vault for its decimals rather than assuming, exactly as our collector does.

At the start of the window

Block

25539888 (0x185b530)

Timestamp

1784140607 (2026-07-15 18:36 UTC)

Share price returned

1.104908995534229619

At the end of the window

Block

25755112 (0x188fde8)

Timestamp

1786732607 (2026-08-14 18:36 UTC)

Share price returned

1.106059603289124064

Start of window, cast

RPC_URL=... cast call 0x0655977FEb2f289A4aB78af67BAB0d17aAb84367 "convertToAssets(uint256)(uint256)" 1000000000000000000 --block 25539888 --rpc-url "$RPC_URL"

End of window, cast

RPC_URL=... cast call 0x0655977FEb2f289A4aB78af67BAB0d17aAb84367 "convertToAssets(uint256)(uint256)" 1000000000000000000 --block 25755112 --rpc-url "$RPC_URL"

Start of window, raw JSON-RPC

{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x0655977FEb2f289A4aB78af67BAB0d17aAb84367","data":"0x07a2d13a0000000000000000000000000000000000000000000000000de0b6b3a7640000"},"0x185b530"]}

End of window, raw JSON-RPC

{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x0655977FEb2f289A4aB78af67BAB0d17aAb84367","data":"0x07a2d13a0000000000000000000000000000000000000000000000000de0b6b3a7640000"},"0x188fde8"]}

Both calls return an integer in the smallest unit of crvUSD. Divide by 10 ** 18 to get the share price printed above. Set RPC_URL to any archive endpoint you trust.

The arithmetic

growth = 1.106059603289124064 / 1.104908995534229619

elapsed = 1786732607 - 1784140607 = 2592000 seconds

annualized = (growth ^ (31536000 / 2592000) - 1) * 100

= 1.2744% (0.104136% over the window)

Simple compounding at the observed rate, on a 365 day year. No fee assumption, no reinvestment assumption, no smoothing. If your arithmetic lands somewhere else, that disagreement is the finding and we want it: liam@kerne.fi.

Context for this row.

Live and accruing, with the lowest advertised rate on this board and a realized figure close to it. scrvUSD is the savings vault for crvUSD, and its yield comes from interest paid by crvUSD borrowers rather than from a strategy Curve markets. The figure quoted here is the projected APY published by Curve's own pricing service, the same source its front end reads. It is a forward projection off live borrow demand, not a trailing average and not a rate Curve sets and holds, so it is recorded as a projection and this row states no gap. That distinction is doing real work here rather than being pedantry: across the thirty days this row measures, Curve's own published projection ranged from about 1.00 to about 1.43 and finished near 1.15, so which value a reader catches depends on the morning they look, while the realized column beside it is an average over the whole period. Both numbers are shown with their dates and the reader can do what they like with them. A row this size is on the board deliberately: a scoreboard that only measured the large products would be measuring the survivors.

This figure is a projection off current market conditions, which reprices continuously, and our realized column is a 30 day window. The projection was never in force for that month, so subtracting one from the other would report where the projection happened to be standing when it was read rather than anything the protocol paid or failed to pay. We show both and state no gap.

This page measures one axis and one only: advertised yield against realized yield. It is not a rating, not an audit, and it says nothing about whether Curve is safe or whether its reserves are what it says they are. A protocol in an announced wind down paying nothing is behaving correctly. The reserve axis is a different page, at the reserve transparency scorecard.

Take this row with you.

This page

https://kerne.fi/honesty-index/curve-scrvusd

Citation

Kerne Honesty Index, 2026-08-14: Curve (scrvUSD) advertised 1.16%, realized 1.27% from on-chain share-price growth, gap not comparable (advertised as a projection off current market conditions, which reprices continuously, against a 30 day realized window, so no gap is stated). Source: https://kerne.fi/honesty-index#row-curve-scrvusd

Badge, markdown

[![Kerne Honesty Index](https://kerne.fi/honesty-badge.svg?row=curve-scrvusd)](https://kerne.fi/honesty-index#row-curve-scrvusd)

Badge, HTML

<a href="https://kerne.fi/honesty-index#row-curve-scrvusd"><img src="https://kerne.fi/honesty-badge.svg?row=curve-scrvusd" width="360" height="112" loading="lazy" alt="Kerne Honesty Index: advertised versus realized yield"></a>

Row in the API

https://kerne.fi/api/honesty-index/row/curve-scrvusd
Kerne Honesty Index badge for Curve

Where these numbers came from.

Snapshot generated

2026-08-14 18:37 UTC

Snapshot source

live store

Signature

verified, signer 0x84949170e0ad0f9bd8686a4aa4922c10f5fdc4ea

Row key

curve-scrvusd

The signature is checked on every render rather than assumed from the presence of a field. A snapshot that does not verify is served with that said plainly instead of borrowing the word.

Board last read 2026-08-14. Every figure on this page is regenerated from https://kerne.fi/honesty-index and none of them is stored in this file.