Skip to content

Token Staking (WIP)

Token Flows

(1) Forward Token Flow:

  1. Stake
  2. Allocate
  3. Start Receiving Rewards
  4. Claim Rewards

(2) Backwards Token Flow:

  1. Deallocate
  2. Unstake
  3. Wait for unstaking cooldown to finish d. Claim unstaked $sOOGA (in OOGA)

1. Forward Token Flow

  1. Users can stake their OOGA into $sOOGA, $sOOGA gives you the right to allocate it to certain modules. E.g. the Rewards Module (right now there is only the Rewards Module).
  2. Users can allocate their $sOOGA into the Rewards Module
  3. Users will start receiving rewards as soon as they allocate their $sOOGA into the Rewards Module in real time.
  4. Users can claim their rewards in OOGA as soon as they receive their rewards in real time.

2. Backwards Token Flow

  1. Users can deallocate their $sOOGA from the Rewards Module for no fee.
  2. Users can unstake their $sOOGA into $sOOGA through a cooldown process.
  3. Users need to wait for their selected cooldown to finish before being able to claim their OOGA
  4. Users can claim their OOGA.

Cooldown Process

On bArtio, the minimum lock and the maximum lock is set to 3 days and 7 days respectively. On mainnet, these minimum and maximums will be different. If the lock is set to the minimum, then only 50% of the $sOOGA will be unstaked into OOGA. If the lock is set to the maximum, then 100% of the $sOOGA will be unstaked into OOGA. Anything in between is scaled linearly and adjusted proportionally to the lock set.

APY

The rewards module is configured to distribute a percentage of its pending rewards in each cycle. On the bArtio network it is set at 1% each cycle. This means that the APY of a user's investment can greatly fluctuate based on certain factors such as: additional rewards being added to the pending amount, how much a user's allocation weighs in the total allocation and rewards distribution percentage changes. In order to understand it better lets look at a simulation

OogaRewards Distribution Scenario: Cycle-by-Cycle Breakdown

Initial Setup

  • Total Pending Rewards: 1,000,000 $OOGA
  • Cycle Duration: 7 days
  • Initial Cycle Rewards Percent: 1% (10,000 $OOGA distributed per cycle initially)
  • Total Initial Allocation: 400 $sOOGA
  • Users: A, B, C, D (each with 100 $sOOGA initially)

Cycle 1: Initial State

UserAllocationShareCycle RewardsTotal Unclaimed
A100 $sOOGA25%2,5002,500
B100 $sOOGA25%2,5002,500
C100 $sOOGA25%2,5002,500
D100 $sOOGA25%2,5002,500
  • Total Distributed: 10,000
  • Remaining Pending: 990,000

Cycle 2: User A increases allocation to 200 $sOOGA

UserAllocationShareCycle RewardsTotal Unclaimed
A200 $sOOGA40%3,9606,460
B100 $sOOGA20%1,9804,480
C100 $sOOGA20%1,9804,480
D100 $sOOGA20%1,9804,480
  • Total Distributed: 19,900
  • Remaining Pending: 980,100
  • New Total Allocation: 500 $sOOGA

Cycle 3: User B decreases allocation to 50 $sOOGA

UserAllocationShareCycle RewardsTotal Unclaimed
A200 $sOOGA44.4%4,35610,816
B50 $sOOGA11.1%1,0895,569
C100 $sOOGA22.2%2,1786,658
D100 $sOOGA22.2%2,1786,658
  • Total Distributed: 29,701
  • Remaining Pending: 970,299
  • New Total Allocation: 450 $sOOGA

Cycle 4: 500,000 $OOGA added to pending rewards

UserAllocationShareCycle RewardsTotal Unclaimed
A200 $sOOGA44.4%6,52417,340
B50 $sOOGA11.1%1,6317,200
C100 $sOOGA22.2%3,2629,920
D100 $sOOGA22.2%3,2629,920
  • Total Distributed: 44,380
  • Remaining Pending: 1,455,619

Cycle 5: User C harvests their rewards

UserAllocationShareCycle RewardsTotal UnclaimedNotes
A200 $sOOGA44.4%6,45823,798
B50 $sOOGA11.1%1,6158,815
C100 $sOOGA22.2%3,2290Harvested 13,149
D100 $sOOGA22.2%3,22913,149
  • Total Distributed: 58,911
  • Remaining Pending: 1,441,089

Cycle 6: No changes in allocation

UserAllocationShareCycle RewardsTotal UnclaimedNotes
A200 $sOOGA44.4%6,39430,192
B50 $sOOGA11.1%1,59810,413
C100 $sOOGA22.2%3,1973,197New accumulation
D100 $sOOGA22.2%3,19716,346
  • Total Distributed: 73,297
  • Remaining Pending: 1,426,703

Cycle 7: 1,000,000 $OOGA added to pending rewards, Rewards Percent changes from 1% to 10%

New Total Pending Rewards: 1,426,703 + 1,000,000 = 2,426,703 Distributed this cycle: 242,670 (10% of 2,426,703)

UserAllocationShareCycle RewardsTotal UnclaimedNotes
A200 $sOOGA44.4%107,742137,934
B50 $sOOGA11.1%26,93637,349
C100 $sOOGA22.2%53,87157,068
D100 $sOOGA22.2%53,87170,217
  • Total Distributed: 315,967
  • Remaining Pending: 2,184,033

Cycle 8: No changes

Distributed this cycle: 218,403 (10% of 2,184,033)

UserAllocationShareCycle RewardsTotal UnclaimedNotes
A200 $sOOGA44.4%96,957234,891
B50 $sOOGA11.1%24,23961,588
C100 $sOOGA22.2%48,478105,546
D100 $sOOGA22.2%48,478118,695
  • Total Distributed: 534,370
  • Remaining Pending: 1,965,630

Cycle 9: No changes

Distributed this cycle: 196,563 (10% of 1,965,630)

UserAllocationShareCycle RewardsTotal UnclaimedNotes
A200 $sOOGA44.4%87,250322,141
B50 $sOOGA11.1%21,81383,401
C100 $sOOGA22.2%43,625149,171
D100 $sOOGA22.2%43,625162,320
  • Total Distributed: 730,933
  • Remaining Pending: 1,769,067

Observations

  1. Fairness: Rewards are always distributed proportionally to each user's share of the total allocation, regardless of when users join, leave or change their allocations.

  2. There is not particular strategy that works better than the other: The best strategy a user can implement is try to stake as much $sOOGA as possible in order to increase their distributed rewards share

  3. Summary: These scenarios illustrate various situations in the OogaRewards staking program, demonstrating

  • How user APY can fluctuate due to allocation changes, reward additions, and distribution rate adjustments
  • The contract's adaptability to changing conditions and parameters
  • Fair and proportional reward distribution regardless of user actions or timing

While these examples use a small scale for clarity, in real-world implementations with thousands of users, individual APY volatility would likely be less pronounced. These scenarios provide insights into the system's behavior and potential outcomes for staking participants.