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 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:
- Vault owner sets the initial curator.
- The current curator can update curator settings.
- 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:
- Validate entities: confirm network and vault registration
- Capture historical state: query the vault’s total active shares at the distribution timestamp
- Calculate fee splits: use
FeeRegistryto fetch the curator and operator fee rates active at that timestamp - 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:
- Protocol fees are deducted first.
- Curator fees are calculated using historical rates from
FeeRegistry. - Operator fees are calculated using historical rates from
FeeRegistry. - Net staker amount is the remaining distribution amount after curator and operator fees.
