Curator Guide
Collateral Class Selection
When setting up a Vault, one of the key decisions is selecting the Collateral token. This token must match one of the Collateral classes supported by the L1 chain(s) the Curator wants to delegate to.
Each Collateral token belongs to exactly one Collateral class (primary or secondary) for each L1. For detailed information on Collateral classes, see Collateral Classes.
- Primary Collateral: The L1's native token or a derivative. Required for validators to meet the L1's requirement.
- Secondary Collateral: Additional tokens (such as stablecoins or other assets) required in L1s using dual-staking for additional security.
A Vault can only hold one type of Collateral. Curators need to choose which class they want to support based on market availability, liquidity, and the L1 requirements they want to meet.
Vault Configuration
Vaults can be created with the DeployVaultFull.s.sol
script, which ultimately calls IVaultTokenized.initialize()
. The key parameters to set are:
collateral
- The Collateral stakable into the Vault. This will be matched with L1 staking requirements that have this Collateral in one of their asset class (primary or secondary).
epochDuration
- Time (in seconds) for each vault epoch (e.g.,
604800
= 7 days).
- Time (in seconds) for each vault epoch (e.g.,
- Deposit Settings
depositWhitelist
: Whether to restrict Collateral deposits to addresses in the allowlist.isDepositLimit
/depositLimit
: These parameters determine whether to cap the total Vault deposit.
- Admin Roles
defaultAdminRoleHolder
: The top-level admin (can be0x0
if Vault needs to be immutable).- Whitelist/limit roles if needed.
- Delegator
L1RestakeDelegator
is set on deployment. Once chosen, it cannot be replaced.
Because Suzaku's principal slashing is unimplemented, Curators should pass address(0)
for the slasher—no actual token burn will occur.
Delegator Module: L1RestakeDelegator
When a Vault is deployed, the L1RestakeDelegator
controls how the stake is distributed among L1s/operators:
setL1Limit(l1, collateralClassId, amount)
- Declares how much total stake goes to that L1 (up to
amount
). This is set by the curator and should be lower than themaxL1Limit
set by the Avalanche L1.
- Declares how much total stake goes to that L1 (up to
setOperatorL1Shares(l1, collateralClassId, operator, shares)
- Attributes shares of the Vault to an operator.
- The operator's final stake is:
operator_stake = (operator_shares / total_shares_for_L1) * min(vault_active_stake, l1Limit)
Allocations can be updated by the OPERATOR_L1_SHARES_SET_ROLE
role.
Deposit & Withdrawal Mechanics
Deposits
vault.deposit(onBehalfOf, amount)
- Mints "active shares" representing the Curator's stake portion.
- Checks whitelist/limits if enabled.
Withdrawals
- Epoch Delay:
vault.withdraw(claimer, amount)
burns active shares, mints "withdrawal shares," claimable next epoch.
vault.claim(recipient, epoch)
- After that epoch boundary, claim to finalize the withdrawal.
The Vault updates activeStake
each epoch. Delegated stake is derived from activeVaultBalance
.
Slashing Policy
- No principal slashing currently. A misbehaving operator merely loses rewards or gets undelegated.
- If a "slasher" address is set to
0
, no tokens are actually burned.
Detailed Parameter Explanations
-
collateral
- The ERC-20 token for staking. Must appear in the L1's Collateral class.
-
burner
- Address for slashed tokens.
-
epochDuration
- Epoch length in seconds.
-
depositWhitelist
(bool
)true
→ deposit only from whitelisted addresses.
-
isDepositLimit
(bool
)true
→ enforce global deposit cap.
-
depositLimit
(uint256
)- The max total deposit if
isDepositLimit
istrue
.
- The max total deposit if
-
defaultAdminRoleHolder
- Address with
DEFAULT_ADMIN_ROLE
.
- Address with
-
depositWhitelistSetRoleHolder
- Admin to enable/disable
depositWhitelist
.
- Admin to enable/disable
-
depositorWhitelistRoleHolder
- Admin to manage whitelisted addresses.
-
isDepositLimitSetRoleHolder
- Admin to enable/disable deposit cap.
-
depositLimitSetRoleHolder
- Admin to change numeric
depositLimit
.
- Admin to change numeric
-
name
andsymbol
- For the ERC-20 Vault share token.