Lagoon names governance, valuation, settlement, and access separately; on Volta90’s deployment one 3-of-6 multisig fills every capacity below. The headings are ABI / docs vocabulary, not four addresses.
Volta90: one multisig — Vault Admin, Curator, Valuation Provider, and Whitelist Manager are not four separate addresses in Volta90. They are exercised by the same 3-of-6 multisig — one on-chain identity with the combined permissions of those Lagoon roles.
Vault Admin
Contract owner: who may act as valuationManager / whitelistManager, pause, total-assets validity window, and vault lifecycle — not on-chain trading. Async (ERC-7540) owner surface, abbreviated:
| Access | Signature | Note |
|---|
| write | updateValuationManager(address) | Assign who may post NAV and settle async queues |
| write | updateWhitelistManager(address) | Assign who may manage the deposit whitelist |
| write | updateTotalAssetsLifespan(uint128) | How long a proposed total-assets figure stays valid |
| write | pause() | Emergency halt on vault flows |
| write | unpause() | Resume after pause |
| write | initiateClosing() | Begin vault wind-down lifecycle |
| write | close(uint256 _newTotalAssets) | Final close at posted NAV |
Full signatures: deployed ABI / Arbiscan. Trading on Hyperliquid is outside this multisig — system map under Architecture.
Valuation Provider
Posts the total assets figure for the async round (feeds settlement price with isTotalAssetsValid() and related views). In Volta90 the same address acts as Curator below.
| Access | Signature | Note |
|---|
| write | updateNewTotalAssets(uint256 _newTotalAssets) | Propose closing gross assets for the async round |
| write | expireTotalAssets() | Invalidate a stale NAV proposal before settlement |
Curator
Lagoon’s Curator is the same valuationManager multisig: it clears requestDeposit / requestRedeem queues via async settlement only. NAV before posting: NAV & Valuation.
| Access | Signature | Note |
|---|
| write | settleDeposit(uint256 _newTotalAssets) | Settle deposits; also attempts redeem queue (netting when both pending) |
| write | settleRedeem(uint256 _newTotalAssets) | Redeem-only fallback when deposit inflow cannot net exits |
| write | claimSharesOnBehalf(address[] controllers) | Push settled VLT90 to deposit LPs — V0.0.6 |
| write | claimAssetsOnBehalf(address[] controllers) | Push settled USDC to redeem LPs — V0.0.6 |
Typical batch: settleDeposit (deposits + redeem netting) plus on-behalf claims as needed — Automatic claims. settleRedeem when exits cannot net against deposit inflow. Does not execute Hyperliquid orders.
Whitelist Manager
Who may call requestDeposit when the whitelist is on. Volta90 is invite-only.
| Access | Signature | Note |
|---|
| write | addToWhitelist(address[] accounts) | Allow addresses to call requestDeposit |
| write | revokeFromWhitelist(address[] accounts) | Remove deposit access for addresses |
| write | disableWhitelist() | Turn off whitelist gate entirely |
| view | isWhitelisted(address) | Returns whether an address may deposit |