Spark sUSDC
Live . ethereum . 0xBc65ad17c5C0a2A4D159fa5a503f4992c7B545FE
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
3.52%
set rate
Realized
3.54%
30 day window
Gap
-0.02 points
100.6 percent of advertised
A negative gap means it realized more than it advertised.
a rate the issuer sets and holds, compared against a 30 day realization.
This row cleared its own number.
Paid 100.6 percent of the rate it advertises and holds over a 30 day window, measured on chain. We state this on exactly the terms we state a shortfall on: the advertised figure has to be on a basis comparable to a 30 day realized window, and it has to have been read from Spark's own surface within 10 days of the end of that window. If either stops being true, this section disappears and so does the claim on the image below.
Embed, markdown
[](https://kerne.fi/honesty-index/spark-susdc)Embed, HTML
<a href="https://kerne.fi/honesty-index/spark-susdc"><img src="https://kerne.fi/honesty-badge.svg?row=spark-susdc&claim=delivery" width="384" height="152" loading="lazy" alt="Kerne Honesty Index: realized yield measured against advertised yield"></a>Dark theme
https://kerne.fi/honesty-badge.svg?row=spark-susdc&claim=delivery&theme=dark- The image is generated from the same hourly snapshot as the board, and it carries the read time and both block heights on its face.
- If the row stops clearing its advertised figure, or the advertised figure goes unread for longer than we will difference against, the image quietly becomes the plain measurement card. It will not keep making a claim that has stopped being true.
- It is free, needs no key, and we do not log who embeds it. There is nothing to sign and nothing to buy.
- It measures one axis, realized yield against advertised yield. It is not a rating, not an audit, and says nothing about whether a protocol is safe.
What Spark published.
Deposit your USDC and earn 3.52% APY!
Figure we recorded
3.52%
Basis
set rate (spot-administered)
Label on their surface
USDC savings APY
Read on
2026-08-12
Age at the end of our window
2.8 days, limit 10
Source
https://app.spark.fi/savings
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
0xBc65ad17c5C0a2A4D159fa5a503f4992c7B545FE
Method
convertToAssets(uint256)
Argument
1000000000000000000 (one whole sUSDC share, 18 decimals)
eth_call data
0x07a2d13a0000000000000000000000000000000000000000000000000de0b6b3a7640000
Returns
USDC, 6 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.103097
At the end of the window
Block
25755112 (0x188fde8)
Timestamp
1786732607 (2026-08-14 18:36 UTC)
Share price returned
1.106257
Start of window, cast
RPC_URL=... cast call 0xBc65ad17c5C0a2A4D159fa5a503f4992c7B545FE "convertToAssets(uint256)(uint256)" 1000000000000000000 --block 25539888 --rpc-url "$RPC_URL"End of window, cast
RPC_URL=... cast call 0xBc65ad17c5C0a2A4D159fa5a503f4992c7B545FE "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":"0xBc65ad17c5C0a2A4D159fa5a503f4992c7B545FE","data":"0x07a2d13a0000000000000000000000000000000000000000000000000de0b6b3a7640000"},"0x185b530"]}End of window, raw JSON-RPC
{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0xBc65ad17c5C0a2A4D159fa5a503f4992c7B545FE","data":"0x07a2d13a0000000000000000000000000000000000000000000000000de0b6b3a7640000"},"0x188fde8"]}Both calls return an integer in the smallest unit of USDC. Divide by 10 ** 6 to get the share price printed above. Set RPC_URL to any archive endpoint you trust.
The arithmetic
growth = 1.106257 / 1.103097
elapsed = 1786732607 - 1784140607 = 2592000 seconds
annualized = (growth ^ (31536000 / 2592000) - 1) * 100
= 3.5416% (0.286466% 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, and one of the rows that shows the method can return "this protocol is telling the truth". Spark's own app renders 3.52 percent for its USDC savings account and our independent thirty day reading of the vault share price lands within a few hundredths of a point of it. As with Sky, that agreement is structural rather than virtuous: the rate is set and updated rather than produced by a strategy, and Spark says so on the same page, describing a rate that "updates automatically as it evolves". One note on attribution, recorded because it is the kind of thing that could be got wrong: Spark's app lists a Savings account and a Legacy account for USDC and renders 3.52 percent for both, so the figure quoted here does not depend on which of the two a reader takes it from.
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 Spark 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/spark-susdcCitation
Kerne Honesty Index, 2026-08-14: Spark (sUSDC) advertised 3.52%, realized 3.54% from on-chain share-price growth, gap -0.02 points (a rate the issuer sets and holds, compared against a 30 day realization). Source: https://kerne.fi/honesty-index#row-spark-susdcBadge, markdown
[](https://kerne.fi/honesty-index#row-spark-susdc)Badge, HTML
<a href="https://kerne.fi/honesty-index#row-spark-susdc"><img src="https://kerne.fi/honesty-badge.svg?row=spark-susdc" 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/spark-susdcWhere these numbers came from.
Snapshot generated
2026-08-14 18:37 UTC
Snapshot source
live store
Signature
verified, signer 0x84949170e0ad0f9bd8686a4aa4922c10f5fdc4ea
Row key
spark-susdc
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.