TL;DR
Spark is Sky's lending and savings Star: SparkLend is an Aave v3 fork, Savings wraps both the Sky Savings Rate and Spark's own V2 vaults, and the Spark Liquidity Layer routes reserves across venues. Three things changed since 2026-08-05, and a fourth is a correction this report owes its readers.
TVL first, because the number is easy to get wrong. The DeFiLlama parent record reads $7,109,214,251 today against $4,598,280,620 on 2026-08-05. That is the same basis both times, the de-duplicated parent, so the 55 percent move is real and not an artifact of how it was measured. Say what it is, though. Spark held $8.67B at its 2025-10-28 peak and $3.28B at its 2026-03-09 trough. Six weeks of growth brings it back to 82 percent of the high, which is a recovery, not a record. Anyone summing the three children gets $9.41B and overstates the protocol by $2.30B.
The real headline is a rate limit. The 2026-09-10 spell executed on 2026-09-14 at 14:00 UTC and set Ethena to zero: USDe mint, USDe burn, sUSDe cooldown and the sUSDe deposit key all read maxAmount 0 and slope 0 on-chain, all four carrying the same lastUpdated stamp from that transaction. Last month this report said the $1.1B Ethena authorisation was undrawn but live, and that governance could redraw it without a new vote. That is no longer true. A venue with a zero rate limit reverts, so restoring the line now takes a fresh spell through Sky governance. The position itself has not moved a single unit since August: 80.912135 sUSDe, worth about a hundred dollars, with no pending cooldown.
The correction concerns the Liquidity Layer, and it runs the opposite way to last month's. In August this report described the Layer's largest holdings correctly, as capital recycled back into SparkLend. A draft of this month's report restated them as shares of Spark's own savings vaults. That is wrong, and the error is worth naming because the ticker collision that caused it will catch other readers too. Separately, the ALM Proxy now holds 17 Uniswap v4 position NFTs, and the adapter resolves them into token lines, which makes one attribution weaker than last month rather than stronger.
Checklist
Audits and contracts. SparkLend inherits Aave v3 and the audit surface has grown with the product. Spark's security page lists thirteen separately audited components, a count taken this run by counting the audit links on the page rather than trusting a summary of it: SparkLend Core Updates, SparkLend Advanced, SparkLend Cap Automator, Spark ALM Controller, XChain Helpers, XChain SSR Oracle, Spark Gov Relay, Spark PSM, Spark Vaults V2, Savings Vault Intents, sUSDS, sDAI and stUSDS. The Immunefi bounty was re-confirmed live this run at a $5,000,000 maximum.
One honest limit, stated rather than papered over. The page names no audit firm inline for any component, only a link to an audits repository, so the firm-by-firm roster verified on 2026-08-05 (ChainSecurity on SparkLend Advanced and ALM Controller v1.0.0 to v1.7.0 and v1.10.0, Cantina on every released version, Certora on v1.8.0 and v1.9.0) is carried this month, not re-opened. ChainSecurity is independently confirmed as the auditor of Spark Vaults V2 from its own published listing, client SparkDAO, covering an ERC-4626 vault whose interest is distributed from a manually set Vault Savings Rate. That at least shows the relationship is current and reaches the newest system.
The coverage gap August flagged is still open and is now wider, which is why it is restored here rather than dropped. Last month the odd component was ALM_PROXY_FREEZABLE, built from a repository outside the audited range. This month the registry also carries a whole segregated PAU stack for spUSDC: its own ALM proxy, controller, rate limits, access controls and administered agent, alongside a beacon, a PAU factory, an administered-agent factory and a default assembler. These come from diamond-pau v1.14.0, pau-administered-agent v1.0.0 and pau-assemblers v1.0.0, and none of those repositories appears among the thirteen audited components. Work on them is live: an open pull request in spark-spells adds end-to-end tests for segregated PAUs. Nothing is at risk in them today, because the segregated proxy and the freezable proxy were both checked directly this run and hold zero of every token tested. Read the audit roster as covering the thirteen named systems, not every deployed contract.
Admin control. Unchanged in kind, and still the largest structural risk. The Sky pause delay reads 172800 seconds, a flat 48 hours, measured on-chain today rather than quoted. It has been 30 hours, 48 hours, 24 hours and 48 hours again inside two years, so treat it as today's setting.
What is new is StarGuard, and it deserves a precise description because the name invites a wrong reading. StarGuard does not give Spark independence from Sky. The Sky core spell still authorises the Spark payload, by plotting it, and that plot passes through the GSM delay like anything else. What StarGuard changes is that execution then happens in a separate, permissionless transaction, guarded by a codehash check, a reentrancy lock, an expiry deadline and a re-check that the payload did not deauthorise StarGuard on its way out. The stated reason is prosaic: bundling every Star spell into one core spell was hitting the block size limit on the cast transaction. The practical consequence for a depositor is small but real. The moment a Spark change lands is no longer the moment the Sky vote lands, and it can be any block between the plot and the deadline.
Below governance the picture is the same as last month, with one count corrected. A RELAYER moves capital only between venues carrying a non-zero rate limit, and a FREEZER can revoke a relayer or detach a controller. The registry carries not two but five sparklend-freezer emergency spells: pause all assets, pause DAI, freeze all assets, freeze DAI, and remove the freezer multisig. It also carries two separate multisigs, one for the ALM freezer and one for SparkLend. All of that acts with no delay at all. That is a legitimate defence and it is also a reminder that the 48 hours does not cover everything.
Oracle. This dimension had been marked for refresh two months running, and it is now resolved. SparkLend's PoolAddressesProvider reports marketId "Spark Protocol" and points at price oracle 0x8105f69d9c41644c6a0803fda7d03aa70996cfd9. Asking that oracle for the source of WETH returns a contract whose own description() reads "Aggregated price feed ETH/USD from Chronicle, Chainlink, and RedStone oracles", and cbBTC returns the BTC/USD equivalent. Both answer with live prices that match what the oracle hands SparkLend, to the last decimal.
Three independent providers behind one feed is materially better than the single Chainlink source this file assumed in July and could not confirm in August. wstETH and USDC route through contracts that revert on description(), which is what a custom ratio oracle and a fixed or capped price oracle look like, consistent with the ChainSecurity-audited custom set, and the USDC source returns exactly 1.00000000.
One caveat, measured rather than inferred, because it would otherwise be easy to misread. The ETH feed returns roundId 1 and an updatedAt equal to the current block timestamp on every call. Three consecutive reads confirmed it, each matching the latest block to the second, while the answer stayed byte-identical at 2624.61238 across roughly seventeen minutes. So this feed's timestamp is not evidence that the price is fresh, and no integrator should use it for a staleness check. The aggregation itself is the protection here, and a wrapper of this shape normally reverts rather than serving a stale source, but that behaviour was not tested and is not claimed.
Liquidity and exit. SparkLend exits need idle pool liquidity, unchanged. Savings has actually changed shape, and it is worth reading carefully because it is the product most people treat as a cash equivalent.
Spark now runs its own V2 savings vaults (spUSDC, spUSDT, spPYUSD, spETH, spUSDG) alongside the Sky-operated sUSDS, stUSDS and sDAI. Spark's own documentation lists the Spark Liquidity Layer as the yield source for all five, which means a saver in spUSDT is exposed to whatever the Liquidity Layer holds. There are no lockups. What there is instead is a buffer, and its size is documented rather than unknown: the V2 vaults keep a liquidity buffer of up to $10 million each to serve typical withdrawal volume through atomic redemption. Measured on-chain today, spUSDT holds $397.5M and spUSDC holds $309.2M, so that buffer is about 2.5 and 3.2 percent of each vault. Anything beyond it becomes a Savings Vault Intents request, an on-chain redemption intent that Spark's ALM Planner fulfils once it has prepared liquidity. Spark says these usually clear within a few minutes. That is a vendor claim, not something measured here, and the gap between a 3 percent instant buffer and a 100 percent redemption right is the whole of the risk in this product.
Inside the Liquidity Layer, the credit lines are smaller as a share of the protocol than they were. The Arkis Spark Prime position is identical to August at 19,647,500 shares, and converting those shares to assets on-chain returns $20,387,449 against a reported USDC line of $20,381,409, so that line is brokerage credit almost to the dollar and contains no idle cash: the ALM Proxy's direct USDC balance is zero. The $239.99M USDT line is still not USDT, since balanceOf reads exactly zero. Together that is $260.4M of credit-shaped exposure against $7.109B, 3.7 percent of TVL, down from $280.2M and 6.1 percent in August. The dollar amount fell about 7 percent while the ratio nearly halved.
The attribution of the USDT line, though, is now less clean rather than more. Last month the only mainnet path that could produce it was the Anchorage export, so this report called it term Bitcoin credit wearing a stablecoin ticker. Reading the adapter again this run, there is a second path: it resolves Uniswap v4 positions held by the ALM Proxy, and the proxy holds 17 of them. The PYUSD line makes the point. In August the aggregator and a direct balance read agreed to the dollar. Today the aggregator says $248,273,521 and a direct read says $185,284,142, a gap of $63.0M that did not exist before the v4 positions did. The most likely explanation is v4 LP, and the USDC evidence sharpens it: since the USDC line is fully accounted for by Arkis, the v4 positions hold no USDC, which fits the reported migration of Spark liquidity into v4 USDS pools paired against USDT and PYUSD. So the USDT line is probably Anchorage credit plus LP rather than Anchorage alone. The split is not measured here and is marked for refresh. It cuts in the safe direction, since LP is not credit, but the previous report's confident attribution should not be repeated as if nothing changed.
One more thing in this section, and it is a correction rather than a caveat. The Layer's largest Ethereum lines are spUSDS at $880.3M, spUSDT at $281.0M, spDAI at $194.3M and spPYUSD at $155.0M. These are SparkLend deposit receipts, the aTokens of the lending market, whose on-chain names read "Spark USDS", "Spark USDT", "Spark DAI" and "Spark PYUSD". They are not shares of the Spark Savings V2 vaults, which live at entirely different addresses and of which the ALM Proxy holds exactly zero. The tickers collide, which is how a draft of this report came to describe the Layer as holding its own savings vaults in a yield loop. The real relationship is the plainer one: the Layer supplies liquidity into SparkLend, SparkLend counts it, and the parent record de-duplicates it, which is precisely why the child sum overstates the protocol by $2.30B. The circularity worth watching runs the other way, from savings depositor into the Layer, and it is described two paragraphs above.
Yield: real versus emission. Savings pays 3.5 to 3.6 percent on stablecoins today: USDT 3.5 percent on $397.3M, USDS 3.6 percent on Arbitrum and Base, USDC 3.6 percent on Ethereum and Avalanche, ETH 1.35 percent, USDG 3.5 percent on Robinhood Chain, and a new PYUSD vault at 3.6 percent that holds only $31.0k. The funding is stability fees, tokenized treasuries and deployment carry. With Ethena rate-limited to zero there is now no basis-trade component at all, which is a plainer and more durable source mix than this protocol had a year ago.
The mechanism deserves one correction, because "draws its yield from the Liquidity Layer" is looser than what the contracts do. The V2 vaults distribute interest from a Vault Savings Rate that governance writes on-chain. Reading vsr() directly returns rates that annualise to 3.5000, 3.6000 and 1.3500 percent, round to four decimal places, which is what an administered parameter looks like and not what a pass-through of realised earnings looks like. The rate is still funded by real revenue rather than token emissions, so this dimension stays green. But a saver is holding a set rate backed by the Layer's book, not a claim on whatever that book happens to earn, and the difference is absorbed by Spark and Sky.
One thing moved the wrong way and should be named. SparkLend's largest USDS pool is $563.7M paying 4.237 percent that DeFiLlama attributes entirely to rewards, with no base component at all, next to a separate $478.6M pool paying 2.318 percent base. The reward-driven rate was 3.229 percent in August. So the headline number a depositor sees on the biggest USDS pool is emissions, and it is growing. That does not change the dimension, because the savings rate itself is real and the reward pool is clearly separated in the data, but do not read 4.24 percent as protocol revenue.
Holder concentration. SPK circulating is 3,327,001,120 of 10,000,000,000, so 33.3 percent of supply is out, at about $0.0211 for a $70.3M market cap and a $211.2M fully diluted valuation, cross-checked on two price sources. Both the float and the price are up since August, when it was 30.4 percent at $0.0153. The schedule is unchanged: 65 percent farmed over ten years, 23 percent ecosystem, 12 percent team. A stSPK staking contract now sits in the address registry, so there is a lock venue that did not feature in earlier reports.
On-chain top holders are still unavailable behind Etherscan's Pro gate, re-tested and still marked for refresh. This is the third consecutive month that line cannot be filled. For a depositor the concentration that matters more is Sky, which holds governance and supplies much of the deposit base, and that has not changed.
Track record. Still clean, and the evidence is better than last month by accident of scope: DeFiLlama's hacks database has grown from 612 records to 1,273, and Spark still does not appear in it. All three protocol records carry an empty hacks field. An X sweep across 2026-08-01 to 2026-09-20 returned no exploits, no bad debt, no oracle failure, no depeg and no governance controversy.
Two dated events fall in the window and both are the protocol reducing its own surface. SparkLend on Gnosis was fully deprecated on 2026-09-14, three years after it launched there in September 2023 as Spark's first non-Ethereum deployment, with outstanding loans made eligible for liquidation by spell. The wind-down began in early 2026 with deposits frozen and a 50 percent reserve factor, and Gnosis TVL is now $219,301, so this completed as an orderly retreat rather than a scramble. The same 2026-09-10 spell deprecated LBTC as collateral by setting its LTV to zero while leaving the liquidation threshold on KEEP_CURRENT, read directly from the spell source, which is the standard way to stop new borrowing against an asset without forcing existing users out. There is $222.5M of LBTC in the market, so this is a live de-risking of a real position, not housekeeping.
The same caveat as always applies to all of it. A hacks database tracks exploits, not bad debt. There is no report of bad debt in SparkLend across the sources checked, and that is not the same as a solvency measurement.
Worst case
A Sky governance failure is still the biggest one and nothing this month changed it. A captured executive spell can alter SparkLend parameters or upgrade contracts once the pause delay expires, and that delay is a governance-set number that sat at 24 hours as recently as this May. StarGuard adds a small wrinkle rather than a new risk: the payload executes in its own permissionless transaction at some point before its deadline, so an observer watching only the Sky vote can be surprised by the timing. Five emergency spells and two multisigs act with no delay at all. Deposits, governance and much of the liquidity all trace to Sky, so Spark cannot be safer than Sky.
Counterparty exposure through the Liquidity Layer is second, and it is smaller and better fenced than it was. The Ethena line is not merely undrawn, it is rate-limited to zero, and the B2C2 OTC legs and the Anchorage USAT and USDT transfer legs were zeroed in the same spell. What remains is an Anchorage USDC leg that the spell explicitly left alone as "actively used", plus whatever share of the $239.99M USDT line is credit rather than LP. If Bitcoin gaps and a borrower fails, that loss lands on Sky reserves, and no depositor can inspect the collateral, the loan-to-value, the margining or the borrowers. At 3.7 percent of TVL it is survivable. The thing to watch is the ratio, not the dollar figure.
Third, and the one this run sized properly for the first time, is the savings exit path. A spUSDC or spUSDT redemption above roughly $10 million does not clear atomically. It becomes an intent fulfilled by off-chain infrastructure pulling liquidity from a Layer that holds credit lines, LP positions and SparkLend deposits. In calm markets that is minutes. In a run, the instant capacity is about 2.5 to 3.2 percent of each vault and the rest is a queue whose speed depends on how liquid the Layer's book is at that moment, at the same moment everyone else is asking. This has not been tested under stress and this report has not measured it. It is a timing risk rather than a loss of claim, which is why the dimension stays yellow, but it is the part of Spark most likely to behave unlike the cash equivalent people treat it as.
Bottom line
Solid, and it is a better solid than last month rather than an unchanged one. No dimension is red. Two of the three questions this report left open in August were answered on-chain this run, both favourably: the Ethena authorisation is closed at the rate-limit layer rather than dormant, and the oracle turns out to run on a three-provider aggregate of Chronicle, Chainlink and RedStone instead of the single unverified feed that had been marked for refresh twice.
Against that, the protocol grew 55 percent in six weeks while its credit-shaped exposure fell in dollars, which is the right direction for a ratio, and it spent the month deliberately shrinking its own surface: 35 rate limits zeroed across dead integrations, the Gnosis deployment closed, LBTC deprecated as collateral.
The honest deductions, including the ones this run had to correct in its own draft. Credit is still uninspectable, and the accounting got less clear rather than more, since Uniswap v4 positions now share a token line with the Anchorage allocation. The savings product sits on the Liquidity Layer behind a buffer of about 3 percent and an off-chain fulfilment step. Its advertised rate is administered, not earned-and-passed-through. The audited component list does not cover the new segregated PAU machinery. And the biggest advertised SparkLend USDS rate is entirely emissions and rising.
Three things would flip this to caution: the Anchorage book growing back toward its stated $1B target without disclosure growing with it, a new spell restoring a large Ethena rate limit, or a first bad-debt event in SparkLend. A fourth would earn a hard look rather than a flip: a Savings Vault Intents queue that visibly fails to clear in minutes. Size Spark as correlated Sky exposure with a counterparty layer attached. Do not read the USDT line on any dashboard as cash, do not read the 4.24 percent USDS pool as revenue, and do not read a large Spark Savings position as same-block money.
Data appendix
- TVL: $7,109,214,251 on the DeFiLlama
sparkparent, which has no standalone protocol page and aggregates the three children with de-duplication. Children before dedup: SparkLend $5,600,968,390, Spark Liquidity Layer $2,528,927,366, Spark Savings $1,283,610,462, summing to $9,413,506,218, which overstates the parent by $2,304,291,967. Prior report 2026-08-05: $4,598,280,620, same parent basis (the daily series reads $4,555,006,698 for that date), so +54.6 percent. ATH $8,668,345,388 on 2025-10-28, current level 82.0 percent of it. 2026 trough $3,282,054,905 on 2026-03-09, so 2.2x off the low. 90d ago (2026-06-22) $4,669,533,833. SparkLend borrowed $2,693,626,757, up from $1.806B. Gnosis/xDai $219,301. Do not mix insparkdex-*underparent#sparkdex, which is Spark DEX on Flare and unrelated. - Audits: Immunefi confirmed live at a $5,000,000 maximum ("bounty rewards of up to $5,000,000", docs.spark.finance/dev/security/bug-bounty-program, read this run). Component inventory from docs.spark.finance/dev/security/security-and-audits, counted this run from the page's own audit links (12 reading "Audits repository" plus 1 reading "Audit repository" for Savings Vault Intents, so thirteen): SparkLend Core Updates, SparkLend Advanced, SparkLend Cap Automator, Spark ALM Controller, XChain Helpers, XChain SSR Oracle, Spark Gov Relay, Spark PSM, Spark Vaults V2, Savings Vault Intents, Savings USDS (sUSDS), Savings DAI (sDAI), Staked USDS (stUSDS). SparkLend itself is described as based on Aave v3 and is not listed as a separately audited Spark component. No audit firm is named inline for any component. Firm-by-firm roster (ChainSecurity, Cantina, Certora, with versions) carried from the 2026-08-05 run, not re-opened: refresh. ChainSecurity independently confirmed on Spark Vaults V2 from its own audit listing, client SparkDAO, scope an ERC-4626 vault distributing interest from a manually set Vault Savings Rate. Note the docs domain moved: devs.spark.fi now 301-redirects via docs.spark.fi to docs.spark.finance, and the docs carry a Domain Migration page.
- Audit coverage gap, restored from August and enlarged: ALM_PROXY_FREEZABLE
0xe5c6318456a7Cb6f74f93B4eee4616dB5fcef699is diamond-pau v1.12.0, and the registry now also carries a segregated PAU stack for spUSDC: SPUSDC_PAU_ALM_PROXY0x8D719A830b00e5571db00D173505CD56c0Ec224a, SPUSDC_PAU_CONTROLLER0x4623cdEf0FB92499fd20f710318Cf17B8a7EB6bC, SPUSDC_PAU_RATELIMITS0x222712581c3631DDF938f98Dab29a6D098ec6829, SPUSDC_PAU_ACCESS_CONTROLS0x36F61446638BE126a189689552f38159d30f95ef, SPUSDC_PAU_ADMINISTERED_AGENT0xD30faA074D023af8525750561beC2Aa181562866, plus SPARK_BEACON, SPARK_PAU_FACTORY, SPARK_ADMINISTERED_AGENT_FACTORY and SPARK_DEFAULT_PAU_ASSEMBLER, from diamond-pau v1.14.0, pau-administered-agent v1.0.0 and pau-assemblers v1.0.0. None of those repositories is among the thirteen audited components. Balances checked this run on both ALM_PROXY_FREEZABLE and SPUSDC_PAU_ALM_PROXY: zero USDC, USDT, PYUSD, sUSDe, zero Arkis shares and zero Uniswap v4 NFTs. Open work: spark-spells PR 199, "Add E2E tests for segregated PAUs". - Admin and governance:
MCD_PAUSE.delay()returns0x2a300= 172800 seconds = 48 hours, read on Ethereum mainnet this run. History per the 2026-08-05 Sky run: 30h in 2024, 48h May 2025, 24h Oct 2025 to 2026-05-01, 48h since mid-May 2026. StarGuard (github.com/sky-ecosystem/star-guard, README read this run): core spell plots a Star payload, anyone can thenexec()it in a separate transaction; features are codehash validation at execution, reentrancy protection, a configurable maximum delay acting as a deadline, and a post-execution check that the payload left StarGuard authorised on the SubProxy;StarGuard.wardsis expected to contain onlyMCD_PAUSE_PROXY. Motivation stated in the repo is the block-size bottleneck on the core spell cast transaction, not Star autonomy. Addresses from spark-address-registry: ALM Proxy0x1601843c5E9bC251A3272907010AFa41Fa18347E, ALM Controller0x5c46Fc65855c0C7465a1EA85EEA0B24B601502D3(v1.10.0), ALM Rate Limits0x7A5FD5cf045e010e62147F065cEAe59e5344b188, Spark Proxy0x3300f198988e4C9C63F75dF86De36421f06af8c4, ALM Freezer multisig0x90D8c80C028B4C09C0d8dcAab9bbB057F0513431, SparkLend Freezer multisig0x44efFc473e81632B12486866AA1678edbb7BEeC3, Relayer multisig0x8a25A24EDE9482C4Fc0738F99611BE58F1c839AB. Five emergency spells, not two: pause all0x425b0de240b4c2DC45979DB782A355D090Dc4d37, pause DAI0xCacB88e39112B56278db25b423441248cfF94241, freeze all0x9e2890BF7f8D5568Cc9e5092E67Ba00C8dA3E97f, freeze DAI0xa2039bef2c5803d66E4e68F9E23a942E350b938c, remove freezer multisig0xE47AB4919F6F5459Dcbbfbe4264BD4630c0169A9. - Spells in the window (merge dates from the GitHub API this run): 2026-08-13 (PR 182, merged 2026-08-17), 2026-08-27 (PR 183, merged 2026-08-28), 2026-09-10 (PR 185, merged 2026-09-14), and 2026-09-24 (PR 196, opened 2026-09-14) open and unexecuted at the time of writing: refresh. No emergency spell found Aug to Sep 2026.
- The 2026-09-10 spell, source read and execution verified on-chain: authored by Phoenix Labs. Contents: deprecate LBTC as collateral (LTV to 0, liquidation threshold
KEEP_CURRENT); new USDT interest rate model0x4FA65B096681bD6FeecF78e5D83096bf4A5762A0; onboard the Sentora RLUSD Morpho Vaults V2 instance0xFC8C624B6080a0a780583799f2A862DE936F6E22at a 10M deposit max and a 100M/day slope; and zero 35 rate limits, a count confirmed by counting the 35setRateLimitDatacalls in the source, across Morpho v1 DAI and USDS vaults, Aave Core USDe, Ethena, Maple syrupUSDT and syrupUSDC, five Curve pools (PYUSD/USDS, PYUSD/USDC, sUSDS/USDT, USDC/USDT, weETH/WETH-ng), Superstate USTB and USCC, B2C2 OTC, and the Anchorage USAT and USDT legs. The spell's own comment states the Anchorage USDC leg "is actively used and stays untouched". Execution confirmed by readinggetRateLimitDataforLIMIT_USDE_MINT,LIMIT_USDE_BURN,LIMIT_SUSDE_COOLDOWN,LIMIT_SUPERSTATE_SUBSCRIBEand the sUSDe 4626 deposit keykeccak256(abi.encode(LIMIT_4626_DEPOSIT, sUSDe)): all five return maxAmount 0, slope 0, lastAmount 0 and the samelastUpdated1789394459 = 2026-09-14 14:00:59 UTC, which is how the spell is known to have run rather than merely merged. The B2C2 and Anchorage transfer keys were not individually resolved this run, since they depend on registry addresses in a three-argument composite key: refresh. - Ethena, measured: ALM Proxy holds 80.912135195743362751 sUSDe (raw 80912135195743362751) and 0.000074896275897803 USDe (raw 74896275897803), byte-identical to the 2026-08-05 reading.
cooldowns(ALMProxy)on sUSDe returns cooldownEnd 0 and underlyingAmount 0, so nothing is pending unstake, which also matters because the DeFiLlama adapter folds any pending cooldown into the USDe line. With the rate limits at zero, redrawing the line requires a new governance spell rather than relayer action. The historical peak of $953,651,466 combined on 2025-08-02 stands as recorded last month. - Liquidity Layer composition (DeFiLlama, Ethereum chain series, 2026-09-19 20:51 snapshot, total $2,249,323,505): spUSDS $880,307,037, spUSDT $281,021,234, PYUSD $248,273,521, USDT $239,990,073, spDAI $194,254,225, spPYUSD $155,011,401, RLUSD $97,514,196, USDS $67,088,962, Spark Blue Chip USDT Morpho vault $47,243,899, USDC $20,381,409, spUSDC $17,238,958, Spark Blue Chip USDC $997,166, USDG $1,318, sUSDe $101, aEthUSDT $6. Off-Ethereum: Base $268,582,227 (almost all the Morpho sparkUSDC vault at $267,584,392), Arbitrum $9,981,953, Optimism $999,692, Unichain $39,989. Read the per-chain series, not the cross-chain aggregate, or Base's sparkUSDC will appear to be a missing mainnet line.
- Correcting the sp-token identity (this month's main correction): the adapter's spUSDS
0xC02aB1A5eaA8d1B114EF786D9bde108cD4364359, spUSDT0xe7dF13b8e3d6740fe17CBE928C7334243d86c92f, spDAI0x4DEDf26112B3Ec8eC46e7E31EA5e123490B05B8B, spPYUSD0x779224df1c756b4EDD899854F32a53E8c2B2ce5dand spUSDC0x377C3bd93f2a2984E1E7bE6A5C22c525eD4A4815returnname()values "Spark USDS", "Spark USDT", "Spark DAI", "Spark PYUSD" and "Spark USDC". These are SparkLend deposit receipts. The Spark Savings V2 vaults share the tickers but are different contracts: spUSDC0x28B3a8fb53B741A8Fd78c0fb9A6B2393d896a43d, spUSDT0xe2e7a17dFf93280dec073C995595155283e3C372, spPYUSD0x80128DbB9f07b93DDE62A6daeadb69ED14a7D354, spETH0xfE6eb3b609a7C8352A241f7F3A21CEA4e9209B8f.balanceOf(ALM Proxy)on all four V2 vaults returns exactly zero, so the Liquidity Layer holds none of Spark's savings vault shares. - Spark Savings V2 vaults, measured on-chain:
totalAssets()returns spUSDC 309,219,884.381320 USDC, spUSDT 397,456,903.579205 USDT, spETH 22,984.411110874567 WETH (about $60.3M at the oracle's WETH price), spPYUSD 31,003.817382 PYUSD.vsr()returns per-second ray rates annualising to exactly 3.6000 percent (spUSDC, spPYUSD), 3.5000 percent (spUSDT) and 1.3500 percent (spETH), matching the advertised APYs to four decimal places and confirming an administered rate rather than a measured pass-through. Docs state a liquidity buffer of up to $10 million per V2 vault for atomic redemption, with larger mainnet USDC and USDT withdrawals routed through Savings Liquidity Intents, "typically fulfilled within a few minutes", fulfilled by the Spark ALM Planner. Intents contract0x592B7DB9906E6f8924C4D74c2A0aB86CE44fDDDf. Fulfilment time under stress and per-vault live buffer balances not measured: refresh. - The USDT line, attribution now weaker than last month: ALM Proxy USDT
balanceOfis exactly 0, so the $239,990,073 is not held USDT. The adapter (DefiLlama-Adapters projects/spark-liquidity-layer/index.js, read in full this run) adds, beyond direct balances on mainnet:getExports('spark-anchorage', ['ethereum']).ethereum.tvl, whose source is an off-repo heroku-api export and remains unreadable;addUniswapV4BalancesviasumTokens2({ owner: almProxy.ethereum, resolveUniV4: true });addVaultBalancesviaerc4626Sum2over the Arkis vault; plus utilization-discounted Aave and Morpho positions, two Curve pools and the sUSDe cooldown leg. The ALM Proxy holds 17 Uniswap v4 position NFTs (ERC-721 balanceOf on PositionManager0xbD216513d74C8cf14cf4747E6AaA6420FF64ee9e). Split between Anchorage credit and v4 LP: refresh. Corroborating evidence that an Anchorage relationship exists is now first-party rather than inferred, since the spell names Anchorage transfer legs directly. - PYUSD, correcting last month: aggregator reports $248,273,521 while a direct
balanceOfreturns $185,284,142. In August these matched to the dollar. The $63.0M gap is attributed to Uniswap v4 LP by inference, not measurement: refresh. Supporting the inference: the USDC line is fully explained by Arkis, so the v4 positions hold no USDC, consistent with reporting that Spark migrated liquidity into v4 USDS pools paired against USDT and PYUSD. The August statement that the PYUSD line is "genuinely idle" no longer holds in full. - Spark Prime: ALM Proxy holds 19,647,500.616754 shares of the Arkis sparkPrimeUSDC1 ERC-4626 vault
0x38464507E02c983F20428a6E8566693fE9e422a9(name "Spark Prime USDC 1"), unchanged from August.convertToAssetson that share balance returns 20,387,449.073251 USDC against the adapter's reported $20,381,409 USDC line, so the line is this position almost exactly. Direct USDC balance is 0. Still credit. - Oracle, resolved this run: SparkLend PoolAddressesProvider
0x02C3eA4e34C0cBd694D2adFa2c690EECbC1793eE,getMarketId()returns "Spark Protocol",getPriceOracle()returns0x8105f69d9c41644c6a0803fda7d03aa70996cfd9.getSourceOfAsset(WETH)returns0x2750e4cb635af1fccfb10c0ea54b5b5bfc2759b6,description()= "Aggregated price feed ETH/USD from Chronicle, Chainlink, and RedStone oracles".getSourceOfAsset(cbBTC)returns0x4219aa1a99f3fe90c2acb97fcbc1204f6485b537with the BTC/USD equivalent. Live prices from the oracle: WETH $2,624.61238, cbBTC $80,958.512, wstETH $3,266.08456874, USDC exactly $1.00000000. The ETH feed'slatestRoundDataanswer matches the oracle exactly at 2624.61238. Freshness caveat, measured: that feed returnsroundId1 andupdatedAtequal to the current block timestamp on every call, verified across three consecutive reads each equal to the latest block to the second, while the answer stayed unchanged for about seventeen minutes, so its timestamp cannot be used to detect staleness. wstETH and USDC sources revert ondescription(), consistent with custom Spark oracles. DeFiLlama carries no oracle field on any of the three Spark records. - Yields (DeFiLlama, this run): Spark Savings USDT 3.5 percent ($397,286,000), USDS 3.6 percent Arbitrum ($362,886,265) and 3.6 percent Base ($12,017,728), USDC 3.6 percent Ethereum ($309,119,951) and 3.6 percent Avalanche ($9,369,484), ETH 1.35 percent ($60,390,860), USDG 3.5 percent Robinhood Chain ($14,524,348), PYUSD 3.6 percent Ethereum ($30,997, new). SparkLend USDS: $563,707,298 at 4.23722 percent with apyBase null and apyReward 4.23722, plus $478,579,717 at 2.31843 percent base. SparkLend other markets: USDT 3.395 percent ($15.4M), USDC 2.997 percent ($5.2M), DAI 2.459 percent ($100.1M), PYUSD 0.860 percent ($118.3M).
- SparkLend collateral (DeFiLlama pools, this run): wstETH $3,498,303,321, cbBTC $465,437,730, WETH $373,882,144, LBTC $222,486,347 (LTV now 0), WBTC $172,148,475, weETH $111,214,602, DAI $100,079,042, sUSDS $3,305,918, sDAI $43,488, against $2,693,626,757 borrowed.
- Holder concentration: SPK
0xc20059e0317DE91738d13af027DfC4a50781b066. 3,327,001,120 circulating of 10,000,000,000 (33.3 percent), $0.02111621 on CoinGecko for a $70,256,571 market cap and $211,170,866 FDV, cross-checked at $0.021027 on DeFiLlama coins; the price moved during this run, so treat the last two decimals as a point-in-time read. August comparison: 3,038,479,522 (30.4 percent) at $0.0153. Schedule unchanged: 65 percent ten-year farming, 23 percent ecosystem, 12 percent team. stSPK staking contract0xc6132FAF04627c8d05d6E759FAbB331Ef2D8F8fDpresent in the address registry. On-chain top holders: refresh, Etherscan Pro-gated for a third month. - Incident scan: no Spark record in DeFiLlama's hacks database, now 1,273 entries (612 at the August run), confirmed by searching the full record set rather than the protocol page alone, and empty hacks fields on all three protocol records. Grok X sweep 2026-08-01 to 2026-09-20: no exploits, bad debt, liquidation failures, oracle problems, depegs, governance controversy or emergency spells, and no credible criticism of the OTC book, Spark Prime or the Ethena exposure; the only Spark posts in the window were the official Gnosis deprecation notice and neutral growth commentary. No positive solvency measurement was taken, so "no bad debt" means no report of it, not an audited zero.
- Recent news: SparkLend on Gnosis deprecated 2026-09-14, outstanding loans eligible for liquidation once the spell executed, affecting WXDAI, sDAI, WETH, wstETH, EURe, USDT, USDC.e, GNO and USDC; launched on Gnosis September 2023; wind-down begun early 2026 with deposits frozen and a 50 percent reserve factor, reason given as insufficient lending volume and a consolidation onto Ethereum (CryptoBriefing and CoinDesk, September 2026; the governance change is Sky next-gen-atlas PR 320). CryptoBriefing separately reports SparkLend total market size up 55 percent year to date to about $7.4B, and USDS borrowing above $800M at an all-time high; note that "market size" is a different measure from the $7.109B DeFiLlama parent TVL used above and the two should not be treated as the same number. The 2026-08-02 CoinDesk reporting on the $260M OTC Bitcoin loan book, its $1B year-end target and roughly $20M of Spark Prime loans was not re-reported this run: current figures refresh.
- Credora: the report at reports.credora.io/spark/latest.pdf resolves (HTTP 200, 2.74 MB application/pdf) but is image-only and its rating remains unread: refresh.
Maintained monthly. Methodology: DeFi Research Instruction v2.