Brokkr
Search…
⌃K

Staking

Staking $BRO tokens is the easiest way to invest into DeFi. As each $BRO token is backed by the Withdrawable capital, and the treasury itself is invested into portfolios, the backing for each $BRO token should rise overtime (disregarding the inflation) consequentially making staking of $BRO token act as investing into DeFi.
Staking $BRO tokens earns the user rewards paid out in $BRO and $bBRO.

Custom Unstaking Period (CUP)

Custom Unstaking Period (CUP) is a novel approach of staking introduced by Brokkr in which the user can select their unstaking period. The minimum and maximum limits for unstaking period are set to be from 14 to 365 epochs (1 epoch equals 1 day).
  • The longer the unstaking period, the more $BRO and $bBRO rewards are received.
  • While unstaking, the user still receives $BRO and $bBRO rewards, but they are reduced.
When staking any amount of $BRO the user can specify any custom CUP within the limit range. While $BRO is staked it can not be transferred to other wallets or sold on the market.
To receive the $BRO back in their wallet, the user needs to unstake, and wait for as many days as their specified CUP. After that period has passed the user can freely withdraw their $BRO tokens. During the unstaking if a user changes their mind they can cancel the unstaking and reinstate the original CUP.
While a user has their $BRO staked, they cannot transfer them to other wallets or sell them on the market.
Example:
Alice has 5000 $BRO in her wallet, and decides to stake 4000 of them. She chooses an unstaking period of 180 epochs (6 months) because she believes in the project and wants to receive more rewards. After 3 months she decides to unstake her 4000 staked $BRO. She still gets lower rewards for 180 epochs, and afterwards she can claim her staked $BRO and receives them back into her wallet.

Epochs

An Epoch is a set period of time on which all the time based functionalities of the DAO are connected to (un/staking, reward distribution, bonding, etc.). One epoch equals 24 hours and a new epoch is advanced every day at 12:00:00 UTC.
A user may consider Epochs similar to days, but DAO has a unified time across the globe for "midnight". Once "midnight" passes the epoch advances to the next epoch and all the connected functionalities with it.

Limitations

  • To not run out of gas, we limit the amount of different unstaking periods a user can have. But a user can still stake more BRO for existing unstaking periods.
Example: if the limit is 2, then Alice could stake 1000 BRO with an unstaking period of 180 epochs, and another 1000 BRO with unstaking period of 365 epochs. Now she wants to stake another 1000 BRO - she can't chose a new unstaking period, but can add it to the existing unstaking periods of 180 or 365 epochs.
  • A user can always increase his unstaking period. I.e. instead of having 1000 BRO with unstaking period of 180 epochs, Alice can increase the period for those 1000 BRO to 365 epochs. However, only the full amounts can be increased, she won't be able to partially increase only 500 BRO of those 1000 BRO with unstaking period of 180 epochs.
We have chosen the Custom Unstaking Period approach as it has a few advantages over the locking period as it:
  • Better distinguishes between short term stakers and long term believers If a user sets a locking period for 1 year they are willing to believe in the project for the next year, as this locking period is coming closer to ending they are less aligned with the long term success of the projects but enjoy the same benefits as newly locked users.
  • Less likely to create random events when a lot of tokens are unlocked at the same time Especially when the protocol launches there might be a lot of users that specify similar time-frames. On Terra most users staked for specific times (1 month, 3 months, 1 year, 2 years). Using CUP reduces the chance that those users will have their tokens unlocked at the same time.
  • Continuous staking without interruptions If you believe in the project you don't have to worry about relocking. Just stake, set your CUP and let it sit in there as long as you wish to.
  • Reduces uncertainty by limiting amount of big unlocks happening If a user with a lot of tokens believes in the project doesn't need to unlock. and locks for the maximum amount they won't get their tokens released (when locking period expires) unless they trigger the unstaking period. This withdrawals can be see on chain.

Rewards calculation

BRO

The amount of $BRO rewards that are distributed to the stakers per epoch is always a fixed number (currently 125,000 $BRO), users that have longer unstaking periods have more weight to their staked $BRO essentially earning more $BRO rewards.
If the user sets a longer unstaking period they receive an increased $BRO reward generation up to a 40% maximum bonus (this is a percentage increase not a total).
The users $BRO gets separated into reward generating $BRO and idle $BRO based on their selected unstaking period. The formula bellow calculates what the ratio of the separation is:
When an epoch ends the rewards are distributed to the users based on the following formula:
This represents the amount of $bBRO generated per $BRO staked for 1 year
The amount of $bBRO rewards that are distributed to the stakers per epoch is dynamic and based on the amount of $BRO staked and at which unstaking periods.
To get rewards per Epoch the yearly reward needs to be divided by the amount of epochs per year (set at 365).
$bBRO rewards are NOT affected by reward generating $BRO. They consider all of the staked $BRO.

Unstaking

For the ease of understaing the Brotocol uses days on it's front end for unstaking period but here is how it works under the hood
After a user triggers an unstaking period they need to pass the same amount of epoch changes as their set CUP to be able to retrieve the tokens from the staking.
The tokens for unstaking are available for the user immediately after they have passed the appropriate amount of epoch advances regardless of the time at which the unstaking was triggered by the user. If a user unstakes at epoch x they will be able to receive $BRO tokens at epoch x+14
Example: Alice has 1000 $BRO in wallet with an custom unstaking period of 14 days. She triggers the unstaking during epoch 1 at 9:34:12 UTC, she will need to wait 14 epoch advances (until epoch 15) to receive $BRO tokens from the staking contract. At 12:00:00 UTC the DAO will already be in epoch 2 which means Alice already passed one epoch advancement so she needs to wait 13 epoch advancements more. This could mean that she has to wait a bit less than 14 days.

Reduction while unstaking

  • The reduction for $bBRO rewards during the unstaking period is 50% of the normal rewards generation (based on the unstaking period)
  • The reduction for $BRO rewards during the unstaking period is a 10% less (based on the unstaking period) staked $BRO is considered as userRewardGenerating$BRO