24, On-chain · Risks

Risks

What can go wrong with the on-chain desk, ranked by how much it would cost you, what limits each one today, and what is planned. Read this before depositing.

This page is the honest inventory. The guardrails limit how badly a strategy can go; they do not remove the risks of the code, the chain, the pools, or the people holding the keys. Each item says what would have to happen, what stops it today, and what the plan is.

1. Smart-contract bugs

Would need: a flaw in RWAVault, the adapter, the oracle math, or an OpenZeppelin dependency. Today: 29 unit tests covering every refusal path and exit, a mainnet-fork round trip, OpenZeppelin v5.1 for ERC-4626/Ownable/Pausable/ReentrancyGuard, nonReentrant on every value-moving function, checks-effects-interactions, balance-delta accounting rather than trusting return values. Not today: an independent audit, formal verification, a bug bounty. Plan: audit before the cap is raised; publish findings.

2. Owner key compromise or misuse

Would need: the deployer key to leak, or the operator to act badly. What the owner can do: swap the oracle for one that misprices NAV, swap the adapter, widen caps up to the hard ceilings, pause, change the deposit cap, grant a session to any address. What the owner cannot do: transfer assets out, mint shares, or block redeemInKind. Today: Ownable2Step prevents accidental transfers to a dead address; the hard ceilings in GuardrailConfig bound how far caps can be loosened; the adapter's setPool only accepts USDG pairs, so even a hostile adapter change cannot route to an arbitrary contract. Not today: a Safe, a timelock. Plan: 2-of-3 Safe first, then a timelock on setOracle, setAdapter, setGuardrails and setCaps.

3. Session key compromise

Would need: the agent's private key to leak. Worst case: the attacker trades inside the session, which is bounded by expiry, per-trade notional, budget, count, side and ticker, and every order still answers the vault's caps. They could churn the budget into slippage and fees; they could not withdraw. Today: all of the above, plus revoke() in one owner transaction. Wrong today: the launch session is on the same key as the owner. Plan: separate agent key before any deposit that matters.

4. Price manipulation

Would need: capital to move a 5-minute TWAP on a $3.7M pool (NVDA) or a $350k pool (AAPL) by enough to profit against the vault's small book. Today: the deviation bound reverts any read where spot is more than 3% from the average, which freezes valuation and trading while the pool is being pushed; the cash buffer and concentration caps limit exposure to any one mark; minAmountOut bounds execution. Residual: a slow, patient push inside the bound over many minutes. Plan: longer TWAP window as depth allows; a posted-price oracle with a heartbeat as a second source; Chainlink if a feed appears.

5. Liquidity and basis

Pool depth is not constant. The AAPL pool at $350k means a 1,500 USDG order moves it ~0.4%; a much bigger vault would need bigger pools or smaller caps. The pool is not the NYSE. Overnight and weekends the token trades on chain sentiment; the mark can sit away from the underlying for hours. Withdrawals in cash are limited to USDG on hand; when the book is mostly tokens, leaving in cash means waiting for a sell or taking the tokens in kind. None of this is hidden: the terminal shows pool-implied prices, spot deviation, cash on hand and withdrawable cash live.

6. Stock Token issuer risk

The tokens are issued by Robinhood's tokenization arm and track prices; they are not shares, carry no voting rights, and depend on the issuer's backing, its ability to pause (oraclePaused() exists on the token), and its legal status. They are not offered to US persons. The vault does not and cannot fix any of that. If a token is paused or delisted, the vault's position in it is stuck until it is not; redeemInKind still hands you the units.

7. Chain and infrastructure

Robinhood Chain is an Arbitrum Orbit rollup with its own sequencer. Sequencer downtime halts everything, including exits, until it returns. The public RPC rate-limits and is filtered on some ISPs; the site reads through its own server and caches for 20-30 seconds, so what you see can be half a minute stale. Blockscout verification is blocked by a Cloudflare challenge, which is why source is not yet verified on the explorer.

8. Strategy risk

The caps bound position size, concentration, cash, daily loss and stop depth. They do not bound being wrong. A desk that buys the top with a 5% stop on every position, four times a day, inside every cap, still loses money. There is no track record. The vault's NAV is 0 at the time of writing and there are no depositors. The first metric the project intends to publish is how often the vault said no, because that is the only honest number at TVL 0.

What would change this page

1

Separate agent key

Removes item 3's "wrong today". One cast wallet new and one grant().

2

Safe as owner

2-of-3. Removes single-key compromise from item 2.

3

Timelock

24-48h on oracle/adapter/guardrails/caps changes. Gives depositors the window to redeemInKind.

4

Audit

Independent. Published. Before the deposit cap moves.

5

Second price source

PostedPriceOracle with heartbeat, or Chainlink when available; vault takes the more conservative mark.

6

Explorer verification

So anyone can read the source next to the bytecode.

This page is versioned with the contracts. If the addresses in Contracts change, this page is re-reviewed.