Skip to content

Incentive Marketplace

Proof-of-Liquidity (PoL) enables protocols to encourage validators to direct their $BGT emissions to a protocol's Reward Vault using whitelisted Incentive tokens. In doing so, protocols attract users to their protocol with $BGT rewards.

How Incentives Work

Validators can capture Incentives offered by Whitelisted Reward Vaults by directing their $BGT emissions towards those Reward Vaults, defined by a validator's Reward Allocation - the list of Reward Vaults a validator directs percentages of its $BGT emissions to.

Berachain Reward Vault Incentive Marketplace

Incentive Distribution Flow

The distribution of Incentives follows this process:

  1. A User Boosts (associates their $BGT with a validator) to increase a validator's $BGT emissions they receive when proposing a block.
  2. A Validator receives block rewards in the form of $BGT emissions, where the amount is influenced by Boost (see $BGT Emissions Per Block), and directs emissions toward Whitelisted Reward Vaults chosen by the validator.
  3. A Protocol can offer up to 2 different Incentive Tokens to encourage validators to direct $BGT emissions to their Reward Vault.
  4. When the $BGT block reward emissions are distributed:
    • The validator's operator address receives a commission (percentage of all the Incentive Tokens captured).
    • The remaining Incentives, for users who boosted the validator, are sent to a contract and backend service that manages the distribution and claiming of these tokens. The backend API updates proofs of the user's entitlement to Incentive tokens every 24 hours. This eligibility never expires.
  5. A user (Booster) wanting to claim their Incentive token rewards retrieves this proof and claims their incentive token rewards through the BGTIncentiveDistributor contract. All proof handling is done by interacting with Berachain Hub.

Incentives & Users

As an overview, Incentives involve 3 different parties:

UserDescription & Motivation
BoosterAny user that boosts a validator with $BGT to increase a validator's $BGT emissions to capture more Incentives from Reward Vaults, so that the Booster can take a portion of those Incentives.
ValidatorA node in the Active Set that directs $BGT emissions to different Reward Vaults defined by their Reward Allocation distribution, captures Incentives from Reward Vaults, and takes a percentage (Commission Rate) of the Incentives captured.
ProtocolAn entity, group, or organization that offers Incentive tokens for their respective Reward Vault with the goal of capturing $BGT emissions for their protocol and/or users.

Incentive Mechanics

Behind Incentives, there are additional mechanics to consider beyond the high-level overview of how distribution works.

Whitelisting Incentive Tokens

Only Whitelisted Reward Vaults can offer Incentives. A governance process must whitelist each Incentive Token, where the proposer needs to specify both the Token and a Token Manager.

A Reward Vault can have up to (2) two unique Incentive Tokens whitelisted. Adding or replacing a token requires passing a governance proposal.

Incentive Token Managers

Only Incentive Token Managers of a Reward Vault can offer Incentives. One wallet address is responsible for offering an Incentive Token. The same wallet address can be set as a Token Manager for multiple Incentive Tokens.

A Governance proposal will specify a Token Managers when proposing an Incentive Token. Changing a Token or Token Manager requires passing a governance proposal.

Offering Incentives

A Reward Vault can offer up to (2) Incentive Tokens simultaneously. The offered token cannot be reverted or taken back.

The Incentive Token Manager must define an Incentive Rate when initially offering the Incentive Token and cannot decrease or reset it until the supply of the Incentive Token offered has been exhausted by validators directing $BGT emissions. While defining an Incentive Rate, a Token Manager can increase that rate. When the supply of the Incentive Token offered is exhausted, a Token Manager can set a new Incentive Rate.

Incentives can be calculated with the following formulas:

rateDelta=(newIncentiveRatePerBGTexistingIncentiveRatePerBGT)newIncentiveAmount=(existingIncentiveAmount×rateDelta)existingIncentiveRatePerBGT

Key takeways are that Token Managers:

  • ✅ Can increase the Incentive Amount by any number, keeping the same Incentive Rate.
  • ✅ Can increase the Incentive Rate provided that the Incentive Amount increases based on the formulas below.
  • ✅ Can set a new Incentive Rate (including lower) when the Incentive Amount has been fully captured.
  • ❌ Cannot decrease the Incentive Rate when an existing Incentive Rate has been defined.
  • ❌ Cannot have the Incentive Amount returned.

Example 1 - Increase Incentive Rate:

This scenario is where the Reward Vault has an existing Incentive Amount and Incentive Rate and the Token Manager wants to increase the Incentive Rate from 20 to 30/$BGT:

Reward Vault Incentive TokenExisting Incentive AmountExisting Incentive Rate Per $BGT
$USDC1,00020 (20 $USDC per 1 $BGT directed towards Reward Vault)

Using the formulas:

10rateDelta=30newIncentiveRatePerBGT20existingIncentiveRatePerBGT500newIncentiveAmount=(1000existingIncentiveAmount×10rateDelta)20existingIncentiveRatePerBGT

An Incentive Manager would need to send the following to change their Incentive Rate:

WARNING

If the Incentive Amount added is lower than the required amount, the Incentive Rate will default to the existingIncentiveRatePerBGT (20/$BGT).

TypeValue
Required Incentive Amount To Increase500 $USDC
New Incentive Rate30/$BGT

Example 2 - Increase Incentive Amount:

This scenario is where the Reward Vault has an existing Incentive Amount and Incentive Rate and the Token Manager has an Incentive Amount in mind but would like to know the minimum and maximim Incentive Rates they could set with 5,000 $USDC.

Reward Vault Incentive TokenExisting Incentive AmountExisting Incentive Rate Per $BGT
$USDC2,00010 (10 $USDC per 1 $BGT directed towards Reward Vault)

To calculate the highest Incentive Rate using the formulas:

5000newIncentiveAmount=(2000existingIncentiveAmount×(newIncentiveRatePerBGT10existingIncentiveRatePerBGT))10existingIncentiveRatePerBGT50000=2000existingIncentiveAmount×(newIncentiveRatePerBGT10existingIncentiveRatePerBGT)25=newIncentiveRatePerBGT10existingIncentiveRatePerBGT35=newIncentiveRatePerBGT

WARNING

If the if the Incentive rate is set lower than the Lowest Incentive Rate or higher than the Highest Incentive Rate, it will default to the existingIncentiveRatePerBGT (10/$BGT).

With an additional 5,000 a Token Manager can choose any Incentive Rate between 10-35.

OptionIncentive Amount To AddIncentive Rate Option
Lowest Incentive Rate5,00010/$BGT
Highest Incentive Rate5,00035/$BGT

Incentive Commission and Distribution

Each validator can set a percentage that they take as a commission of all Incentive Tokens received for directing $BGT emissions to different Reward Vaults offering Incentives. Every time $BGT block rewards are distributed, the validator will receive their commission rate of Incentive Tokens.

Example:

Reward Vault Incentive TokenSupplyIncentive Rate Per $BGT
$USDC100100 (100 $USDC per 1 $BGT directed towards Reward Vault)

Validator A has an Incentive Commission of 5% and directs 1 $BGT of emissions towards the Reward Vault.

From 100 $USDC, the validator would get 5 $USDC, based on their commission, leaving 95 $USDC for anyone who boosted the validator, which can include themselves. The amount of Incentive Tokens distributed to each booster is based on that booster's proportion among the total $BGT boosting that validator.

Party$BGT Boost To Val A% of Total BoostTotal Incentive Token Rewards
Validator A20 $BGT25%.05 ⨉100 + .25 ⨉95 = 28.75 $USDC
Manny40 $BGT50%.5 ⨉ 95 = 47.50 $USDC
Cami10 $BGT12.5%.125 ⨉ 95 = 11.875 $USDC
Jintao10 $BGT12.5%.125 ⨉ 95 = 11.875 $USDC

A validator can change their commission percentage by first queuing the rate to notify users of the upcoming change, waiting 16,382 blocks, and then anyone may activate the new rate for the validator.