{"protocol":"Kerne Protocol","chain":"base","chainId":8453,"blockNumber":50053558,"timestamp":"2026-08-16T16:07:43.549Z","reserves":{"vault":{"address":"0x8005bc7A86AD904C20fd62788ABED7546c1cF2AC","version":"v1","role":"KerneVault v1, superseded by v2 in the 2026-06-16 ceremony (kUSD MINTER_ROLE revoked) and retained as the vault this endpoint attests, because the residual WETH and the on-chain mirror of the Hyperliquid hedge equity sit here. Counted only in solvency.aggregateCollateralRatio, never in the 1:1 mint backing.","liveDepositVault":"0x8ccc56B5624e2FDB592F6609d81F4c3798e3292B","reconciliation":"This unsigned endpoint reports the v1 vault under reserves.vault because that is where the assets are. The hourly SIGNED statement at /api/por/signed attests the live v2 vault, which holds no user deposits; any totalAssets it reports is the strategist-written l1Assets mirror of the Hyperliquid hedge margin, labeled under reserves.vaultV2. Both are true and neither is the 1:1 mint backing: that is solvency.psmSolvencyRatio, the combined PSM USDC reserves over user-held kUSD. Live v2 balances are published under reserves.vaultV2 below so the two surfaces can be reconciled without inference.","asset":"WETH","assetAddress":"0x4200000000000000000000000000000000000006","assetAmount":0.020314112644042606,"tvlUSD":38.24497359268614,"onChainTotalAssets":{"eth":0.04991987960114005,"wei":"49919879601140048","usd":93.98315892747435,"source":"Raw KerneVault.totalAssets() priced at ethPriceUSD, reproducible via cast, but includes the stale off-chain l1Assets mirror. tvlUSD above reconciles that mirror to the live venue."},"composition":{"trackedOnChain":{"eth":0.0061421822044564825,"usd":11.563763592686131,"source":"Real ERC-20 WETH balance held on-chain by the vault"},"offChainAssets":{"eth":0,"usd":0,"source":"CEX hedge collateral, attested via bot/por_attestation.py","policy":"https://kerne.fi/docs/seed-tvl-policy"},"l1Assets":{"eth":0.014171930439586122,"usd":26.68121,"onChainMirror":{"eth":0.043777697396683565,"usd":82.41939533478822,"wei":"43777697396683568","source":"Raw KerneVault.l1Assets(), a strategist-written fixed-ETH mirror of the Hyperliquid account equity; reproducible via cast but stale/over-stated when the account is drawn down (its on-chain setter reverts a single-step move over +/-20%)."},"liveVenueEquityUsd":26.68121,"excessUsd":55.73818533478822,"reconciliationStatus":"capped-to-live-venue","source":"Hyperliquid L1 account equity. Recognised value is capped at the live venue balance (min of on-chain mirror and live account equity); the raw mirror is disclosed under onChainMirror.","venue":"0x09a2780ac8Be6D5d2d1F85A8D92b09D40C9CA37e","verifyVia":"POST https://api.hyperliquid.xyz/info {\"type\":\"clearinghouseState\",\"user\":\"0x09a2780ac8Be6D5d2d1F85A8D92b09D40C9CA37e\"} -> marginSummary.accountValue"},"hedgingReserve":{"eth":0,"usd":0,"source":"On-chain hedge buffer reserved by the strategist"}}},"vaultV2":{"address":"0x8ccc56B5624e2FDB592F6609d81F4c3798e3292B","version":"v2","role":"live Safe-governed ERC-4626 deposit/mint vault (ceremony 2026-06-16), and it does NOT hold kUSD MINTER_ROLE: that was revoked on 2026-08-03, leaving the live mint PSM as the only minter. The vault attested by the hourly signed statement at /api/por/signed.","minterRole":{"role":"MINTER_ROLE","roleHash":"0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6","holder":"0x8ccc56B5624e2FDB592F6609d81F4c3798e3292B","holdsRole":false,"readStatus":"live-read","note":"Read live from kUSD AccessControl on every request, not stated from a constant. holdsRole is null, never false, when the read did not land: an unobserved role is published as unknown rather than as a revocation this endpoint did not witness.","verifyVia":"cast call 0x5C2EfdF0D8D286959b42308966bc2B97f5680AA3 \"hasRole(bytes32,address)(bool)\" 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6 0x8ccc56B5624e2FDB592F6609d81F4c3798e3292B --rpc-url https://mainnet.base.org"},"asset":"WETH","assetAddress":"0x4200000000000000000000000000000000000006","totalAssetsETH":0.01421401920876899,"totalAssetsWei":"14214019208768990","totalSupplyShares":0,"wethBalanceETH":0,"l1AssetsETH":0.01421401920876899,"tvlUSD":26.760449683965202,"countedInSolvency":false,"note":"Reported for completeness; contributes nothing to collateralUSD or to either ratio while it holds no user deposits (totalSupplyShares 0). The collateral this endpoint reports sits in the retired v1 vault under reserves.vault. l1AssetsETH is the strategist-written on-chain mirror of the Hyperliquid hedge margin, refreshed on the NAV cadence and rate-limited by the contract; it is off-chain margin accounting, not a deposit, so totalAssetsETH can exceed wethBalanceETH by exactly that mirror. If a real deposit ever lands here, this block will show it before any ratio moves.","verifyVia":["cast call 0x8ccc56B5624e2FDB592F6609d81F4c3798e3292B \"totalAssets()(uint256)\" --rpc-url https://mainnet.base.org","cast call 0x8ccc56B5624e2FDB592F6609d81F4c3798e3292B \"totalSupply()(uint256)\" --rpc-url https://mainnet.base.org","cast call 0x4200000000000000000000000000000000000006 \"balanceOf(address)(uint256)\" 0x8ccc56B5624e2FDB592F6609d81F4c3798e3292B --rpc-url https://mainnet.base.org","cast call 0x8ccc56B5624e2FDB592F6609d81F4c3798e3292B \"l1Assets()(uint256)\" --rpc-url https://mainnet.base.org"]},"stakedVault":{"address":"0x96F5102C15b839757f811A98CEc3725Ac21DfA14","version":"v2","role":"Live ERC-4626 kUSD staking vault (deposit kUSD, receive skUSD). Yield reaches stakers as a rising share price. A DefiLlama Yields adapter for this vault is merged at yield-server src/adaptors/kerne and DefiLlama runs it daily: the pool exists in their database as config id 6fd86535-c8f5-5b5c-af74-25a2b6a9479d, and their own run of that adapter last wrote the row at 2026-08-15T02:01Z. It is still absent from the public yields table, and this endpoint does not claim otherwise: on 2026-08-15, zero of 15,589 pools at yields.llama.fi/pools carried project kerne, and yields.llama.fi/poolsEnriched returned nothing for that config id, so nobody screening defillama.com/yields sees this vault. The cause is size and nothing else. yield-server src/utils/exclude.js sets two floors, tvlUsdDB at 1,000 dollars to be written to the database and tvlUsdUI at 10,000 dollars to be served to the public table, and this vault holds about 1,011 dollars, which clears the first and falls about 8,988 dollars short of the second. The adapter header on yield-server says the same thing: genesis-phase TVL sits below the public yields display threshold, so the pool stays hidden until the vault is seeded. Until 2026-08-15 this field added that size was not the reason, citing listed pools that hold under 1,000 dollars. Counting those pools without reading their category does not support that conclusion: all 177 rows below 10,000 dollars are Lending or Uncollateralized Lending, categories that ride a carve-out taking the greater of TVL and total supply, and across the 12,879 rows outside those categories the smallest holds exactly 10,000 dollars. Kerne is categorised Basis Trading, whose smallest listed pool holds 27,171 dollars. An adapter that is merged and writing daily is still not a listing. Check both halves yourself: yields.llama.fi/chart/6fd86535-c8f5-5b5c-af74-25a2b6a9479d for the row that exists, and yields.llama.fi/pools for the table it is not on.","asset":"kUSD","assetAddress":"0x5C2EfdF0D8D286959b42308966bc2B97f5680AA3","totalAssetsKUSD":1011.582169134049,"totalAssetsWei":"1011582169134048985696","totalSupplyShares":1011.4823684232831,"pricePerShare":1.000098667771067,"tvlUSD":1011.582169134049,"countedInSolvency":false,"ownership":{"scope":"THIS VAULT ONLY (0x96F5102C15b839757f811A98CEc3725Ac21DfA14). Not a protocol-wide statement about who stakes with Kerne. A second, superseded staking vault exists at reserves.stakedVaultDeprecated and its entire share supply is externally owned. Read the two together before concluding anything about organic participation.","founderOwnedShares":1011.4823684232831,"founderOwnedFraction":1,"founderOwnedUSD":1011.582169134049,"custody":"founder hardware wallet 0x14f04cE02f35B29Af564A98544dD7e2393993946, self-custodied; NOT protocol custody","ref":"reserves.protocolOwnedReserves.components.stakedVaultDeposits","seeAlso":"reserves.stakedVaultDeprecated"},"note":"Contributes nothing to solvency.collateralUSD and moves no ratio. The kUSD this vault holds is already counted on the LIABILITY side, inside liabilities.kUSD.outstanding, because it is kUSD held by a contract external to the PSMs; it is a claim on the protocol, not backing for one. Counting it as collateral as well would double-count it. Note also that the price-per-share here is computed from totalAssets over share supply, while the DefiLlama adapter reports convertToAssets(1 share); the two agree at par and can differ in the final decimals during a yield vest.","verifyVia":["cast call 0x96F5102C15b839757f811A98CEc3725Ac21DfA14 \"totalAssets()(uint256)\" --rpc-url https://mainnet.base.org","cast call 0x96F5102C15b839757f811A98CEc3725Ac21DfA14 \"totalSupply()(uint256)\" --rpc-url https://mainnet.base.org","cast call 0x96F5102C15b839757f811A98CEc3725Ac21DfA14 \"balanceOf(address)(uint256)\" 0x14f04cE02f35B29Af564A98544dD7e2393993946 --rpc-url https://mainnet.base.org"]},"stakedVaultDeprecated":{"address":"0xdEd74F7E06efc76455C07418b8b74Cc2bc009DB4","version":"v1","status":"SUPERSEDED 2026-07-03 by reserves.stakedVault. Abandoned by the protocol, still live on chain, still solvent, still redeemable by its holder.","role":"The original ERC-4626 kUSD staking vault. Replaced because its share price was distorted roughly 1e17x above par by a yield donation made while share supply was zero, which made it unusable for a DefiLlama Yields listing. The distortion never affected the holder's ability to redeem, and does not today.","asset":"kUSD","assetAddress":"0x5C2EfdF0D8D286959b42308966bc2B97f5680AA3","totalAssetsKUSD":10.09,"totalAssetsWei":"10090000000000000000","kusdBalanceKUSD":10.09,"totalSupplySharesRaw":"99899999","sharesNote":"Share counts on this vault are published in RAW units only, deliberately. Shares carry 24 decimals, so dividing by 1e24 renders this vault's entire supply as 9.99e-17, a number that tells a reader nothing and looks like a formatting fault. The distortion is the point: a yield donation made while supply was zero left the share scale roughly 1e17x away from par, which is exactly why this vault was replaced. Ownership below is therefore expressed as a ratio of raw share counts, which is scale-free and correct.","tvlUSD":10.09,"countedInSolvency":false,"ownership":{"scope":"THIS VAULT ONLY (0xdEd74F7E06efc76455C07418b8b74Cc2bc009DB4).","protocolOwnedSharesRaw":"0","externalOwnedSharesRaw":"99899999","externalOwnedFraction":1,"externalOwnedKUSD":10.09,"method":"externalOwnedShares = totalSupply minus the share balances of the three addresses this protocol controls (founder wallet 0x14f04cE02f35B29Af564A98544dD7e2393993946, Safe 0x52d3E450bA6c299B1B07298F1E87DD74732D4877, bot 0x09a2780ac8Be6D5d2d1F85A8D92b09D40C9CA37e). Derived by subtraction from addresses that are already ours and already published, so the claim is checkable without naming the holder.","holderAddressWithheld":"The external holder's address is deliberately not published here. It is trivially derivable from chain by anyone who wants it; that is their business and not something this endpoint should do on their behalf.","note":"This is a real third party. Verified on chain: they called swapStableForKUSD on the PSM with 10.000000 USDC of their own, received 9.99 kUSD, and staked all of it 16 seconds later, on 2026-06-15. A complete genesis-to-head scan of every token transfer their wallet has ever made finds no counterparty relationship with any Kerne address other than those two transactions. They were not solicited, referred, funded or contacted."},"redeemableKUSD":9.98999999900892,"orphanKUSD":0.10000000099108064,"orphanNote":"orphanKUSD is the part of totalAssets that no share can claim. It exists because 0.1 kUSD of yield was distributed into this vault while share supply was zero, so it backs only the ERC-4626 virtual shares. The holder of 100% of the supply can withdraw redeemableKUSD, not totalAssetsKUSD. The gap is disclosed rather than netted out of totalAssets, because netting it would make the reserve figure agree with the withdrawal figure by hiding a real defect.","note":"Contributes nothing to solvency.collateralUSD and moves no ratio, for exactly the same reason as reserves.stakedVault: the kUSD held here is already counted on the LIABILITY side inside liabilities.kUSD.outstanding, because it is kUSD held by a contract external to the PSMs. It is a claim on the protocol, not backing for one. This vault is abandoned in the sense that the protocol no longer routes deposits to it or reports it as product; it is NOT abandoned in the sense of the holder's money being stuck. Redemption has never been paused, gated or role-restricted here.","verifyVia":["cast call 0xdEd74F7E06efc76455C07418b8b74Cc2bc009DB4 \"totalAssets()(uint256)\" --rpc-url https://mainnet.base.org","cast call 0xdEd74F7E06efc76455C07418b8b74Cc2bc009DB4 \"totalSupply()(uint256)\" --rpc-url https://mainnet.base.org","cast call 0xdEd74F7E06efc76455C07418b8b74Cc2bc009DB4 \"balanceOf(address)(uint256)\" 0x14f04cE02f35B29Af564A98544dD7e2393993946 --rpc-url https://mainnet.base.org","cast call 0xdEd74F7E06efc76455C07418b8b74Cc2bc009DB4 \"balanceOf(address)(uint256)\" 0x52d3E450bA6c299B1B07298F1E87DD74732D4877 --rpc-url https://mainnet.base.org","cast call 0xdEd74F7E06efc76455C07418b8b74Cc2bc009DB4 \"balanceOf(address)(uint256)\" 0x09a2780ac8Be6D5d2d1F85A8D92b09D40C9CA37e --rpc-url https://mainnet.base.org","cast call 0xdEd74F7E06efc76455C07418b8b74Cc2bc009DB4 \"previewRedeem(uint256)(uint256)\" 99899999 --rpc-url https://mainnet.base.org","cast tx 0x08a86ae52e01d0635e55cda1a2a8d53b3733cee99f40b8d42513877fb783de6f --rpc-url https://mainnet.base.org"]},"insuranceFund":{"address":"0xE8799FCF327C6D2f78103a3c9308C93592A30403","usdc":0,"weth":0,"totalUSD":0},"treasury":{"address":"0x5343C41d4FF2B61DAacA9cbC050550C40605B075","usdc":0,"weth":0,"totalUSD":0},"multisig":{"address":"0x52d3E450bA6c299B1B07298F1E87DD74732D4877","threshold":"2-of-3","usdc":333.43,"weth":0,"totalUSD":333.43},"psm":{"address":"0xFf3025ec18e301855aB0f36Ec6ECa115a29A5Fbc","addressPrevMint":"0x07eBb486e11BD217e6085eb5ab663e4517595993","addressMint":"0xaBDE1138aa1Ce88d1dF06422C0c3b05D70569803","usdcHeld":1110.8880060000001,"kusdHeld":35,"kusdHeldWei":"35000000000000000000"},"psmRedeemReserve":{"address":"0xFf3025ec18e301855aB0f36Ec6ECa115a29A5Fbc","role":"redeem reserve (old KUSDPSM, MINTER revoked 2026-06-16)","usdcHeld":85.885006,"kusdHeld":32},"psmRetiredMint":{"address":"0x07eBb486e11BD217e6085eb5ab663e4517595993","role":"retired mint PSM (2026-06-16..2026-07-10, MINTER revoked); redeem-only reserve backing kUSD minted through it until migration","usdcHeld":995.003,"kusdHeld":3},"psmMint":{"address":"0xaBDE1138aa1Ce88d1dF06422C0c3b05D70569803","role":"live USDC->kUSD mint path (KUSDPSM redeployed 2026-07-10), and it HOLDS kUSD MINTER_ROLE as of this read","minterRole":{"role":"MINTER_ROLE","roleHash":"0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6","holder":"0xaBDE1138aa1Ce88d1dF06422C0c3b05D70569803","holdsRole":true,"readStatus":"live-read","note":"Read live from kUSD AccessControl on every request, not stated from a constant. holdsRole is null, never false, when the read did not land: an unobserved role is published as unknown rather than as a revocation this endpoint did not witness.","verifyVia":"cast call 0x5C2EfdF0D8D286959b42308966bc2B97f5680AA3 \"hasRole(bytes32,address)(bool)\" 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6 0xaBDE1138aa1Ce88d1dF06422C0c3b05D70569803 --rpc-url https://mainnet.base.org"},"usdcHeld":30,"kusdHeld":0},"protocolOwnedReserves":{"role":"Capital owned by the protocol or its founders, labeled so it is never reported as user TVL or organic traction. Disclosure view: every component is also reported under its own reserves.* key, so this total is not added to solvency.collateralUSD or to any ratio.","totalUSD":1354.7082274817658,"countedInSolvency":false,"seedPolicy":{"onSite":"https://kerne.fi/docs/seed-tvl-policy","canonical":"https://github.com/kerne-protocol/contracts-public/blob/main/docs/SEED_TVL_POLICY.md","commitment":"If the protocol deploys its own capital into the vault, that capital is labeled protocolOwnedReserves and broken out here; protocol-owned reserves are never described as user TVL or Institutional Partners."},"components":{"vaultDeposits":{"usd":0,"countedInSolvency":false,"ref":"reserves.vaultV2","source":"Protocol or founder capital deposited into the live deposit vault (KerneVault v2) as a depositor. Zero today: v2 has zero share supply, so nobody, founder included, holds a deposit in it. The Seed TVL policy commitment is that any such deposit appears here, not inside a user-TVL figure."},"stakedVaultDeposits":{"address":"0x96F5102C15b839757f811A98CEc3725Ac21DfA14","usd":1011.582169134049,"shares":1011.4823684232831,"fractionOfVault":1,"countedInSolvency":false,"ref":"reserves.stakedVault","custody":"founder hardware wallet 0x14f04cE02f35B29Af564A98544dD7e2393993946, self-custodied; NOT protocol custody","source":"Founder capital staked in the skUSD vault. This is the Seed TVL policy commitment applied to the staking vault: the vault is seeded with founder capital, so the share that is founder-owned is stated here instead of being left to read as user TVL or organic traction. Not counted in any ratio; the underlying kUSD already sits on the liability side under liabilities.kUSD.outstanding.","founderShareOfOutstandingKUSD":0.9854644341234535,"founderUnstakedKUSD":81.99476342530903,"founderUnstakedKUSDInWallet":1.9947634253090356,"founderUnstakedKUSDInEulerEscrow":80,"disclosureNote":"founderShareOfOutstandingKUSD is the fraction of ALL outstanding kUSD that this founder wallet holds, staked plus unstaked. It is published because any public presentation of a staking vault invites the assumption that the deposits behind it are third-party. At pilot scale that assumption would be wrong, and the honest number belongs beside the vault rather than behind it. It cuts the other way too: this fraction is below 1, and the remainder is not all protocol float. See reserves.stakedVaultDeprecated for the one staking position that is genuinely third-party.","escrowNote":"founderUnstakedKUSD counts founder kUSD wherever it sits, and the two places are broken out above. Since 2026-08-11 that includes kUSD deposited as escrow collateral in the isolated kUSD/USDC market on Euler v2 Edge (0xD3800ceb6bBeB90101ed5d5A46017fE846c9509e). Depositing into a vault is not a sale and produces no new holder, so it must not move this fraction. Counting only the wallet would have let a seed of Kerne's own capital into a market Kerne itself deployed improve this number by roughly seven points at pilot scale while nothing real changed, and this number exists precisely to refuse that. Occupancy of that market, and how much of it is Kerne's own, are live at https://kerne.fi/api/euler."},"founderWatchOnlyFloat":{"address":"0x14f04cE02f35B29Af564A98544dD7e2393993946","custody":"founder hardware wallet, self-custodied; NOT protocol custody","nativeEth":0.004377226679403981,"weth":0.0007729094816626,"totalEth":0.005150136161066581,"usd":9.69605834771683,"countedInSolvency":false,"role":"Disclosed watch-only hedge base. The hedge engine reads this address (bot WATCH_ONLY_ADDRESSES with HEDGE_INCLUDE_WATCH_ONLY, a read-only balance feed) and sizes its Hyperliquid short against the ETH and WETH held here, at pilot scale, so the delta-neutral loop runs against a real position before external capital arrives. The float backs no kUSD, is not protocol collateral, and never enters any ratio; it is published in advance per the Seed TVL policy commitment that protocol- or founder-owned capital is labeled rather than left to read as organic TVL.","hedgeScope":"The delta-neutral hedge is scoped to THIS float. Two other protocol-controlled ETH balances carry price exposure that is deliberately left unhedged and are therefore NOT counted in the hedged scope: the operational gas float in the bot/venue wallet (0x09a2780ac8Be6D5d2d1F85A8D92b09D40C9CA37e), which is consumable working capital on a known decay schedule, and the residual WETH in the retired v1 vault (0x8005bc7A86AD904C20fd62788ABED7546c1cF2AC), whose exit path has never been exercised so a short against it would be naked. At pilot scale the protocol is therefore delta-neutral over this disclosed base, not over every wallet; \"delta-neutral\" names the strategy and the hedged scope, not a claim that every protocol-held wei of ETH exposure is offset. Verify: cast balance 0x09a2780ac8Be6D5d2d1F85A8D92b09D40C9CA37e --rpc-url https://mainnet.base.org","verifyVia":["cast balance 0x14f04cE02f35B29Af564A98544dD7e2393993946 --rpc-url https://mainnet.base.org","cast call 0x4200000000000000000000000000000000000006 \"balanceOf(address)(uint256)\" 0x14f04cE02f35B29Af564A98544dD7e2393993946 --rpc-url https://mainnet.base.org"]},"treasury":{"address":"0x5343C41d4FF2B61DAacA9cbC050550C40605B075","usd":0,"countedInSolvency":false,"ref":"reserves.treasury","source":"On-chain treasury address. Disclosed as protocol-owned; not counted as backing for kUSD."},"insuranceFund":{"address":"0xE8799FCF327C6D2f78103a3c9308C93592A30403","usd":0,"countedInSolvency":true,"ref":"reserves.insuranceFund","source":"Protocol insurance fund. Its USD value is protocol-owned and is already part of solvency.collateralUSD, so it is counted there rather than added again here."},"multisig":{"address":"0x52d3E450bA6c299B1B07298F1E87DD74732D4877","usd":333.43,"countedInSolvency":false,"ref":"reserves.multisig","source":"The 2-of-3 governance Safe. Holds protocol operating capital; disclosed, not counted as kUSD backing."}}}},"liabilities":{"kUSD":{"address":"0x5C2EfdF0D8D286959b42308966bc2B97f5680AA3","totalSupply":1144.707154,"totalSupplyWei":"1144707154000000000000","outstanding":1109.707154,"peg":"USD"}},"solvency":{"status":"fully-backed","psmSolvent":true,"psmSolvencyRatio":1.0010641113700527,"psmSolvencyPct":"100.11%","primaryBackingRatio":1.0010641113700527,"collateralUSD":1149.1329795926863,"liabilitiesUSD":1109.707154,"aggregateCollateralRatio":1.0355281350134347,"aggregateCollateralRatioPct":"103.55%","aggregateBasis":"usd-collateral-including-legacy-v1-vault-over-outstanding-kusd","ratio":1.0355281350134347,"ratioPct":"103.55%"},"redemptionDepth":{"instantSingleTransactionUSDC":995.003,"instantSingleTransactionPctOfOutstanding":"89.66%","deepestLegAddress":"0x07eBb486e11BD217e6085eb5ab663e4517595993","totalReachableUSDC":1110.8880060000001,"totalReachablePctOfOutstanding":"100.11%","totalReachableRequiresSequentialTransactions":true,"outstandingKUSD":1109.707154,"precedent":{"executedRedemptions":2,"totalRedeemedKUSD":35,"totalPaidOutUSDC":34.965,"externalRedemptionsToDate":0,"allRedemptionsByFounderWallet":true,"lifetimeKUSDBurned":0,"completeAsOf":"2026-08-03","transactions":[{"date":"2026-07-21","txHash":"0x05476a37c2c91332d5af5982f100e36ee3727cecb42ee37bbd31f74f88708416","blockNumber":48935450,"psmAddress":"0xFf3025ec18e301855aB0f36Ec6ECa115a29A5Fbc","psmLabel":"redeem-reserve PSM","kusdRedeemed":32,"usdcPaidOut":31.968,"feeBps":10,"redeemer":"0x14f04cE02f35B29Af564A98544dD7e2393993946","redeemerRelationship":"founder-custodied wallet, not a third party","significance":"First redemption of any size. Drawn on the shallow redeem reserve."},{"date":"2026-08-03","txHash":"0xac07a7f6dff9654b3b66dac3341adff75583535d6f50947d0bc63367062e692e","blockNumber":49514284,"psmAddress":"0x07eBb486e11BD217e6085eb5ab663e4517595993","psmLabel":"retired mint PSM","kusdRedeemed":3,"usdcPaidOut":2.997,"feeBps":10,"redeemer":"0x14f04cE02f35B29Af564A98544dD7e2393993946","redeemerRelationship":"founder-custodied wallet, not a third party","significance":"First redemption drawn on the DEEPEST leg, which is the contract this endpoint names as deepestLegAddress and whose reserve is published as instantSingleTransactionUSDC. Until this transaction the headline exit-capacity figure had never been paid out on mainnet by the contract that carries it; it had only been simulated. Sized at 3 kUSD deliberately: enough to exercise the path, small enough that the published capacity moved by 0.3 percent rather than being drained to make a point."}],"note":"Everything else under redemptionDepth describes capacity. This field reports what has actually executed, with hashes, so the claim can be checked rather than believed. Two things a reader should not have to infer. First, every redemption to date was sent by the founder-custodied wallet, so this is evidence that the redeem path works against live deployed bytecode and it is not evidence of third-party demand. External redemptions to date are zero. Second, a PSM redemption does not burn kUSD. Both deployed PSMs predate the 2026-07-06 redeem-burn change, so returned kUSD is transferred into the PSM and held there as inventory. kUSD totalSupply is therefore unchanged by a redemption and lifetime kUSD burned is exactly zero, while liabilities.kUSD.outstanding falls, because PSM-held kUSD is netted out of it. Anyone who checks totalSupply after a redemption and sees a flat number is seeing this design working, not a redemption that failed.","verifyVia":["cast tx 0x05476a37c2c91332d5af5982f100e36ee3727cecb42ee37bbd31f74f88708416 --rpc-url https://mainnet.base.org","cast tx 0xac07a7f6dff9654b3b66dac3341adff75583535d6f50947d0bc63367062e692e --rpc-url https://mainnet.base.org"]},"byContract":[{"key":"psmMint","label":"Live mint PSM","address":"0xaBDE1138aa1Ce88d1dF06422C0c3b05D70569803","reserveUSDC":30,"pctOfOutstanding":"2.70%","redeemOnly":false,"canServeRedemptions":true},{"key":"psmRedeemReserve","label":"Legacy redeem PSM","address":"0xFf3025ec18e301855aB0f36Ec6ECa115a29A5Fbc","reserveUSDC":85.885006,"pctOfOutstanding":"7.74%","redeemOnly":true,"canServeRedemptions":true},{"key":"psmRetiredMint","label":"Prior mint PSM","address":"0x07eBb486e11BD217e6085eb5ab663e4517595993","reserveUSDC":995.003,"pctOfOutstanding":"89.66%","redeemOnly":true,"canServeRedemptions":true}],"routing":"Redemptions route to the smallest reserve that fully covers the amount, which preserves the deepest reserve for larger exits. A redemption larger than instantSingleTransactionUSDC cannot be served by any single contract, because each PSM pays only from its own USDC reserve. It must be split across sequential transactions against the legs in byContract, deepest first: Prior mint PSM (psmRetiredMint) at 0x07eBb486e11BD217e6085eb5ab663e4517595993 holding 995.00 USDC, Legacy redeem PSM (psmRedeemReserve) at 0xFf3025ec18e301855aB0f36Ec6ECa115a29A5Fbc holding 85.89 USDC, Live mint PSM (psmMint) at 0xaBDE1138aa1Ce88d1dF06422C0c3b05D70569803 holding 30.00 USDC. That walk reaches totalReachableUSDC in total. No external market route is offered and none is implied: there is no secondary venue holding kUSD at a depth that could serve a redemption, so every exit path published here is a direct contract call you can simulate before sending anything.","topUpMechanism":"Every USDC->kUSD mint deposits its USDC into the live mint PSM (psmMint), so that leg deepens with mint flow. The two redeem-only legs hold the reserves from their own mint windows and are drawn down by redemptions; they are not topped up by new mints. The 2-of-3 Safe can also top up any PSM reserve by direct USDC transfer. Reserves cannot be moved between PSMs by an admin: KUSDPSM has no admin-withdraw, so USDC leaves a PSM only via a redemption, a fee skim bounded by skimmableSurplus, or an ERC-3156 flash loan that must be repaid in the same transaction. Correction, 2026-08-01: the flash-loan path was previously omitted from this sentence. It is permissionless and its fee is currently zero, and maxFlashLoan returns the whole reserve, so the reserve can leave and return inside one transaction even though it can never be missing at the end of a block. Stated here because the omission made a true sentence read as a stronger guarantee than the code gives.","disclosure":"Until 2026-07-24 this figure was capped at the second-deepest leg because the app read only two of the three PSM reserves. The deepest reserve was live and redeemable by direct contract call the entire time; the interface was the thing that was wrong, and it has been corrected rather than the reserve being moved or reactivated. No contract was changed, unpaused, or redeployed. Correction, 2026-07-28: until this date the routing field above told a redeemer that an amount larger than the deepest single reserve could be routed through the Aerodrome kUSD pool. That was false, it was checkable, and following it would have been expensive. The pool is real (0x8ebc3b7a5b44a4319a2bcc53291762d11aa73b0d on Base) but at 2026-07-28 it held 90.97 kUSD against 107.87 USDC, its reserves had not moved since 2026-07-04, and it had recorded zero buys and zero sells in every window. Calling getAmountOut on it for 998 kUSD, the figure this endpoint publishes as instant single-transaction capacity, returns about 107.72 USDC: a redeemer who followed our own instruction would have taken roughly an 89 percent loss instead of redeeming at par through a PSM. No number on this endpoint changed as a result, because the pool was never counted in instantSingleTransactionUSDC or totalReachableUSDC; the arithmetic was right and the instruction beside it was wrong. It is deleted rather than qualified, and the routing field now names the actual sequence of PSM contracts and the reserve each one holds. Recompute the pool figures yourself with getReserves() and getAmountOut() at that address before relying on this paragraph; they are point-in-time."},"market":{"ethPriceUSD":1882.68},"methodology":"Direct on-chain reads via Base RPC. Two vaults exist and this endpoint reports both, so read the version fields rather than assuming. reserves.vault is KerneVault v1 (0x8005bc7A), superseded in the 2026-06-16 ceremony but retained as the vault attested here because the residual WETH and the on-chain mirror of the Hyperliquid hedge equity sit in it; its value enters solvency.aggregateCollateralRatio only, never the 1:1 mint backing. reserves.vaultV2 is KerneVault v2 (0x8ccc56B5), the live Safe-governed deposit/mint vault and the vault the hourly signed statement at /api/por/signed attests. Whether it holds kUSD MINTER_ROLE is NOT asserted here: it is read live from kUSD AccessControl on every request and published as a boolean under reserves.vaultV2.minterRole.holdsRole, with the cast command that reproduces it, and the same is done for the live mint PSM under reserves.psmMint.minterRole. Until 2026-08-08 this paragraph and the vaultV2 role string both asserted that the vault holds MINTER_ROLE, which had been false since it was revoked on 2026-08-03: the role now sits with the live mint PSM alone. That claim was refutable in one RPC call, on the endpoint that exists to be recomputed by strangers, so it has been replaced by the read rather than by a corrected string. It holds no user deposits (zero share supply), is published here with its strategist-written l1Assets mirror broken out under reserves.vaultV2.l1AssetsETH so the two surfaces reconcile without inference, and is deliberately excluded from every ratio while no deposit exists. Vault TVL (reserves.vault.tvlUSD) is the venue-reconciled sum of four buckets surfaced under reserves.vault.composition: trackedOnChain (real ERC-20 balance), offChainAssets (CEX hedge collateral with separate attestation), l1Assets (Hyperliquid account equity), hedgingReserve (on-chain hedge buffer). The l1Assets bucket is a special case: the vault stores it as a strategist-written fixed-ETH mirror (KerneVault.l1Assets()) that goes stale when the Hyperliquid account is drawn down, because its on-chain setter reverts a single-step change over +/-20%. To avoid ever over-stating off-chain backing, this endpoint reads the live Hyperliquid account equity (POST api.hyperliquid.xyz/info clearinghouseState) and recognises l1Assets at min(on-chain mirror, live account equity); when the venue read fails it recognises none of the mirror. The raw on-chain mirror stays fully disclosed under composition.l1Assets.onChainMirror and reserves.vault.onChainTotalAssets, and composition.l1Assets.reconciliationStatus reports whether the figure was reconciled, capped-to-live-venue, or left unverified this cycle. Each bucket is broken out so any non-zero off-chain value is verifiable rather than absorbed into the aggregate. WETH amounts are converted with a CoinGecko/DefiLlama ETH price. Solvency ratio is (vault TVL + insurance fund USD value + combined PSM USDC reserves) / outstanding kUSD, where the combined PSM reserves sum the redeem-reserve PSM, the retired mint PSM (MINTER revoked 2026-07-10; reserve retained until migration), and the live mint PSM (redeployed 2026-07-10; new mints deposit their USDC there), and outstanding kUSD = kUSD.totalSupply() minus kUSD held by the PSM contracts. PSM USDC is included as collateral because it directly backs PSM-minted kUSD 1:1; PSM-held kUSD is subtracted from liabilities because it was returned by redeemers and is held by the PSM contracts themselves, not by any external account. The headline is solvency.status plus solvency.psmSolvencyRatio: the combined PSM USDC reserves covering outstanding (user-held) kUSD 1:1; per-contract breakdowns are under reserves.psmRedeemReserve, reserves.psmMint, and reserves.psmRetiredMint. /api/stats publishes the same three legs as psmUSDCLegacy, psmUSDCMint, and psmUSDCPrevMint with their sum as psmUSDC, and since 2026-08-09 also as psmReservesUSD, but it does not publish a ratio: divide psmUSDC by kusdOutstanding there, or read psmSolvencyRatio here. Until 2026-08-09 this sentence said to divide by kusdSupply. That is the wrong denominator, and it is the exact error /api/stats warns against in its own disclaimer: kusdSupply is the raw ERC-20 total and includes the kUSD the PSM contracts custody after a redemption, which is held by the protocol and is a claim on nobody. Dividing by it manufactured a shortfall of precisely that inventory, on the endpoint that exists to be recomputed by strangers. kusdOutstanding is the denominator this endpoint uses for solvency.psmSolvencyRatio and the one the signed attestation uses for psm_solvency_ratio, so all three surfaces now name one denominator. Both endpoints read the same contracts, this one hourly under signature and that one live, so they can differ by recent flow. solvency.aggregateCollateralRatio (also exposed as the deprecated solvency.ratio) is a wider USD figure that adds the retired v1 WETH vault under reserves.vault, which holds no user funds and does not back current mints; it reads well above 1:1 and should not be quoted as the backing ratio. Protocol- and founder-owned capital (treasury, insurance fund, the 2-of-3 Safe, any protocol deposit into the deposit vault, and the founder-custodied watch-only float) is rolled up under reserves.protocolOwnedReserves as a labeled disclosure view, excluded from every ratio because each component is either already reported under its own key or, like the watch-only float, is not protocol collateral at all. The watch-only float (components.founderWatchOnlyFloat) is the self-custodied hedge base the engine sizes its pilot-scale Hyperliquid short against, disclosed in advance under the Seed TVL policy; it backs no kUSD and enters no ratio. reserves.stakedVault is the skUSD staking vault (deposit kUSD, receive skUSD, yield arrives as a rising share price) and has a DefiLlama Yields adapter merged at yield-server src/adaptors/kerne. DefiLlama runs that adapter daily and the pool exists in their database as config id 6fd86535-c8f5-5b5c-af74-25a2b6a9479d, last written 2026-08-15T02:01Z, but it is NOT on the public yields table: on 2026-08-15, zero of 15,589 pools at yields.llama.fi/pools carried project kerne. The cause is size alone, and the mechanism is two floors in yield-server src/utils/exclude.js, tvlUsdDB at 1,000 dollars to enter the database and tvlUsdUI at 10,000 dollars to reach the public table, against about 1,011 dollars held here. Until 2026-07-28 this endpoint said the pool was published on that table, which was false and checkable in one request; from then until 2026-08-15 it said instead that size was not the reason, which counting listed pools under 1,000 dollars appears to show only until their categories are read, because every one of them is a lending category riding a carve-out that Basis Trading cannot use. A merged adapter that writes daily is still not a listing. It is reported for disclosure only: the kUSD it holds is already on the liability side inside liabilities.kUSD.outstanding, so it is never added to collateralUSD and moves no ratio. Its ownership breakdown is stated under reserves.stakedVault.ownership and mirrored in components.stakedVaultDeposits, including the fraction of all outstanding kUSD the founder wallet holds, because at pilot scale the vault is seeded with founder capital and no public presentation of it should be left to imply third-party deposits. Backing and reachable exit liquidity are reported as separate blocks because they answer different questions: solvency reports whether outstanding kUSD is backed, while redemptionDepth reports how much of it can actually be redeemed. A redemption is a single transaction against a single PSM, and each PSM pays only from its own USDC reserve, so redemptionDepth.instantSingleTransactionUSDC is the deepest individual reserve and is never the sum of the three; the sum is published separately as redemptionDepth.totalReachableUSDC and requires sequential transactions. A revoked kUSD MINTER_ROLE disables minting on a PSM but not redemption, because the redeem path transfers kUSD into the contract rather than burning it, so every listed leg can serve redemptions. The Seed TVL and off-chain accounting policy is published at docs/SEED_TVL_POLICY.md.","attestation":{"kind":"rpc-self-attest","rpcChainLength":4,"canonicalEndpoint":"https://kerne.fi/api/por","verifyVia":["cast call 0x8005bc7A86AD904C20fd62788ABED7546c1cF2AC \"totalAssets()(uint256)\" --rpc-url https://mainnet.base.org","cast call 0x8005bc7A86AD904C20fd62788ABED7546c1cF2AC \"offChainAssets()(uint256)\" --rpc-url https://mainnet.base.org","cast call 0x8005bc7A86AD904C20fd62788ABED7546c1cF2AC \"l1Assets()(uint256)\" --rpc-url https://mainnet.base.org","cast call 0x8005bc7A86AD904C20fd62788ABED7546c1cF2AC \"hedgingReserve()(uint256)\" --rpc-url https://mainnet.base.org","cast call 0x5C2EfdF0D8D286959b42308966bc2B97f5680AA3 \"totalSupply()(uint256)\" --rpc-url https://mainnet.base.org","cast call 0x5C2EfdF0D8D286959b42308966bc2B97f5680AA3 \"balanceOf(address)(uint256)\" 0xFf3025ec18e301855aB0f36Ec6ECa115a29A5Fbc --rpc-url https://mainnet.base.org","cast call 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \"balanceOf(address)(uint256)\" 0xFf3025ec18e301855aB0f36Ec6ECa115a29A5Fbc --rpc-url https://mainnet.base.org","cast call 0x5C2EfdF0D8D286959b42308966bc2B97f5680AA3 \"balanceOf(address)(uint256)\" 0x07eBb486e11BD217e6085eb5ab663e4517595993 --rpc-url https://mainnet.base.org","cast call 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \"balanceOf(address)(uint256)\" 0x07eBb486e11BD217e6085eb5ab663e4517595993 --rpc-url https://mainnet.base.org","cast call 0x5C2EfdF0D8D286959b42308966bc2B97f5680AA3 \"balanceOf(address)(uint256)\" 0xaBDE1138aa1Ce88d1dF06422C0c3b05D70569803 --rpc-url https://mainnet.base.org","cast call 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \"balanceOf(address)(uint256)\" 0xaBDE1138aa1Ce88d1dF06422C0c3b05D70569803 --rpc-url https://mainnet.base.org","curl -s https://api.hyperliquid.xyz/info -H \"content-type: application/json\" -d '{\"type\":\"clearinghouseState\",\"user\":\"0x09a2780ac8Be6D5d2d1F85A8D92b09D40C9CA37e\"}' | jq .marginSummary.accountValue"]}}