Rewards and Penalties
Intro
Operators in a shared security environment are incentivized through rewards for making attestation and executing diverse specialized tasks. Rewards scale with the effective balance, which provides an economic incentive for Operators to behave honestly and act in the networksβ best interest.
To maximize reward, a single Operator opt-in to validate multiple networks, and puts its staked ETH at additional risk of penalties. Operators are penalized for missed, late or incorrect attestations. Violating a consensus rule of chain A, carries consequences on effective balance, which results in a lower reward and voting power on AVS B and C, alongside A.
Overview
Operator rewards depend both on the amount of base reward per task and the frequency at which an operator is chosen to perform a task. AVS developers must configure the task rewards and utilize a leader election mechanism to determine the frequency at which operators are selected for tasks. Othentic Stack allows the configuration of diverse types of tasks with different corresponding rewards.
Formalization
Stake-weighted Rewards
Most Proof-of-Stake networks include a "stake-weighted" Leader Election mechanism where the more stake an operator has the more tasks they'll be chosen to perform. The Othentic Stack supports any Leader Election mechanism implemented by the AVS developer.
Generalization
Constructing the Rewards Function
There are two configurable components for the rewards function:
Configuring Base Rewards
Task Definitions
The Othentic Stack supports multiple types of tasks, called "Task Definition". Every Task Definition represents a certain type of task the network has to perform. A Task Definition includes the following properties:
Each task defines the base reward for each of the entities participating in consensus: the performer, the attesters, and the aggregators.
Creating Task Definitions
New Task Definitions are created on-chain via the AttestationCenter
smart contract. See Attestation Center for more details on its API.
To create a new Task Definition, we invoke the createNewTaskDefinition()
method:
Last updated