Comment on page

User's odds

So, how are the odds calculated, and how is the winner chosen? We need to understand two basic parameters - TWAB & PICKS - to answer these questions.

TWAB, Time-Weighted Average Balance

The first thing that comes to mind when determining the odds of winning is the deposit size, isn't it? Yes and no.
Since the protocol accumulates yield over time, a fundamental metric is the time the user's stETH has been in the pool and how much yield it has generated for the protocol. Otherwise, a crypto whale could cheat by entering the protocol at the last minute with a big deposit, receive huge odds, and "steal" yields from small users.
Therefore, the first indicator that affects the odds is TWAB (time-weighted average balance). This indicator displays the user's contribution to the pool's total yield generated between draws.
Let's check the following exaggerated example. Assume that there are only 2 users in the protocol and the Total Time between draws is 7 days (100% of the time).
User 1 kept his 100 stETH for the full 7 days (100% of the time). His TWAB is (100 stETH x 1.00) = 100 User 2 kept his 1,000 stETH for only 1 day (14.285714285714% of the time). His TWAB is (1,000 stETH x 0.14285714285714) = 142,8571428571
Total TWAB is 100 + 142,8571428571 = 242,8571428571 User 1 TWAB is 100 (or 41,1764705882% from the Total TWAB) User 2 TWAB is 142,8571428571 (or 58,8235294118% from the Total TWAB)


You can think of picks as the number of tickets you hold. Each user has a certain number of Picks, and every pick in the draw takes part in the process of selecting the winner.
But first, we have to determine the Total Picks. Total Picks is defined as Total TWAB / Minimum Deposit. In our case, it is 242,8571428571 / 0.1 stETH = 2,428 picks (we discard any decimal).
So, how many Picks will each user get in the example above? That's where the TWAB comes into play.
User 1 will get 2,428 x 41,1764705882% = 999 picks (we discard any decimal)
User 2 will get 2,428 x 58,8235294118% = 1,428 picks (we discard any decimal)

Participants list for draw

Now, when we have a number of picks for each user, the Asymetrix creates the list for the draw. It looks as follows:
1. [address of User 1] 2. [address of User 1] 3. [address of User 1] 4. [address of User 1] .... Address of User 1 repeats 999 times total.... 1000. [address of User 2] 1001. [address of User 2] 1002. [address of User 2] 1003. [address of User 2] .... Address of User 1 repeats 1,428 times total....
Total 2,428 lines (picks)
As the next step, the list of all participating tickets (PICKS LIST) is hashed to generate a unique ID for the request. A request is then sent to Chainlink VRF to generate a random numbers. Chainlink VRF generates random numbers, which can range up to 2^256 possible values. To ensure the result falls within the range required for the number of participating tickets, a modulo function is applied to the results.
Once there are random numbers within the required range, it is matched with the content of the relevant PICKS LIST to determine a winner. Winners are determined based on the randomly generated numbers by Chainlink VFR that fall within the valid range, providing a fair and equal odds for each ticket.
Detailed information for each draw is available on a separate page, allowing users to ensure that the draw is fair, transparent, and fully traceable.
The bottom line is that both parameters affect your odds: the size of the user deposit and the time deposit was in the protocol. Asymetrix protocol dynamically calculates odds for all users.