Harvesting

What happens each epoch, who triggers it, and why a harvest vests instead of landing at once.

The epoch

One epoch is 24 hours. The keeper collects every eligible stream on its own chain, swaps to ETH and bridges it to Robinhood Chain. Once the epoch elapses, anyone may call harvest(streams) on the vault; the first caller in the epoch earns a fixed 0.002 ETH tip, paid from the vault's idle WETH. There is no allowlist and no registration; the countdown and the leaderboard are on the keeper board.

T+0h

Epoch opens

NAV marked, deposits and redemptions queue, last harvest keeps vesting

T+24h

Collect

every eligible stream collected on its own chain: Solana, NEAR, Base, BNB Chain

then

Swap + bridge

fees swapped to ETH and bridged to Robinhood Chain; harvest() callable, first caller earns the tip

after

Vest + reinvest

10% fee to treasury, the rest vests linearly into NAV; keeper posts fresh λ₁ weights

Linear vesting

A harvest does not land in NAV all at once. It enters totalAssets linearly over the following epoch, Yearn-style locked profit. Without this, anyone watching the mempool could deposit one block before a harvest, capture a full day of fees earned by other people's capital, and redeem one block after.

The practical consequence for depositors: your first day earns roughly a day of fees, not the previous day's.

Fees

  • Performance fee 10% of each harvest, to the treasury.
  • Management fee: none.
  • Deposit and withdrawal fee: none.
  • Keeper tip 0.002 ETH per harvest, to whoever calls it. Bridging is paid from the harvest it moves and reported per epoch in the ledger.

The seller of a stream may keep a residual share, set at registration. The registry splits every claim between the vault and the seller in the same transaction, so nobody has to trust anybody to forward anything.

Reinvest

Harvested ETH either pays zYLD holders through NAV or buys more streams, weighted by the current λ₁ loadings. Buying a stream shows up as an immediate NAV dip, because a purchased right sits off balance sheet while the ETH that bought it has left. That is honest accounting and it is asserted in the tests rather than smoothed over, which is also why reinvest is owner-gated while the keeper role can only post weights.