Skip to Content

Rewards

Rewards are the economic incentives provided by Services to Operators and Stakers for their participation in securing the Service network.

BVS applications are expected to distribute their tokens as rewards to Bitcoin restakers who provide collateral for cryptoeconomic security, and operators who help with the validation.

To ensure a robust amount of Bitcoin assets for security and proper operator functioning, BVSs must reward good behavior in the form of payments made to restakers and operators. The following section explains how these payments work.

Participants in the Rewards System

💡

In the SatLayer ecosystem, Operators and Stakers are collectively referred to as Earners when discussing the rewards distribution process.

In general, we have the following participants:

  • Operators run the infrastructure and validation systems for the Services
  • Stakers delegate their assets to Operators as part of the shared security model
  • Services distribute rewards to both parties based on their contributions

Rewards Workflow

Distributing Rewards

In the following sections, we will outline the steps for Services to distribute rewards to Earners, and for Earners to claim their rewards. The rewards distribution process follows these steps:

Calculate rewards

Services should calculate rewards for each Earner based on their own criteria. These calculations are recorded in a distribution.json file that follows the schema on the SatLayer GitHub. The file tracks accumulative rewards for each Earner.

Submit distribution data

Services can submit their distribution.json file to the satlayer-rewards repository as a PR, there are GitHub Actions configured that automatically generate and store the merkle tree in the repository. This step simplifies the proof generation process by Services for Earners. Should Services prefer, the merkle root can also be generated locally using the CLI from @satlayer/cli.

Execute the distribution

Services should call the DistributeRewards function on the bvs-rewards contract with the generated merkle root, in order to distribute the rewards.

Before executing this step, Services must ensure that:

  • The reward tokens are available in sufficient amounts
  • Appropriate allowances are granted to the bvs-rewards contract

Claiming Rewards

For detailed examples of claim request parameters and code samples, please refer to the SatLayer Rewards CLI documentation.

Earners can claim their rewards through this process:

Generate proofs

Earners use the @satlayer/cli to generate proofs for their rewards. These proofs are specific to each Service and token pair the Earner wishes to claim rewards for. In reality, there may be a user interface that allows Earners to generate proofs without needing to use the CLI directly.

Execute claim

Earners call the ClaimRewards function on the bvs-rewards contract. This call includes the merkle proof, leaf index, and other required parameters. When the claim is successful, the Earners receive their rewards in the specified token as distributed by the Service.

Last updated on