> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ix.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Revenue & distributions

> How compute revenue is generated, split between investors and the protocol, and accrued into IX-CORE's NAV on-chain.

IX RWA assets earn by renting out compute. That revenue, net of costs, is split between investors and the protocol — and the investor share **accrues into IX-CORE's net asset value (NAV)** rather than being paid out as a separate claim. Your yield shows up as a rising NAV-per-share, realized when you redeem.

## From gross rental to investor yield

```mermaid theme={null}
flowchart TD
    G[Gross rental revenue] -->|minus operator fee| N1[After operator fee]
    N1 -->|minus IX management/performance fee| N[Net revenue]
    N -->|investor share · notifyRevenue| A[Cash term of NAV rises → NAV/share up]
    N -->|protocol share| X[IX treasury]
```

<Steps>
  <Step title="Gross revenue">
    The asset's compute is rented at market rates over a period.
  </Step>

  <Step title="Net revenue">
    Operator and protocol fees (management / performance / creation-redemption) are deducted.
  </Step>

  <Step title="Accrual, not payout">
    The investor share is deposited into the vault via `notifyRevenue(cohortId, amount)`, raising the cash term of `totalAssets` — so IX-CORE's NAV-per-share rises for every holder at once, no claim transaction required.
  </Step>

  <Step title="Realize on redeem">
    You realize accrued yield by redeeming shares at the higher NAV.
  </Step>
</Steps>

## How accrual moves the price

NAV has two terms — cash and hardware value — and revenue moves the **cash** term:

```text theme={null}
totalAssets = USDC.balanceOf(vault)   ← notifyRevenue adds here (yield ↑)
            + hardwareValueUSD()       ← depreciation lowers here (NAV ↓)
```

Because `notifyRevenue` simply transfers USDC into the vault (tagged with a cohort id for the indexer), the price change is trustless: anyone can watch the balance rise on-chain. The `REVENUE_DEPOSITOR_ROLE` (the off-chain EconomicsFeeder) is the only caller.

## Fee model

Investor-facing vault fees follow OpenZeppelin's ERC-4626 fees pattern, so previews equal actuals:

| Fee        | Testnet default   | Notes                                               |
| ---------- | ----------------- | --------------------------------------------------- |
| Entry      | `0%`              | Charged on deposit                                  |
| Exit       | `0.10%`           | Charged on redeem; kept in-vault on the queued path |
| Management | `1%/yr`, streamed | Dust shares minted pro-rata to elapsed time         |

These sit on top of the operator and protocol economics that determine net revenue before it ever reaches the vault. See [Fees & terms](/protocol/fees-and-terms) for the full schedule.

## Yield

Yield is **dynamic** — `total revenue ÷ total NAV`, shown as a trailing-window realized figure, with NAV-per-share displayed alongside so depreciation stays visible. A **smoothing reserve** buffers period-to-period swings and also serves as the redemption buffer. If an asset's feed goes stale or diverges, it is **auto-quarantined** in the asset registry — dropped from NAV and yield until healthy (the oracle sums only cohorts with ≥1 Active asset).

<Note>
  Yield and NAV shown in the app are **simulated in settlement but driven by live market data** on testnet: a `LiveDataNAVOracle` behind a swappable `INAVOracle` seam is fed from live Vast.ai rates and real hardware cost/depreciation, settled in test tokens. They are not a promise of realized return; the mainnet oracle is the same code with an operator-attested feed. See the [roadmap](/why-ix-rwa#roadmap).
</Note>

## The smoothing reserve

A dedicated `SmoothingReserve` contract holds USDC that:

* **Smooths distributions** — topped up from a skim of revenue so good periods cushion weaker ones.
* **Funds redemptions** — the vault pulls from it (`coverShortfall`, `SPENDER_ROLE`) when a queued exit exceeds the vault's own balance.

Its balance is public on-chain, so reserve coverage is verifiable rather than asserted.

## Why accrual instead of Merkle claims

The BNB-era design paid distributions via Merkle claims. IX-CORE **retires that for ongoing payouts**: revenue compounds into NAV automatically, which is gas-free for holders, keeps every share equal, and removes the per-distribution claim step. The Merkle mechanism now exists **only** for the one-time [migration airdrop](/protocol/ownership-and-ixd#migrating-from-the-old-bnb-token).

## Auto-compounding by design

Because IX-CORE is an **accumulating** vault, distributions are effectively auto-reinvested — you don't opt in. Your position grows as NAV-per-share rises; withdrawing means redeeming at the higher NAV.

<Warning>
  **Status:** the vault, accrual, and redemption paths are live on testnet with simulated settlement. The first **real** revenue accrual runs as part of the verified money-path milestone on the [roadmap](/why-ix-rwa#roadmap). Until then, figures illustrate the model, not realized payouts.
</Warning>
