Security Model
What the Neuron contracts enforce on their own, what still depends on the platform's keys and off-chain services, and what that means for you on Robinhood Chain testnet today.
Status in one paragraph
The contracts are tested with Foundry unit and fuzz tests but have not been audited, and no audit report has been published. Vaults and strategies are owned by a platform account, not yet a timelock or multisig. On testnet the vaults hold a free mock token and agents paper-trade, so the realistic risk today is wrong numbers, not lost money. The design below is what would carry over to mainnet, where the planned hardening items have to land first.
What the contracts enforce
Vaults
| Protection | How it works |
|---|---|
| Withdrawals cannot be blocked | pause() only zeroes maxDeposit; withdraw and redeem are never paused |
| Fee cap | MAX_PERFORMANCE_FEE_BPS = 3,000; both the constructor and setFeeConfig revert with FeeTooHigh above 30% |
| No fees on losses | Fees accrue only above the high-water mark (price per share), and are crystallized before every deposit and withdrawal, so a late depositor never pays for earlier gains |
| Honest previews | Share math counts fee shares not yet minted, so previewRedeem and maxWithdraw never overstate what you get (fuzz-tested) |
| Share inflation | A decimals offset of 6 on the ERC-4626 conversion |
| Non-transferable shares | Any wallet-to-wallet transfer reverts, which keeps on-chain cost basis exact and stops vote buying through transfers |
| Reentrancy | nonReentrant on deposit, mint, withdraw, redeem, harvest and setStrategy; token moves use SafeERC20 |
| Deposit limits | Per-vault depositCap and minDeposit |
| Liquidity check | A withdrawal the vault and strategy cannot fully cover reverts rather than paying short |
Strategies and reports
- A strategy is bound to one vault and one asset, both immutable; only that vault can call
invest,withdraworwithdrawAll.setStrategyrejects a module that names another vault or asset. SimulatedStrategy.reportaccepts calls only from itsoperator, rejects any move abovemaxReportBps(ReportTooLarge) and any report sooner thanminReportInterval(ReportTooSoon). Factory agents use 1,000 bps and 60 seconds; the factory can only set 1 to 5,000 bps and 30 seconds to 1 day for new agents.- The operator wallet has no admin rights over vaults; it can only report.
Governor and test token
AgentGovernorcounts the smaller of a holder's shares at the start of yesterday and of today, so money parked over one midnight buys no votes. It requires 1% of voting supply to propose, a quorum of at least 5% (agents use 10%), caps 25 proposals a day and rules at 4,096 bytes, closes at most 31 missed days when a proposal or vote catches up (so one call cannot run out of gas), and discards proposals written against outdated rules.MockUSDClets anyone claim only to their own wallet (FaucetSelfOnly), up to 1,000 per UTC day (FaucetLimit). Only whitelisted minters, the simulated strategies, can mint or burn freely.
Tests
contracts/test covers deposits, caps, pausing, pro-rata cost basis, non-transferability, fees and the high-water mark, fee previews, strategy migration and binding, report bounds and rate limits, governor voting rules, the bonding curve and the faucet, plus fuzz tests that a deposit and withdrawal round trip never profits without PnL, that previews never overstate a redeem, that reports keep vaults solvent, and that the curve stays solvent.
What you still trust
Owner keys
| Power | Held by | Why it matters |
|---|---|---|
setStrategy on a vault | Factory owner (platform account) | A new module that passes the asset and vault check takes custody of the vault's assets |
setFeeConfig, setDepositLimits, pause | Factory owner | Fees up to 30%, caps, and pausing new deposits |
setOperator on a strategy | Factory owner | Chooses which wallet may report results |
setUsdcMinter, setLimits, setOperator, setFeeTreasury on the factory | Factory owner | Who can mint test USDG, limits for new agents, the agent operator and the treasury |
FeeCollector settings | Its owner (the factory, for community agents) | Treasury and operator addresses |
There is no timelock on any of these today. The repo's plan is to hand vault ownership to a 48 hour TimelockController before mainnet, which is an ownership transfer rather than a code change (planned).
Off-chain services
- The operator and worker. The contract bounds each report but cannot check it. A buggy or rogue operator could move a vault by up to 10% per minute on factory agents. The notes in each report let anyone recheck the arithmetic against public prices.
- Market data. Paper results depend on prices and yields from Hyperliquid, DefiLlama, the Neuron launch indexer and token price providers. Bad data produces bad reports.
- The indexer. Every figure on the site is computed by the indexer from on-chain events. It can be wrong or late; the raw events are public and can be recomputed (see Public PnL & Trade History).
- Rule changes. An approved fix is served by the indexer and overrides the rules in an agent's on-chain governor, so the rules an agent trades on can differ from what the governor stores. Fixes are written with Claude's help, backtested against the current rules, and applied only after a team member approves them. Every rule set is also validated against fixed bounds before the worker uses it.
- Token launches. The launch service checks a signature from the agent's creator, a 10 minute expiry and the +10% return before it creates a token on Realm, and it launches one token at a time.
In the app
- Deposits approve exactly the amount being deposited, never an unlimited allowance.
- Keys for the operator, deployer and services live in server-side environment variables; logs are passed through a redaction helper.
- Portfolio exports neutralize spreadsheet formulas in text cells.
What users trust on testnet today
- 1The test token has no value, so a vault loss costs you nothing real.
- 2Your shares are withdrawable at any time, even if deposits are paused, as long as the strategy holds the assets. With
SimulatedStrategythe assets sit in the strategy contract, so they are always liquid. - 3The numbers you see are as honest as the operator's reports and the indexer's math. Both can be checked on-chain.
- 4The platform can change strategies, fees within 30%, caps and operators without delay.
Do not treat these contracts as safe for real funds. They are unaudited, admin actions have no timelock, and the strategies that would hold real assets do not exist yet.
Planned before real capital
Designed but not built yet: real execution strategies with whitelisted targets and slippage caps, per-strategy position limits, epoch-based withdrawal windows, management fees, and strategy upgrades behind a 48 hour timelock. See Testnet to Mainnet.
Related
Neuron is on Robinhood Chain testnet. Testnet performance is not evidence of real-money profitability.
