There are 3 core contracts that make up the Infinite Lottery ecosystem.
- InfiniteLottery - Main lottery logic and weekly lottery logic
- WinnerHub - Only winner claim logic
- DiscountBooth - Only discount buy logic
A brief diagram of this is:
Short answer, it's easier to keep track of different values and makes it simpler for community users to keep tabs on where the money is. Also testing becomes less tedious since the logic is fairly spread out.
The code is all written in solidity and uses the already battle tested libraries from OpenZeppelin as well as the VRF from Chainlink.
Due to the reliance on Chainlink to receive random numbers, that means we're restricted to proper operation on Chainlink supported networks.
The only workaround at the moment is for us to deploy our own random number logic, which would work, but it would not be decentralized enough for anyone to make sure that the winning users were not handpicked. Mainly because the logic in the contract is discreet and with a particular number we can select specific winners.
