Skip to main content
Stenion
Registry
Coverage note · not a score

K2 Earn (earnUSDC)

too small to score

Stenion publishes no safety score for K2 Earn (earnUSDC) — not a low one, not a zero.

K2’s third router, operated by Gami/Upshift rather than by K2, and holding nothing at all when we read it.

Protocol siteDocs

Below the market-size floor

These markets can be read; there is just almost nothing in them. Scored anyway, every factor would fall to its can’t-assess branch and publish 0 — a number in the danger band, meaning the opposite of what is true. The floor is a precondition on scoring, not a quality bar: it says only that a number was computed from something rather than from nothing.

Why K2 Earn (earnUSDC) isn’t scored

What we found, stated as what is verified and what is inferred. None of this is a risk finding, and none of it feeds a number.

The third of K2’s three live routers, operated by a third party — Gami/Upshift — rather than by K2 itself. K2 is explicit that the separation is real: “Isolation is enforced at the contract level: collateral and debt in a third-party market cannot be combined with positions in K2’s primary market.”

It held $0.00 in total priced supplied value when read — not a small amount, but nothing at all. It fails the market-size floor outright. Pointing the rulebook at it would not fail: every factor would fall to its can’t-assess branch and the market would publish a score of 0, which renders in the danger band and tells a reader the opposite of what is true.

K2’s own contract table is out of date in the other direction here. It gives the earnUSDC aToken and debt ledger as “TBA” and says they “will be added once deployed.” Both are deployed and wired — the router’s get_reserves_list returns earnUSDC alongside USDC, and get_current_reserve_data resolves an aToken at CCOPG2ZQ… and a debt ledger at CBO4TOFT…. Reported because a reader taking the published list as complete gets a different picture than the chain gives, not as a criticism of the operator.

If it fills, it becomes scorable, and registering it is a config entry rather than an adapter: KineticAdapter already takes a routerId, exactly as BlendAdapter took a poolId before multi-pool targeting landed. That generalisation is deliberately not built, because building it now would be dead code guarding an empty list.

Verify this yourself

Call get_reserves_list on the Earn router (CDWPVHKB…KTPF6TZE) and get_current_reserve_data for each asset, which resolves the aToken and debt ledger addresses; read total_supply on each for the balances, and compare the resolved aToken against the “TBA” row at docs.k2lend.com/third-party-markets/contract-addresses.

Figures above read on . Balances change; re-read them rather than relying on this date.

This page is a coverage decision, not an assessment of the protocol’s safety, and nothing on it feeds any score. If K2 Earn (earnUSDC) becomes scorable, this page goes away in the same change that registers it — it is replaced by a real entry in the registry, with a number derived from its own contracts.

Protocol names, logos and trademarks belong to their respective owners and are shown for identification only. Their presence here and any link to a protocol's own site or documentation does not imply endorsement, partnership, or any relationship with Stenion, in either direction.