Walkthrough: launching a vault (curator perspective)
Level: Advanced · Mirrors the worked example in the official architecture docs: a USDC vault allocating between an idle reserve and one looping strategy. Concrete's contracts are private; you need partner access (NDA) to build against them. This is a conceptual map, not deployable code.
Step 0 - decisions
| Decision | Options |
|---|---|
| Vault type | Standard (atomic) · Async (queued) · Predeposit · Bridged |
| Strategies | Idle · lending · looping · multisig (custodied) |
| Accounting | On-chain vs asynchronous (sets operator dependency + accountingValidityPeriod) |
| Fees | Management · performance · hurdle (APY/APR/dynamic) · splitter config |
| Hooks | Deposit cap · whitelist · deposit lock (±early-exit fee) via HookContainer |
| Limits | Max deposit, per-user cap, min/max amounts, withdrawal cap & cadence |
| Roles | Who is Vault Manager, Strategy Manager, Allocator, Pauser, Withdrawal Manager |
Step 1 - create
factory.create(version, ownerAddr, abi.encode(allocateModule, USDC, initialVaultManager, "Concrete USDC", "ctUSDC"), salt) deploys the proxy. Result: ROLE_ADMIN and VAULT_MANAGER → initialVaultManager; ownerAddr becomes the Ownable owner (authorised to call factory.upgrade). Not production-ready yet.
Step 2 - grant roles
From ROLE_ADMIN: grant STRATEGY_MANAGER, ALLOCATOR, PAUSER, and for async vaults WITHDRAWAL_MANAGER and PRIORITY_WITHDRAWAL_EXECUTOR. Until then no strategy can be added.
Step 3 - add strategies
STRATEGY_MANAGER calls addStrategy for the idle and looping strategies.
Step 4 - set deallocation order, then allocate
ALLOCATOR calls setDeallocationOrder (cover every strategy or some will be un-withdrawable) then vault.allocate(...) as deposits arrive.
Step 5 - attach hooks & limits (optional)
HOOK_MANAGER attaches hooks; VAULT_MANAGER sets caps. Fee recipients are set by the factory owner.
Step 6 - go-live checks
Step 7 - operate
Daily NAV/exchange-rate updates, epoch close/process/claim automation, strategy rebalancing, monitoring. For a hosted route see Enterprise.