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) 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.
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.
- 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.
- 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.
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).
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
- 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