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:

const attestationCenter = new ethers.Contract(
  ATTESTATION_CENTER_ADDRESS,
  ['function createNewTaskDefinition(string, uint256, uint256, uint256, uint256, uint256) external']
);

const tx = await attestationCenter.createNewTaskDefinition(
  "Example Task",             // Human-readable name
  ethers.MaxUint256,          // Never expires
  ethers.parseEther('0.01'),  // Reward for attestation
  ethers.parseEther('0.1'),   // Reward for performer
  ethers.parseEther('0.005'), // Reward for aggregation
  0                           // Disable disputes
);

await tx.wait();

Last updated