How Sky Distributes the Sky Savings Rate to USDS Holders Without Overpaying, with Merkl
Challenge
Sky Protocol operates USDS and sUSDS, with a growing family of USDS-denominated vaults running on Morpho. Depositors supply liquidity to the vaults, which route that capital into Morpho markets where USDS can be borrowed.
Sky wanted to distribute the Sky Savings Rate (SSR) to USDS vault depositors. The challenge was doing it without overpaying, which meant understanding exactly which portion of deposits Sky's reserves earn yield on in the first place.
USDS deposited into a vault can end up in one of two states: borrowed out to Morpho markets, or sitting idle in the vault contract. When USDS is borrowed, Sky's reserves don't generate yield on that lent-out amount. Crucially, only the idle, unborrowed portion generates yield for Sky's reserves. Paying SSR on borrowed USDS would mean spending reserve income that isn't being earned.
That means the infrastructure has to do three things precisely at the same time:
-
track the idle USDS balance held in each whitelisted vault contract block by block
-
route the yield down through nested ERC4626 structures to the actual end depositor
-
bound spend to the SSR applied on that idle portion, not on the total deposits
Building this in-house, vault by vault, would mean months of custom engineering per venue and constant operational overhead to keep payouts aligned with what reserves are actually earning.
Solution
Sky turned to Merkl to power its SSR distribution on idle USDS in Morpho vaults.
The program is built around Merkl's idle liquidity-based rewards mechanism. Sky whitelists the ERC4626 vault contract holding USDS, and Merkl tracks the time-weighted USDS balance sitting idle on that contract: the portion that hasn't yet been borrowed out to Morpho markets.
The economic logic is precise. On Morpho, Sky's reserves only generate yield on the idle, unborrowed USDS sitting in the vault. On the borrowed portion, reserves earn nothing. Distributing SSR on borrowed USDS would mean paying out income that was never earned. So Sky distributes SSR on the idle balance only, keeping spend strictly bound by what reserves actually generate.
As a concrete example, with around $38M in total deposits and roughly $30M sitting idle, applying the SSR at ~3.6% on the idle balance translates into an effective ~2.9% APR for depositors on their full position.
Merkl's reward forwarders handle the last-mile problem: they route the incentives through every layer of the vault structure down to the depositor backing the position, regardless of how that user accessed the vault: directly on Morpho, through a third-party aggregator, or through any vault that deposits into the underlying market. The depositor sees a single reward stream; under the hood, Merkl routes across nested contracts.
Sky only earns yield on the idle portion of our reserves on Morpho, so that's the only balance we should be paying SSR on. Merkl made that precision possible at scale, in a record time.
Results
At the time of writing, since March 2026, SkyMoney's USDS incentive program on Merkl has reached:
-
~$30M+ in live USDS TVL incentivized on the idle balance
-
~$440K+ in USDS distributed to vault depositors, settled weekly
-
SSR applied on idle balance only, keeping spend bounded by what reserves earn on the unutilized portion of the vault
-
Reward forwarders routing incentives through every layer of the vault structure down to the end depositor
Because the mechanism is venue-agnostic and reward-forwarder-native, the same idle liquidity-based setup can be extended to any new vault, market, or chain where USDS is held.
A natural next step would be to apply the same setup to the Morpho singleton contract directly: distributing SSR to USDS holders across all Morpho markets at once, with reward forwarders routing down to the underlying depositors regardless of how they accessed the position.
For any stablecoin issuer running a USDS-style incentive program funded by reserve earnings, SkyMoney's setup with Merkl is the working template.
