Not a lending market.
Nothing is lent out and nothing is borrowed against. Your coin leaves the vault in one place only: when a share is redeemed.
the coin's only exit: redeem() · src/StashVault.sol:428 · rescue() refuses the coin · :626–641
About STASH
You put in the coin. Each payout the vault receives, minus one fee, is sold for more of that same coin and released into your share over six hours by default. When you leave, you take the same coin back, at the current rate.
It is a savings vault, full stop.
How a harvest works, step by step
Built for Robinhood Chain. STASH is a working name; the final name is not decided.
A payout arrives in another token and is swapped. By default 10% goes to the treasury; the rest buys more of the same coin, which is released into your share in a straight line over six hours. The share rate is flat at the moment of the harvest, then rises in a straight line, and never falls.
What it is not
STASH does one job: it turns what your coin pays into more of your coin. It lends nothing, launches nothing and sells nothing of its own.
Nothing is lent out and nothing is borrowed against. Your coin leaves the vault in one place only: when a share is redeemed.
the coin's only exit: redeem() · src/StashVault.sol:428 · rescue() refuses the coin · :626–641
A vault opens only for a coin that already pays its holders: its creator points the payouts at the vault and signs that transaction (source A), or a test account first receives at least twenty payouts (source B). Buybacks don't count.
opening rules · README.md:379–388 · createVault() is admin only · src/StashFactory.sol:72
A token trading under the name STASH is not issued by this project. What a vault gives you is its share, named s + the coin's ticker, and it is redeemable for that coin.
share symbol "s" + ticker · src/StashVault.sol:202 · no mint entrypoint · src/lib/ERC20.sol:6–9
Nothing makes a harvest happen or sets its size. If the coin stops paying, there is nothing to harvest, and the rate does not fall. The rate figures on this site are labelled test runs, not forecasts.
no vault function lowers the rate · test/unit/Invariants.t.sol:612
How it makes money
At each harvest, 10% of the payout goes to the treasury by default, before the rest is sold for more of your coin. It is the only fee in the contract. The admin can change it, but the code refuses anything above 30%, and it is never taken from your deposit.
A payoutin the payout's token
Your depositthe coin you put in
the same split in a test run
dry run on a local fork, nothing broadcast · anvil fork of Robinhood Chain, 22 Sep 2026 · test sizes, not a yield forecast
Never charged
feeBps is the only fee in the code · harvest() · src/StashVault.sol:451 · deposit() :366 and redeem() :402 take no fee
Who holds which key
The factory refuses to create a vault unless admin, guardian, treasury and keeper are four different non-zero addresses. After that, the admin can reassign the guardian, treasury and keeper; only non-zero is checked.
Every role stops at the contract. Only one line goes through to the coin: yours, in and out.
| Action | Admin | Guardian | Keeper | Treasury | You |
|---|---|---|---|---|---|
| Nobody, not even the admin | |||||
| Move your coin or your sharesrescue() refuses the coin, the payout token and the shares | cannot | cannot | cannot | cannot | cannot |
| Lower the share rateno vault function does | cannot | cannot | cannot | cannot | cannot |
| Change the coin, payout token, router or poolall fixed when the vault is created | cannot | cannot | cannot | cannot | cannot |
| Mint shares without a deposit | cannot | cannot | cannot | cannot | cannot |
| Settings, inside limits the code fixes | |||||
| Set the feeup to 30% of each payout · 10% by default | can | cannot | cannot | cannot | cannot |
| Set vesting10 minutes to 7 days · 6 hours by default | can | cannot | cannot | cannot | cannot |
| Set the harvest pace60 seconds to 7 days, never longer than vesting · 2 minutes by default | can | cannot | cannot | cannot | cannot |
| Set the price window and tolerance10 minutes to 2 hours · tolerance up to 10% | can | cannot | cannot | cannot | cannot |
| Reassign guardian, treasury, keeperto any non-zero address | can | cannot | cannot | cannot | cannot |
| Send back other tokens sent by mistakenever the coin, the payout token or the shares | can | cannot | cannot | cannot | cannot |
| Pauses | |||||
| Pause deposits and harvestseither can lift it again | can | can | cannot | cannot | cannot |
| Pause redemption72 hours at most, then not again for 72 hours | can | cannot | cannot | cannot | cannot |
| Everyday | |||||
| Harvestonce per interval, at the price floor or better | cannot | cannot | can | cannot | cannot |
| Receive the feein the payout's token | cannot | cannot | cannot | can | cannot |
| Deposit, redeem, transfer shareseach with a minimum you set · no blacklist, no transfer tax | cannot | cannot | cannot | cannot | can |
The factory
Creates one vault per coin, admin only, then steps away. It holds no funds and cannot touch anything inside a vault. A retired vault keeps every right for its holders, redeem included.
Your way out
You redeem without the keeper, the guardian or the treasury. In the contract, only the admin's pause, 72 hours at most, can hold up a redemption.
Risk
In plain words, before you deposit. Deposit only what you can afford to lose.
The review so far is internal: two adversarial passes and a test suite (as of 23 Sep 2026: 318 offline tests in 16 suites plus 4 against live chain state, all green). Tests lower the odds of a bug; they do not rule one out.
The share rate counts coin, not dollars. It never falls, but the coin under it can lose all of its value, and your deposit with it.
The vault holds what the coin's contract lets it hold. A coin that can freeze, seize or rebase balances can do that to the vault's balance too.
Nothing makes a harvest happen or sets its size. If the coin stops paying, or the keeper stops, nothing is harvested and the rate does not fall. Redeem keeps working without the keeper.
It can sell a harvest at the edge of the price floor: by default about 1% plus the pool fee below the pool's 30-minute average price. The admin can widen that tolerance to 10% at most. It costs part of a harvest's gain, never principal.
The fee up to 30% of each payout, pausing deposits and harvests, pausing redemption for up to 72 hours. A careless admin can make a vault worse to hold; no admin function can take your coin.
Only the admin can pause redemption: for 72 hours at most, and then it cannot pause again for 72 hours. Lifting a pause early does not bring the next one closer. The guardian can never pause it, and the deposit and harvest pauses never stop a redemption.
longest case · MAX_REDEEM_PAUSE = 72 hours, REDEEM_PAUSE_COOLDOWN = 72 hours · src/StashVault.sol:61–62, :599–616
Launch
Three steps, in this order. Each one says “not yet” until it happens, then links to its transaction or contract on the chain's explorer.
Read from config/addresses.json, the same file behind the header's status and the vault page. Nothing on this list is typed in by hand.
Each limit has a line number.
Reading config/addresses.json…