Earn yield on balances

Let your users' balances earn while they sit, and stay private while they do.

Money in a Senddy pool can earn. Each asset has a strategy that puts idle funds to work, and the earnings flow back to every holder of that asset automatically. Your users don't opt in, stake or claim anything. Their balance simply grows, and it stays private.

How it works#

A private balance is held as shares of an asset in the pool. Each asset has an index: the value of one share. The strategy's earnings raise the index, so every share is worth a little more over time.

You don't need to track any of this. getBalance() returns the current value:

TypeScript
const { shares, estimatedUSDC } = await senddy.getBalance();
// estimatedUSDC = shares × current index, in the asset's smallest unit

Because earnings raise the index rather than paying out to individual users, nothing about a user's balance appears onchain when they earn.

Show what users are earning#

Read the index to show a rate:

TypeScript
const before = await senddy.getAssetIndex(USDC);
// …later
const after = await senddy.getAssetIndex(USDC);

The change in the index over a period is the rate for that period. Rates are variable, so label them "current" and never promise a fixed return. For assets with a small or new pool, wait until there's enough history before showing a rate.

Strategies#

Each asset in a pool has one strategy, chosen when the asset is listed.

AssetStrategy
USDC on BaseLending, through Aave v3
USDG, HOODS on Robinhood ChainSet per asset

A strategy can be lending, a protocol's own rewards, or something custom to your asset. HOODS, for example, drips its rewards to holders on a schedule.

Choose a strategy for your asset#

If you're listing your own asset, you choose how it earns. Tell us what you have in mind and we'll set it on the pool. You can combine it with your own fee, described in Set your fee.

Withdrawing#

Users can withdraw at any time. There's no lock-up, and earnings up to that moment are included.