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 forstart-epoch
: Which epoch you'd like to start emitting this bribenum-block-proposal
: How many total block proposals you would like this bribe to run forbribe-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.
- This is a comma separated array in the following format:
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