Holder rewards
Every 30 minutes the protocol buys tokenized stocks with its share of trading fees and pays them to the wallets that hold $OMNIA, weighted by how long they held.
What you receive
You receive Robinhood Stock Tokens: plain ERC-20 tokens on Robinhood Chain that track a listed stock or fund. They sit in your wallet like any other token. They are not points, not an IOU and not a claim on a share held somewhere else.
How a round works
The keeper runs one cycle every 1800 seconds, about 48 times a day. A cycle that finds nothing to distribute publishes nothing; there are no empty epochs.
- 1SnapshotThe keeper records every $OMNIA balance at a block. The block number is published with the epoch.
- 2BuyThe holder-payout leg of collected fees buys the stocks holders asked for, through Uniswap v4 and USDG, at Chainlink-checked prices.
- 3PublishA Merkle root goes on chain, funded with the stock tokens it allocates, and the full proof file is published.
- 4PayThe largest allocations are pushed to wallets. Everyone else claims with one click, any time within seven days.
One stock per round
Each round pays you in one of your basket stocks, not a sliver of all four. The stock is chosen by a fixed rotation: every round, each stock earns credit equal to its weight, and the stock with the most credit is paid and has 100 subtracted. Nothing is random. Over any stretch of rounds, what you receive matches your weights.
Holding weight
Your share of a round is not your balance at one instant. It is your average balance across the last 48 snapshots, which is the trailing 24 hours.
A wallet that buys just before a snapshot has one snapshot out of 48 counted, so 1/48 of the weight of the same balance held all day. Selling lowers your weight one snapshot at a time. There is no cliff and nothing resets.
Holding weight in detail
Your share of a payout is not your balance at the snapshot. It is your average eligible balance over the last 48 snapshots, one per published epoch, which at the 30-minute cadence is 24 hours. The keeper folds the balance table of each of the last 47 epoch files together with the snapshot it has just taken, sums your balance across those samples, and divides by the number of samples. That figure is your weight; the epoch's total_shares is the sum of every weight; your share is your weight over that total. A payout is then that share of whatever the fee actually bought.
Read it as balance times time. A wallet that bought just before the snapshot is in one sample of 48 and weighs 1/48 of an equal wallet that held all day. Nothing resets and there is no cliff to time: the weight grows by one sample's worth every epoch you stay, and after you sell it decays by one sample's worth every epoch, so a wallet that has sold is still paid, at a falling weight, until it is out of the window. The rule is symmetric on purpose: it defeats buying for a payout and selling straight after, and it does not punish a wallet that genuinely held and then left.
The window length is the protocol's configuration value payout_weighting.holding_window_epochs (48); the keeper reads it, and every figure on this page is derived from it.
| Wallet, equal balance throughout | Samples present | Weight, relative to a full 24 hours |
|---|---|---|
| Held for the whole window | 48 of 48 | Full |
| Bought 12 hours ago | 24 of 48 | Half |
| Held all day, sold half its position 12 hours ago | 48 of 48, half of them at half the balance | 3/4 |
| Bought just before this snapshot | 1 of 48 | 1/48 |
| Sold everything 12 hours ago | 24 of 48, and falling by one every epoch | Half, and falling |
From shares to stock
The pot is every stock the payout leg bought this cycle plus stock harvested in kind from the protocol pools. It is valued at one Chainlink reading for every feed at once, then allocated so that each holder receives their holding-time weighted share of the VALUE, converted into the stock the rotation names for them. Rounding to whole base units is repaired one unit at a time toward the holders who lost the most to flooring, never above their entitlement. Whatever remains is dust and stays in the treasury.
Publish, fund, activate
- The keeper writes the epoch file (root, entries, every leaf and its proof, and every wallet’s balance sample and weight) to disk BEFORE publishing. A root whose leaves were never written down cannot be claimed against.
- publish stores the root, the per-stock allocation, the snapshot block and the publish time on chain. Ids are strictly sequential; the contract refuses a gap.
- The treasury funds each stock entry by transfer, and the contract measures what arrived rather than trusting the amount. activate refuses unless every entry is funded up to its allocation.
- Only an active epoch pays. The chain enforces that no epoch pays more than it was funded, that no leaf is claimed twice, and that a claim below the per-stock floor is refused.
Claiming, pushing and expiry
The largest allocations in each epoch are pushed to wallets automatically. Everything else is claimable with one click on the Portfolio page, or through the contract directly using the public proof. Unclaimed allocations return to the treasury seven days after the epoch publishes.
What can stop a payout
- No volume. The trading fee is the only revenue. A round with no fees has nothing to buy.
- A paused stock. If the issuer pauses a stock in your basket, rounds that would pay it pay the next stock in your basket until it resumes.
- Missing a snapshot. A wallet with zero balance across all 48 snapshots has no weight.
What is trusted, what is enforced
The keeper is trusted to compute honest allocations; that the leaves sum to the allocation, and that every weight is the average the published samples give, are keeper invariants the chain cannot check but anyone with the files can. Everything after publication is enforced: the root is immutable, a claim is bound to its epoch, stock and claimant, an epoch cannot pay more than its funded budget, and a stolen keeper key can move money only into protocol contracts.
Questions
No. You receive stock tokens bought with trading fees. Holding $OMNIA is not share ownership, and payouts depend entirely on trading volume.
Not yet. Baskets are limited to SPY, NVDA, TSLA and GOOGL, the four stocks the protocol has verified liquidity for.
The rotation pays each stock in turn according to its accumulated credit. Over many rounds your payouts match your weights; any single round is one stock.
No. Claims accumulate for seven days per epoch, and Claim everything on the Portfolio page collects them in one transaction.