Skip to content

Bribe Mechanics

Bribes in Berachain are from the validator to their BGT delegators. This is a mechanic that allows validators to differentiate themselves from the rest, beyond normal metrics like uptime.

Bribe Mechanics

  • Bribes must be set before the epoch starts
  • Bribes can be set for any future epoch
  • Validators set the number of block proposals they are bribing with for the epoch
  • The amount of coins specified in a bribe is per proposal

Creating Bribes

Option 1: Precompile Contracts

Bribes can be set by sending a transaction to the Distribution Precompile Contract.

In order to create a bribe, call the create-bribe:

shell
cast send $BribePrecompile "createBribe(address,uint64,uint64,(uint256,string)[])"
 <operator> <start-epoch> <num-block-proposals> 
 <bribe-per-proposal>
cast send $BribePrecompile "createBribe(address,uint64,uint64,(uint256,string)[])"
 <operator> <start-epoch> <num-block-proposals> 
 <bribe-per-proposal>
  • BribePrecompile is the Bribe Precompile address (Precompiles Addresses)
  • The function signature can be checked at here
  • operator: The operator address of the validator you are creating a bribe for
  • start-epoch: Which epoch you'd like to start emitting this bribe
  • num-block-proposal: How many total block proposals you would like this bribe to run for
  • bribe-per-proposal: A coin struct denoting which token & in what quantity you want that token to be emitted per block proposal
    • This is a comma separated array in the following format: [(<amount>,<denom>),(<amount 2>,<denom 2>),...(<amount n>,<denom n>)]. You can insert any number of tokens from 1 to n.

Example:

shell
cast send 0xFCE07324E0E72E071842374E9997CF65DF990CBC "createBribe(address,uint64,uint64,(uint256,string)[])" $OPERATOR $BRIBE_EPOCH 10000 "[(0.1ether,"stgusdc"),(0.1ether,"ahoney")]" --private-key=$PK --rpc-url=$RPC
cast send 0xFCE07324E0E72E071842374E9997CF65DF990CBC "createBribe(address,uint64,uint64,(uint256,string)[])" $OPERATOR $BRIBE_EPOCH 10000 "[(0.1ether,"stgusdc"),(0.1ether,"ahoney")]" --private-key=$PK --rpc-url=$RPC

Option 2: Web - BGT Station

Bribes can also be set from the web in BGT Station.

TIP

This requires that the validator key is the same one used in your web wallet

Going through the create a bribe flow, you can select the:

  • Epoch
  • Number of proposals
  • Any number of tokens
  • How many tokens are distributed across all delegators per proposal

Bribe page