The system looks ok but is there any way you can assign ticket number when people purchase instead of assigning ticket number at the end of the round finish? I'm not a very technical guy, but this looks much better than the current system which no one can be verified.
It makes no difference to the provable fairness of the system because ticket numbers are assigned before we know the bitcoin block hash so we cannot predict the outcome when the numbers are assigned.
Assigning ticket numbers when people purchase tickets will have a couple of problems:
1). It would require us to store 250 million records in the database which would cause a lot of extra load
2) It will make the verification's file much larger in size (250 million records vs 500,000 now) - 500x bigger. Right now the verification file would be about 14 mb in size but having individual ticket numbers will make the file 7 gb in size so it will be much more difficult for people to download the file and verify the results.
Yes, it will not have any impact on provable fairness. But people buy lottery tickets with so many different numbers to increase their winning chance. But in this method, you're going to assign consecutive numbers to one member, and even though they buy tickets at different timings and day, still they will get consecutive numbers. If you can assign a ticket number when they buy, then they can get many different ticket numbers.
I understand that there is a psychological impact of having different numbers so that users can pick lucky numbers etc. but it is simply not possible to at a reasonable cost at our scale. Maybe someone can do a lottery with a fixed number of tickets and have users pick numbers that they like and it should be ok for lotteries with higher priced but limited tickets but we cannot price tickets higher since we give them out for free mostly and the ticket price is actually added to the lottery prize pool for tickets that are given out for free.