Setting Initial Fairness Parameters

The protocol mints users tickets instantly upon deposit. This opens a potential attack vector where users could deposit right before a prize, have a chance to win, and withdraw immediately.

To prevent this, each prize pool has a credit rate and credit limit . The credit rate is the rate at which a user accrues credit, the credit limit defines the minimum required credit to withdraw instantly and losslessly. Together these serve to maintain fairness by setting a minimum deposit period.

Users can withdraw instantly before the credit limit is reached but they must either 1) timelock their funds until their credit limit is reached or 2) pay an early exit fee that goes to the prize.

The question of this post is, what should the credit rate and credit limit for a pool be?

In principal, we want the credit limit to be as low as possible. We are trying to prevent abuse of the system by a small subset of users while keeping the smoothest experience for the majority of users.

At first glance the credit limit should simply be equal to the amount of interest a deposit would contribute over a prize period. But there are several factors that can change the cost / benefit balance for depositors, specifically:

  • Any subsidies to the prize (whether through sponsored deposits or direct additions)
  • Any rewards given to deposits through the token drips
  • Fluctuations in the yield rate
  • Amount of tickets for a given prize
  • Gas fees of entering and exiting the pool

To find the ideal credit limit it is best to estimate the effective apr a pool is offering.


Assume a pool has 100,000 tickets sold and its yield source is returning 5% APR, that would infer a $96 weekly prize. It means over the course of 7 days, one ticket (equaling 1 dollar deposited) contributes $0.0009 to the prize and over the course of one day contributes $0.00012 to the prize.

In this situation, a credit limit should be set to $0.0009 and the credit rate and the credit rate set to $0.00012.

But this pool also has a $1,000 weekly prize subsidy. So the actual prize is $1,096 per week. That would mean the effective APR is 57%! If the credit rate and limit were set to the above it could be very profitably gamed. At 57% APR one ticket (equaling 1 dollar deposited) effectively represents $0.01 to the prize and over the course a week and $0.0015 to the prize each day.

Therefore the credit rate and credit limit need to at minimum be matched to these rates.


The example illustrates how just one factor can impact the effective APR a pool is generating. Given this, I would propose setting the initial credit limit / fairness fee for a 7 day prize period to 0.5% and the daily credit rate to 0.05%.


Updated 10/27/20
Due to 1) the popularity of external rewards and 2) the relatively small current amount of capital deposited, we need to revisit the fairness parameters.

The total current value of the prize is $6,700 and currently there are 425,000 tickets. That means, it’s as if the the yield source is yielding an APR of 77%! Or, expressed another way, it’s as if each ticket is contributing $0.015 per prize period.

This means the minimum exit fee used should be at least equal to 1.5%. But that really would likely still be too low because the exit fee decays over time. In this situation we will want the exit fee to decay quite slowly. Specifically because the APR on deposited money is only about 5% so it will take a long time for a deposit to contribute the effective APR.

Example with numbers:

Assuming current stats stay constant, a user could deposit $1,000,000 right before the prize and have a 69% chance of winning. If the exit fee is 1.5% and they try to exit that is a fee of $15,000 which works. However, let’s say they simply stay in for one week, the exit fee goes to zero. Now this user can withdraw without a penalty, has a chance to win another prize and has only contributed $961 to the prize!! So this is quite gameable.

There are two solutions here 1) we need to slow the credit rate 2) we need to try and grow the total number of tickets.

Slowing the credit rate so that it takes 21 days to reach the credit limit should be okay. That means after one week withdrawing $1 million would still incur an early exit fee of $10,000.

The other solution here is growing the size of the pool. Once there are more tickets in this pool, it will lower the effective APR and make attacks like this unprofitable.


This could be implemented with my idea in this post

that new players start with 0% and then get their percentage up

Yours sincerely,

Richard Jansma
Empowering the vision and possibilities of everyone and anything &
ETH: 0xa9196E531aE237B3edFE0B10299932CfD5dd494B
Opensea: RichardJansma