Distribution Methods
Bullish Social supports four distribution methods to split club rewards among members. Each method corresponds to a different on-chain calculation, as defined in the BSReward smart contract.
🟢 1. Shared
All users receive the same reward amount, regardless of score or rank.
Contract Logic:
Example:
If a club earns 1000 $BUSO and has 5 members, each member gets:
🟡 2. Rank-Based
Users are rewarded based on their leaderboard rank using a reverse-rank weighting system.
Used Functions:
Explanation:
- Each user gets:
reward = rewardPiece × (receiverCount - rank + 1)
Example:
5 users, 1000 $BUSO reward:
| Rank | Volume | Reward |
|---|---|---|
| 1 | 5 | (5 / 15) × 1000 = 333.33 |
| 2 | 4 | = 266.66 |
| 3 | 3 | = 200 |
| 4 | 2 | = 133.33 |
| 5 | 1 | = 66.66 |
🔵 3. Score-Based
Rewards are distributed based on each user's score.
Used Functions:
Explanation:
- Each user gets:
reward = (score / totalScore) × rewardPool
Example:
Scores = [60, 30, 10], total = 100
Reward = 1000 $BUSO
| User | Score | Reward |
|---|---|---|
| A | 60 | 600 |
| B | 30 | 300 |
| C | 10 | 100 |
🟣 4. Balanced
A hybrid method that combines both rank and score, using adjustable weights defined by the DAO.
Used Functions:
Formula:
Example:
Let's say we have a club with 5 members, and the variables are:
- Club's Reward Pool: 1000 $BUSO
- Rank Weight: 40%, Score Weight: 60%
This Club uses the Balanced method to distribute rewards to its members.
| Member | Rank Volume | Rank Reward | Score | Score Reward | Total |
|---|---|---|---|---|---|
| A (1.) | 5 | 133.3 | 50 | 300 | 433.3 |
| B (2.) | 4 | 106.6 | 40 | 240 | 346.6 |
| C (3.) | 3 | 80.0 | 30 | 180 | 260.0 |
| D (4.) | 2 | 53.3 | 20 | 120 | 173.3 |
| E (5.) | 1 | 26.6 | 10 | 60 | 86.6 |
⚙️ The Balanced method used in both individual and club rewards is influenced by two DAO-controlled parameters:
individualScoreWeight: Determines how much of an individual's reward is based on score versus rank.clubScoreWeight: Determines the same for clubs.
For example, if individualScoreWeight is set to 60%, then 60% of the reward is calculated from the user’s score and 40% from their rank. These values can be updated at any time through a DAO proposal.
Where the calculation happens?
These calculations are handled fully on-chain inside the BSReward contract, and depend on real-time snapshot proofs and DAO-configured weights.