Spark Liquidity Layer
The Spark Liquidity Layer (SLL) operates as a non-custodial capital allocator for Spark across DeFi/CeFi and TradFi opportunities. It has been operating without fault since November 2024. At its core, the SLL is designed to ensure that capital movement is constrained, predictable, and bounded under all conditions, including periods of market stress.
The key security feature of the SLL is that Spark governance must set approved venues in advance, subject to strict rate limits. The automation wallets can only move funds between these pre-approved venues at the defined rate limits.
These constraints ensure that capital cannot be rapidly drained from any single venue, and that allocation changes occur gradually rather than reflexively under stress conditions. This directly addresses a core failure mode observed in recent market events: unconstrained capital movement leading to rapid liquidity depletion and cascading stress across markets.
The threat model assumes a RELAYER can be fully compromised. Smart-contract constraints are designed to prevent value from moving outside the ALM system, while rate limits, slippage constraints, and emergency freezing bound the damage such a relayer can cause.
Even under this assumption, capital remains restricted to predefined venues and rate limits, ensuring no single component can introduce unbounded risk to the system.
Roles
The SLL uses a small set of governance-controlled operational roles:
RELAYER— can call controller functions to move capital between approved venues. These calls remain constrained by approved integrations, balances, slippage checks where applicable, and rate limits.FREEZER— can freeze controller actions in an emergency to stop a compromisedRELAYER; governance can then reassign or revoke the relayer.
Monitoring
The SLL is actively monitored across several independent layers:
- Price movements and collateral valuations across all venues where SLL capital is deployed.
- Oracle deviation and liveness tracking, including heartbeat checks and price-deviation thresholds, to detect stale or manipulated feeds.
- Utilization rate alerts on sudden spikes that may signal abnormal borrowing activity or liquidity stress at integrated venues.
- LTV distribution tracking across active borrower positions in markets where the SLL is allocated, to identify concentration near liquidation thresholds.
- Real-time threat detection through third-party security monitoring, with automated alerts routed to on-call team members for immediate response.
- Sky ecosystem-level oversight on top of Spark-internal monitoring.
Public dashboards: data.spark.fi, info.skyeco.com.
Liquidity Backstop
The SLL can inject capital into a SparkLend reserve, a Morpho vault curated by Spark, or a Spark Savings vault to support depositor withdrawals while liquidations or redemptions settle through normal channels. This backstop is bounded by approved venues, rate limits, and risk parameters set by governance.
Where to Verify
Allocator Contracts (global)
| Contract | Address |
|---|---|
| Allocator Buffer | 0xc395D150e71378B47A1b8E9de0c1a83b75a08324 |
| Allocator Oracle | 0xc7B91C401C02B73CBdF424dFaaa60950d5040dB7 |
| Allocator Registry | 0xCdCFA95343DA7821fdD01dc4d0AeDA958051bB3B |
| Allocator Roles | 0x9A865A710399cea85dbD9144b7a09C889e94E803 |
| Allocator Vault (Spark-A) | 0x691a6c29e9e96dd897718305427Ad5D534db16BA |
ALM Contracts (per chain)
| Chain | ALM Controller | ALM Proxy | ALM Rate Limits |
|---|---|---|---|
| Ethereum Mainnet | 0x5c46Fc65855c0C7465a1EA85EEA0B24B601502D3 | 0x1601843c5E9bC251A3272907010AFa41Fa18347E | 0x7A5FD5cf045e010e62147F065cEAe59e5344b188 |
| Base | 0x86036CE5d2f792367C0AA43164e688d13c5A60A8 | 0x2917956eFF0B5eaF030abDB4EF4296DF775009cA | 0x983eC82E45C61a42FDDA7B3c43B8C767004c8A74 |
| Arbitrum | 0xC40611AC4Fff8572Dc5F02A238176edCF15Ea7ba | 0x92afd6F2385a90e44da3a8B60fe36f6cBe1D8709 | 0x19D08879851FB54C2dCc4bb32b5a1EA5E9Ad6838 |
| Unichain | 0xF16DE710899C7bdd6D46873265392CCA68e5D5bA | 0x345E368fcCd62266B3f5F37C9a131FD1c39f5869 | 0x5A1a44D2192Dd1e21efB9caA50E32D0716b35535 |
| Optimism | 0x689502bc817E6374286af8f171Ed4715721406f7 | 0x876664f0c9Ff24D1aa355Ce9f1680AE1A5bf36fB | 0x6B34A6B84444dC3Fc692821D5d077a1e4927342d |
| Avalanche | 0x4eE67c8Db1BAa6ddE99d936C7D313B5d31e8fa38 | 0xecE6B0E8a54c2f44e066fBb9234e7157B15b7FeC | 0xb79972e8B21f0dE911E65AC342ac85ad38C9A77a |
Source: Spark Address Registry. See also Sky Atlas — Spark Liquidity Layer Addresses (A.6.1.1.1.2.6.1.2.1.1.1).
References
| Item | Source |
|---|---|
| Developer reference | Spark ALM Controller |
| Audit reports | Spark Liquidity Layer Audits |
| All deployments (canonical) | Spark Address Registry |
| Current configuration | Sky Forum — Spark Prime |
Atlas Sources
The following Sky Atlas sections govern the controls described above:
- A.6.1.1.1.2.6.1 — Allocation System Primitive
- A.6.1.1.1.2.6.1.2.1.1 — Spark Liquidity Layer Architecture
- A.6.1.1.1.2.6.1.2.1.1.1 — Spark Liquidity Layer Addresses
- A.6.1.1.1.2.2.2 — Spark Root Edit Primitive
FAQ
What integrations are supported by SLL?
The ALM Controller currently supports the following integration types:
- Aave-compatible lending markets, including SparkLend and Aave
- ERC4626 vaults, including Spark-curated Morpho vaults
- PSM3 contracts on supported L2s
- Mainnet PSM swaps between USDS and USDC
- USDS minting and burning
- USDC transfers through CCTP
- Ethena USDe minting and burning
- Ethena sUSDe cooldown and unstaking
Additional integrations can be onboarded over time through governance-controlled configuration and controller upgrades.
What networks are supported by SLL?
The following networks are currently supported by the SLL:
- Ethereum
- Base
- Arbitrum
- Optimism
- Unichain
- Avalanche
Additional networks will be integrated on a continuous basis.
What are the liquidity constraints for cross-chain liquidity?
The SLL ensures there is always ample liquidity for users to enter or exit Spark Savings vaults on supported networks. Sky aims to keep a substantial portion of USDS collateral backing in cash reserves, providing a healthy buffer for redemptions even at large volumes.
Why is there a 1-of-2 SAFE authorized on the ALM Controller contract?
This SAFE is used as a smart wallet for the SLL automation to enable batching of transactions and rotating of hot wallet keys (the second signer). Funds are not custodied by this wallet, and it is only capable of allocating to governance-approved venues. This is similar to the ALLOCATOR role in the Morpho curation model.
Where are whitelists enforced in the ALM Controller contract?
Every allocation function in ALM Controller has an associated call to the RateLimits contract. This request for a rate limit is keyed on the asset argument which provides a whitelist on that parameter. If the asset is not whitelisted then the rate limit will return 0 (not set) and the call will revert.
Has the Spark Liquidity Layer been audited?
Yes, you can find the audit reports here: Spark Liquidity Layer Audit Reports
Who controls the Spark Liquidity Layer?
Sky Governance determines the use cases supported by the SLL, such as networks and protocols, as well as the accepted risk parameters for each use case, including rate limits, maximum fund amounts or maximum volumes.