Skip to content
LogoLogo

Rewards

Rewards are payments that Networks make to vault participants in exchange for security and work. Rewards are distributed using historical snapshots of vault state, so each participant is paid based on the exact state of the vault at the chosen timestamp.

Rewards may come from protocol fees, scheduled token emissions, external client payments, or amounts routed from slashing (via Burner policy). Symbiotic does not dictate the economics; it provides the on-chain contracts that make accurate distribution and claims possible.

rewards-flow (1).png

Rewards mechanism overview

The Rewards system enables Networks to distribute rewards to vault participants using historical snapshots of vault activity. This ensures rewards are calculated from the exact state of vault participation at a specific timestamp, with fees applied according to the rates active at that time.

Registries

FeeRegistry

FeeRegistry stores fee configurations. It manages three fee types:

  • Operator fees
  • Curator fees
  • Protocol fees

Fee configuration uses a two-level hierarchy with default rates and network-specific overrides. When a distribution is created, the registry returns the fee rates that were active at the distribution timestamp.

CuratorRegistry

CuratorRegistry manages vault-to-curator mappings. Each vault has one curator at any time. The curator can configure and claim fees for a vault, with authorization following this order:

  1. Vault owner sets the initial curator.
  2. The current curator can update curator settings.
  3. If no curator exists, the vault owner can set a new curator.

Rewards contract interface

The Rewards contract provides a unified interface for the reward mechanisms.

Core functions

claimRewards() Routes reward claims to the appropriate mechanism based on the encoded reward type. For snapshot-based rewards, it extracts the vault snapshot data and processes the claim.

distributionToTotalAmount() Calculates the total amount required to fund a distribution including protocol fees. This helps Networks determine the correct total amount when they want a specific net distribution.

totalToDistributionAmount() Performs the reverse calculation, converting a total amount back to the net distribution amount after protocol fees.

How rewards are distributed

Networks or their authorized middleware distribute rewards by calling the snapshot distribution function with a historical timestamp. The process follows these steps:

  1. Validate entities: confirm network and vault registration
  2. Capture historical state: query the vault’s total active shares at the distribution timestamp
  3. Calculate fee splits: use FeeRegistry to fetch the curator and operator fee rates active at that timestamp
  4. Store the distribution: record net amounts for each participant type in the distribution

How participants claim rewards

Stakers

Stakers claim their proportional share based on vault shares at the distribution timestamp:

(staker shares / total shares) × reward amount

Operators

Operators claim fees based on the delegator type:

  • NetworkRestake: proportional to the operator’s network shares
  • OperatorSpecific/OperatorNetworkSpecific: full amount for designated operators
  • FullRestake: no operator fees

Curators

Curators claim accumulated fees through the claim function. CuratorRegistry validates that only the current curator can claim these fees.

Fee calculation model

The system uses a fee deduction model where fees are subtracted from the gross amount provided by the distributor:

  1. Protocol fees are deducted first.
  2. Curator fees are calculated using historical rates from FeeRegistry.
  3. Operator fees are calculated using historical rates from FeeRegistry.
  4. Net staker amount is the remaining distribution amount after curator and operator fees.