How Arden works
Written so it can be checked against the code and against the chain. Every address and every number below is live on Robinhood Chain mainnet.
Markets
A market holds one asset. You deposit that asset and receive a position token back: an ordinary ERC-20 with a symbol, visible in your wallet, transferable without asking Arden for permission. Its value is what the market holds divided by how many positions exist.
value per position = (assets + 1) / (positions + 1)
The + 1 on each side is a virtual asset and a virtual position. Without
it, the very first depositor could deposit one wei, donate a large amount to the market,
and round the second depositor down to nothing.
Withdrawing burns the position and returns the asset at the value it is worth in that block. There is no epoch, no queue and no withdrawal delay written into the contracts.
The levy
An asset sitting in a market earns nothing by itself, and Robinhood Chain has no borrow demand for tokenized equities to lend it into. So Arden charges the pressure instead of the asset.
Every market keeps a signed, decaying measure of net flow, as a fraction of its own size. Deposits count positive, withdrawals negative, and they cancel. A market where equal money arrives and leaves is not under pressure, however much passes through it.
flow = flow · window / (window + elapsed) // decays toward zero
levy = floor + (ceiling − floor) · min(|flow|, 1)
The levy is charged only to the side whose sign matches the flow. If everyone is leaving, withdrawing is expensive and depositing costs the floor. If everyone is arriving, the reverse. Moving against the crowd is always the floor rate, which is what keeps a market balancing itself instead of merely being expensive.
What is collected does not leave. It stays in the market while no new positions are issued against it, so the only thing it can do is raise the value of the positions that were already there. Arden takes a cut of the levy and never of anyone's capital.
This is not new. Open-ended funds have used it for two decades under the name swing pricing, or an anti-dilution levy: when money rushes one way, the cost of accommodating it is billed to the people rushing rather than spread across the people who stayed. What is different here is that the rate is set by a measurable quantity rather than a manager's judgement, and that only one side pays.
What is guaranteed
| Property | How it is enforced |
|---|---|
| The levy can never dilute a holder | It is never paid out, so the value per position is non-decreasing across every deposit and every withdrawal. Proven by test_Levy_NeverDilutes and a 256-run fuzz test, and again against the live contracts on a fork. |
| Going against the flow is free | The levy applies only when the sign of your action matches the sign of the net flow. test_AgainstTheFlow_PaysFloor. |
| A round trip cannot profit | In and straight out always returns less than went in. test_RoundTrip_CannotProfit. |
| The ceiling cannot be raised | MAX_LEVY_BPS is a constant in the contract, checked in the constructor and in setParams. The owner cannot exceed it. |
| A donation cannot reprice anyone | Assets are tracked in storage, not read from the token balance. Sending tokens to a market changes nothing for holders. |
| The owner cannot take principal | skim can only move assets above what holders are owed. |
| A market cannot be taken over | Each market is a proxy initialised once, guarded by owner == address(0). test_CannotInitializeTwice. |
What is not
You keep the market risk. A position in a tokenized equity rises and falls with that equity. Arden changes how accessible the position is, not how risky the asset is.
Returns are not promised. For the equity markets the levy is a toll on crowded flow, not payment for a real trading cost. When nobody is trading it sits at the floor and earns nothing. Only the dollar market has income from outside the protocol.
The contracts are unaudited. They pass a full test suite, including tests run against the deployed contracts on a fork of mainnet. That is not the same as review by a third party.
Settlement is onchain. Deposits and withdrawals are transactions you sign and pay gas for in ETH, and access depends on the chain being available.
The dollar market
ad-USD is the exception. It does not rely on a levy: it forwards deposited
USDG into Steakhouse USDG, an ERC-4626 vault on Morpho Blue, and holds only its
shares. What that source earns is reflected in the value of your position.
Arden takes 2% of the gain there, not 10%, because the dollar market is the way in and should not be over-taxed. Fees are settled before every deposit and withdrawal, so they accrue at the price you transact at.
Many contracts on this chain use the symbol steakUSDG. The one Arden
routes into reports the official USDG as its asset() and holds several
hundred million dollars. Verify that before trusting any address claiming the name.
Addresses
| Contract | Address |
|---|---|
| Market registry | 0x137C4197A29DDb62539522e71Ea0280e699D6c5d |
| Market implementation | 0x20249157Ff76B2CD143a2144F17Bce66076dE2F0 |
| ad-USD (dollar market) | 0xb14304a780ECFbD02E96fFc03C40B5859afD5f8d |
| Deposit in dollars, one transaction | 0xCDB12964E253D2CF12D09Dcb917a30193734c87E |
The app lists markets by calling allVaults() on the registry, so a new
market appears without the site being redeployed. Every market address is in
DEPLOYMENTS.md in the repository.
Why every market is 45 bytes
The chain charges 200 gas for every byte of deployed code. Putting a full copy of the
market contract on chain costs about 1.71 million gas; an EIP-1167
minimal proxy pointing at one shared implementation costs about 329,000. Listing
sixty-one markets the naive way costs roughly five times what it needs to. The price is
one extra DELEGATECALL per call, paid by whoever transacts.
Numbers
| Parameter | Value |
|---|---|
| Levy floor | 0.50% |
| Levy ceiling | 5.00%, and a constant in the contract |
| Decay window | 1 hour. The measure halves after one window. |
| Arden's cut of the levy | 10%, capped at 20% in the contract |
| ad-USD performance fee | 2% of the gain only |
| Deposit or withdrawal fee | None. The levy is the only charge. |
| Lockup | None |
Check it yourself
Nothing here has to be taken on trust. On any market:
asset()is the token it holds, and it should match the ticker.totalAssets()is what is deposited, tracked in storage.pricePerShare()is what one position is worth right now.currentLevyBps(true)andcurrentLevyBps(false)are what a deposit and a withdrawal are charged at this moment. These are the numbers the app displays; it does not compute its own.maxBps()andfloorBps()are the bounds the levy moves between, fixed when the market was created.
The site reads all of it from the contracts on load. There is no database behind it.