Skip to main content

Technical Architecture

A Vault is a self-contained on-chain system: a proxy that holds state, an implementation that holds logic, and a set of modules within it, each handling one responsibility — staking, accounting, fees, MEV, access control, and more.

Vault Deployment

Each Vault is deployed as an upgradeable ERC-1967 ↗ proxy contract. The proxy is what users interact with — it holds all persistent state, including user balances and the Vault-specific configuration set during initialization. Logic lives in a separate implementation contract, so new Vault versions can be released without redeploying each Vault or migrating user data.

Vaults are created through network-specific factory contracts. On Ethereum, an EthVaultFactory is deployed for each Vault variant (Standard, Private, Blocklist, ERC-20); on Gnosis, the equivalent GnoVaultFactory plays the same role. Each call to createVault:

  1. Deploys a new ERC-1967 proxy pointing to the shared implementation contract.
  2. Calls the proxy's initializer to set the Vault's initial configuration.
  3. Registers the new Vault in the VaultsRegistry ↗ — the canonical on-chain list of all valid Vaults.

If the Vault is configured to use its own MEV rewards escrow, the factory also deploys an OwnMevEscrow contract and wires it to the Vault during initialization. Otherwise, the Vault is connected to the SharedMevEscrow (Smoothing Pool).

IconSecurity Deposit Required

To mitigate the ERC-4626 ↗ inflation attack while a Vault's share supply is still small, initialization requires a security deposit of at least 1 gwei.

Modular Design

At initialization, the Vault is linked to StakeWise smart contracts and the Ethereum Beacon Chain. These links are immutable: once set, they cannot be changed. Each Vault is then composed from specialized modules, each responsible for a distinct area:

User deposits and exits — minting shares for deposited assets and processing withdrawal requests against the exit queue.

Validator lifecycle — registering new validators on the Beacon Chain, funding them from pooled deposits, and processing their exits.

Fee enforcement — calculating and applying protocol and operator fees on accrued rewards.

MEV capture — routing execution-layer rewards either to a Vault-specific escrow or to the shared Smoothing Pool.

osETH integration — letting depositors mint osETH against their staked position without unstaking.

Modules combine in different ways to produce the Vault types. ERC-20, Private, and Blocklist Vaults are additive variants of the same staking core, layering tokenization or membership rules on top. MetaVaults reuse the same share-accounting, fee, and exit-queue logic, but delegate staking itself to a set of sub-vaults.