Symbiotic

Overview

Vault curators on Symbiotic can easily deploy Cap-specific Symbiotic Vaults using the CapSymbioticVaultFactory directly on the app's Create Vault page. Cap must first approve the Vault before delegated stake can be used as collateral.

1. Deploy Symbiotic Vault

Curators can deploy Cap-specific Symbiotic Vaults either via

  1. Cap's UI for creating Vault

  2. Vault Factory contract's createVault function on Etherscan.

As most of the parameters and modules are preconfigured, curators only have to specify the operator address and Collateral asset address when creating the Vault.

The factory contract will create Symbiotic's Delegator, Burner, Slasher and Rewarder modules as needed in Cap's Symbiotic Vault requirements.

/// @param _owner The owner of the vault, will manage delegations and set deposit limits 
/// @param asset The asset of the vault 
/// @param _agent The agent of the vault 
/// @param _network The network of the vault 
/// @return vault The address of the new vault function 
createVault(address _owner, address asset, address _agent, address _network) external 
returns (address vault, address delegator, address burner, address slasher, address stakerRewards); 

To ensure that all parameters are set-up as intended in Cap's design, Cap only accepts Vaults deployed via the factory contract.

Once the Vault is deployed, Cap will add the operator-delegator pair to the system with loan parameters via SymbioticAgentManager's addAgent function. The function handles necessary registry of the Vault. Once this part is complete, delegators can start using delegated stake as collateral.

Vault creation will revert if the operator's address is already receiving delegations from another Vault.

2. Admin Controls

Key administrative functions available to vault admins include configuring admin fees, setting deposit limits, and whitelisting depositors. Admin fees are taken from the rewards distributed to depositors, as a percentage of the total rewards.

// Set an admin fee
stakerRewards.setAdminFee(adminFee);

// Enable/disable deposit limit
vault.setIsDepositLimit(status);

// Set deposit limit
vault.setDepositLimit(amount);

// Enable/disable deposit whitelist
vault.setDepositWhitelist(status);

// Add/remove whitelisted depositors
vault.setDepositorWhitelistStatus(depositor, status);

3. Collecting Rewards

Rewards are automatically distributed to the StakerRewarder when an operator repays a loan.

Delegators can also manually claim rewards via the realizeRestakerInterest function on the Lender contract. The contract will distribute accrued interest on the operator's borrowed amount to the StakerRewarder.

Vault admins can claim the admin fee via the claimAdminFee function of the Symbiotic StakerRewards.

Last updated