Yield Distribution Mechanism
One of StableUnit’s most innovative aspects is how it distributes yield to USD Pro holders without using the conventional rebasing method. The approach can be thought of as streaming interest directly into balances.
The “Barrel and Faucet” Analogy: Imagine a beer barrel and a faucet. The barrel represents the pool of accrued yield (revenue from fees, yields, etc.). The faucet represents the rate at which yield is paid out to token holders. The bartender (smart contract) adjusts the faucet based on how full the barrel is:
When the barrel is full (lots of accumulated yield ready to distribute), the faucet opens wider – yield flows out faster to holders.
When the barrel is running low, the faucet narrows – slowing the distribution so that it never runs completely dry.
This way, USD Pro holders always see some yield coming in, but the system won’t overpay and exhaust its reserve. It doesn’t need to predict future income perfectly; it only reacts to the current level of the yield reserve.
Implementation: While the exact implementation details are pending audit (and will be documented in full later), we can outline a likely mechanism:
The USD Pro token contract or an associated distribution contract maintains an internal variable, say YieldIndex or similar, which represents the cumulative yield per token.
Initially, this index is zero. When yield is to be distributed, the contract mints a small amount of USD Pro or uses some accounting trick to effectively credit holders proportionally.
For example, suppose in one block the system decides to distribute 0.001% of the yield reserve to holders. If the reserve has 1000 USD, that’s 0.01 USD total distributed. If there are 10,000 USD Pro in circulation, that’s an addition of 0.000001 USD Pro per each USD Pro held (i.e., each token gets 0.00001% increase).
This is done by increasing the balance of each holder algorithmically – typically, not by iterating through all holders (which is impossible on-chain at scale) but by adjusting a global index and then calculating each holder’s balance as principal * (1 + index) behind the scenes.
The faucet control means the interest rate is not fixed but based on reserve levels. There might be a target such as “keep X days worth of yield in reserve.” If reserve is above target, distribute faster; if below, distribute slower.
For example, if the reserve to market cap ratio is high, the contract might target a high APY for USD Pro (thus paying out more per block). If the reserve is low relative to USD Pro in circulation, it lowers the APY until more revenue comes in. This creates a self-correcting system where yield paid never overshoots what’s sustainable long-term.
No Rebase, No New Tokens Needed: Importantly, USD Pro’s total supply does increase as yield is distributed and borrows. However, it’s not a rebase in the sense of changing the unit price – USD Pro remains $1 in value. And because this minting is backed by actual revenue (collateral yields, fees), it’s not dilutive in a harmful way; it’s like paying interest from earnings. It also means the supply of USD Pro can exceed the collateral on occasion by the amount of undistributed yield, but that portion is fully covered by the reserve the protocol holds (so it’s always backed).
Stream Diagram: One can imagine a diagram with a tank (Yield Reserve) feeding a pipe that splits out to many smaller pipes (to each USD Pro holder) – the flow in each small pipe is proportional to how much that holder has (bigger holders get a larger share of the flow). The main valve controlling the outflow from the tank is adjusted based on the tank’s fill level.
Edge Cases: If the system goes through a period of low activity (few fees) and thus low yield, USD Pro holders might see only a trickle of new tokens, but that’s fine – the key is they always see something (even if small), reinforcing the idea of continuous growth. If, conversely, there’s a sudden large revenue (say a huge liquidation gain or a period of very high borrowing interest), the reserve might fill up; the mechanism might then temporarily pay a higher yield until it normalizes. The DAO could set max caps to prevent absurdly high payout spikes (for instance, don’t suddenly pay 50% APY for a day just because of one big liquidation – smooth it out).
It’s worth noting that because USD Pro supply can grow from yield, if there were no new collateral coming in, over a very long time the system would need to have had enough revenue to justify that growth. This is monitored via the backing calculation. StableUnit’s design ensures that any USD Pro minted via yield corresponds to value that came into the system (from fees or collateral earnings). If at any point there was a structural imbalance, the DAO could intervene (for example, by adjusting rates or even using the treasury to burn excess if needed). But ideally, the algorithm handles it automatically.
In summary, StableUnit’s yield mechanism gives the best of both worlds: the usability of a stable balance (no rebase headaches) and the benefit of auto-compounding interest. It aligns incentives too – holders are happy to hold, which supports the peg and stability, and borrowers indirectly fund those holders but also enjoy other benefits (like yield on collateral, etc.).