Overview
Vaults are the delegation and restaking management layer of Symbiotic. They handle three crucial parts of the Symbiotic economy:
- Accounting: Vaults handle deposits, withdrawals, and slashings of collaterals and in turn their underlying assets.
- Delegation Strategies: Vault deployers/owners define delegation and restaking strategies to operators across Symbiotic networks, which networks have to opt into.
- Reward Distribution: Vaults provide historical information to external rewards contracts to distribute staking rewards from networks to collateral depositors.
Vaults are configurable and can be deployed in an immutable, pre-configured way, or specifying an owner that is able to update vault parameters. Vaults are expected to be used by operators and curators such as crypto institutions or liquid (re)staking protocols to create differentiated products, e.g.:
- Operator-Specific Vaults: Operators may create vaults with collateral restaked to their infrastructure across any configuration of networks. An operator can create multiple vaults with differing configurations to service their clients without requiring additional node infrastructure.
- Curated Multi-Operator Vaults: Curated configurations of restaked networks and delegation strategies to a diversified set of operators. Curated vaults can additionally set custom slashing limits to cap the collateral amount that can be slashed for specific operators or networks. The terms of these commitments need to be accepted by networks that vaults seek to provide their curation for.
- Immutable Pre-Configured Vaults: Vaults can be deployed with pre-configured rules that cannot be updated to provide extra protection for users that are not comfortable with risks associated with their vault curator being able to add additional restaked networks or change configurations in any other way.
Technical overview
Each vault has a predefined collateral token. The address of this token can be obtained via the collateral()
method of the vault. The collateral token must satisfy the IERC20
interface (see Collateral details). All the operations and accounting within the vault are performed only with the collateral token. However, the rewards given for the provided by the vault funds can be in different tokens. All the funds are represented in shares internally but the external interaction is done in absolute amounts of funds.
The Vault contract consists of three primary modules:
1. Accounting Module
This module is responsible for handling the financial aspects of the vault, including:
- Processing deposits from users
- Managing withdrawal requests and claims
- Keeping track of active balances and total supply
- Implementing epoch-based accounting for withdrawals and slashing
2. Slashing Logic Module
The slashing module, implemented as a separate contract called the Slasher, handles penalty enforcement. Its functions include:
- Verifying the validity of slashing requests
- Implementing different slashing types (e.g., instant slashing and veto slashing)
- Managing the slashing process, including potential veto periods
3. Limits and Delegation Logic Module
This module, referred to as the Delegator, manages how stake is distributed. It comes in three main types:
FullRestakeDelegator:
- Allows restaking across multiple networks and operators simultaneously
- Enables shared stake between operators and networks
- Suitable for scenarios with operator insurance funds
NetworkRestakeDelegator:
- Allows restaking across multiple networks but restricts operators from being restaked within the same network
- Provides stake isolation between operators within a network
OperatorSpecificDelegator
- Simplifies both NetworkRestake and FullRestake delegators
- Provides a strict guarantee of a non-zero limit for only one operator inside
Interaction Between Modules
When a slashing event is triggered, the Slasher module queries the Delegator module to obtain the current stake limits for the operator or network in question. This ensures that the Slasher has the most up-to-date information before proceeding with the slash. Then the Slasher module uses the stake limit information from the Delegator to validate that the proposed slashing amount does not exceed the allocated stake.
The Delegator module may utilize information from the vault itself regarding active stake. This data can be crucial for determining accurate stake limits and ensuring that the slashing process aligns with the current state of the vault.