DocsSecurity

Security Model

Trust assumptions, privilege boundaries, and dependency risks — the actual model, not a marketing one.

Trust matrix

ActorPowersCannot
OwnerPause/unpause; set risk parameters (bounded); set keeper; set fee recipients; configure deskWithdraw user funds — no admin sweep exists
KeeperCall executeCopy onlyTouch deposits, redemptions, configuration; every copy is re-checked by RiskModule on-chain
Factory ownercreateDesk permissioningAccess existing vaults' funds
AnyoneList a desk by posting the $SEAT bond (Phase 2); call processWithdrawals—
DepositorDeposit; queue a redemption at any time (even paused)—

Key-management requirements

  • PRIVATE_KEY (broadcaster/keeper) and the owner key are the crown jewels. Keep them out of .env on shared machines; never commit them; prefer hardware/KMS custody for the owner.
  • A compromised keeper key can only submit risk-bounded copies — bad but bounded. A compromised owner key can pause and reconfigure every vault — the worst case. Rotate both immediately on suspicion.

Dependency risks

DependencyRiskMitigation in code
Chainlink feedsStale/bad priceChainlinkOracle rejects non-positive prices; staleness check (default 120 s) fails closed
RPCKeeper blindnessNone built in — single endpoint; operational failover is manual
Uniswap routerExecution venueExactInputRouter02 wraps only SwapRouter02 exactInputSingle; no arbitrary calldata path in SwapAdapter
Stock Token issuerAsset integrityRegistry verification states; only verified+enabled rows are eligible
LeaderTrading behaviorRisk caps, session sizing, drawdown halt — but leader losses are real depositor losses

Contract properties worth knowing

  • Immutable: no proxy/upgrade pattern anywhere. Bugs are permanent; migration is the only fix.
  • Pause never traps shares (redeems queue while paused).
  • Withdrawal queue is FIFO and processing is permissionless.
  • Fee accrual is lazy (_accrueFees on state changes) — reads between accruals can be slightly stale by design.
  • SwapAdapter.quote always reverts — quoting is intentionally not on-chain.
  • Staker fee slice accrues as a vault liability when stakerRecipient is unset (Phase 1 posture) — it is not lost and not skimmable by anyone else.

Economic and market risks

  • Copy trading amplifies leader risk across all follower capital. Caps bound size, not direction of P&L.
  • Stock Tokens trade in market sessions; the session clock (ET, no holiday calendar) can misjudge holidays — it fails closed (size 0) when unsure.
  • USDG and Stock Tokens are issuer-backed instruments; their own risks are out of SEAT's control. SEAT is not affiliated with Robinhood.