Byzantine Finance
Website - Home🖥️ For Developers
  • 👋Introduction
    • What is Byzantine Finance?
      • Permissionless strategy vaults
      • Strategy layer & infrastructure layer - Explain Like I'm 5
      • Architecture Overview
    • Explanation of terms
    • Restaking explained
  • Media kit
  • 🔑Byzantine Vaults
    • What are Byzantine vaults?
    • Features of Native Vaults
      • Byzantine Oracle
      • Best practices for Validator Managers
    • Types of Native Vaults
      • Solo Staker Vaults
      • Partner Validated Vaults
      • Distributed Validator Vaults
  • ↔️Vault Interaction
    • Deposit
      • Deposit to ERC20 Vaults
      • Deposit to Native Vaults
    • Withdraw
      • Withdraw from ERC20 Vaults
      • Withdraw from Native Vaults
    • Claim Rewards
      • Restaking Rewards
        • EigenLayer Rewards
        • Symbiotic Rewards
  • 🎛️Vault Creation
    • Overview
      • Vault Configuration Guide
      • Vault Parameters
        • Byzantine Vault Parameters
        • Native Vault Parameters
        • EigenLayer Parameters
        • EigenPod Parameters
        • Symbiotic Parameters
      • Roles
    • Single Protocol Vaults
      • EigenLayer Vault
        • Eigen ERC20 Vault
        • Eigen Native Vault
      • Symbiotic Vault
        • Sym ERC20 Vault
        • Sym Native Vault
    • Cross Protocol Vaults
      • Eigen Layer / Symbiotic ERC20 Vault
  • 🤖Curation
    • Overview
    • Curator Related Roles
    • Vault Management
    • Restaking Strategy Management
      • EigenLayer Strategy
      • Symbiotic Strategy
      • Cross Protocol Vault
    • Curation Fee Management
  • 🌐Node operators
    • Operators in the Byzantine ecosystem
    • Register as a Staking Operator
    • Staking
    • Restaking Operator
      • Symbiotic Operators Guide
      • EigenLayer Operators Guide
  • Claiming DV operator fees
Powered by GitBook
On this page
  • Overview
  • High Level Design
  • Checkpoints in Symbiotic Rewards Calculation
  • Step-by-Step Process For Staker Rewards
  • Fees For Curator
  1. ↔️Vault Interaction
  2. Claim Rewards
  3. Restaking Rewards

Symbiotic Rewards

Restaking rewards distribution from Symbiotic to Byzantine stakers and curators

PreviousEigenLayer RewardsNextOverview

Last updated 23 days ago

This section explores the detailed technical structure of the SymbioticManager contract which handles the restaking rewards on Symbiotic, focusing on how restaking rewards from Symbiotic are distributed to the Byzantine stakers and curators.


Overview

  • Every creation of a SymERC20ByzVault contract automatically deploys a SymbioticManager contract.

  • Every SymERC20ByzVault inherits from SymbioticManager.

  • All Symbiotic networks, Sym Byz vault stakers and curators interacts directly with SymbioticManager to distribute and claim rewards.

  • The checkpoint system is used in both rewards distribution and claiming stages.

  • Unlike the Eigen rewards, Symbiotic rewards do not use Merkle tree.


High Level Design

Symbiotic Reward Claiming Flow

A simplified and high level flow is as follows:

  • Networks interact directly with the SymbioticManager to distribute rewards in a specific token at a particular timestamp.

  • Stakers claim rewards from SymbioticManager.

  • Curator claims their fees from SymbioticManager.

The SymERC20ByzVault contract extends the SymbioticManager contract. This means that interacting directly with SymERC20ByzVault allows the caller to access the features and functions of SymbioticManager.


Checkpoints in Symbiotic Rewards Calculation

The use of the checkpoint system in Symbiotic rewards:

  • Three checkpoints are created at every deposit and withdrawal of the Sym Byz Vault: activeStake, activeShares and activeSharesOf. The new value is added to the list of existing values.

  • At every rewards distribution, the network provides a timestamp to retrieve the vault's active shares at that specific timestamp (activeSharesAt) and logs it in the contract. Along with this, the timestamp and distributed amount are also stored in the contract.

  • At every rewards claim, the stored timestamp is used to retrieve the active shares of the staker at that specific timestamp (activeSharesOfAt).

  • The activeSharesOfAt, along with the distributed amount and activeSharesAt of the vault, are used to calculate the staker's eligible reward amount. The formula is as follows:

stakerRewards=activeSharesOfAt∗distributedAmount/activeSharesAtstakerRewards = activeSharesOfAt * distributedAmount / activeSharesAtstakerRewards=activeSharesOfAt∗distributedAmount/activeSharesAt

Step-by-Step Process For Staker Rewards

1

Rewards distribution by networks

Function to invoke:

function distributeRewards(address network, address token, uint256 amount, bytes calldata data) external;

All networks who have opted-in to the Sym Byz vault should calls this function to distribute rewards for the stakers of the vault. As explained in the last section, the timestamp as input to the function (encoded in data) is used to retrieve the relevant checkpoints to mark the vault's total active shares and the staker's active shares when claiming rewards.

The final distributed amount is the amount of rewards that is left after subtracting the curator fee from the actual earnings.

2

Rewards claim by stakers

Function to invoke:

function claimRewards(address recipient, address token, bytes calldata data) external;

A staker calls this function to claim rewards distributed by the networks.

Stakers must specify the token and the network they want to claim rewards for.

To claim all rewards distributed by various networks in different tokens from a Sym Byz vault, multiple calls to claimRewards are required.


Fees For Curator

Function to invoke:

function claimCuratorFee(address recipient, address token) external;

The curator of an Sym Byz Vault can set and adjust the curator fee percentage. They call this function claim all cumulative fees distributed in a specific token for a particular vault at once.

Each time a network calls the distributeRewards, the curator fee amount is increased and stored in the contract.

Checkpoint creation and usage within a timeframe