How to determine winners?
Our winner selection algorithm call to Chainlink VRF to get random numbers and then pick the winners and make sure two things:
The more ticket players have, the more chance to win
Players have more tickets get higher chance to win larger prize.
There must be at least one winner in a round. It can adjust to add up to 3 winners.
Ratio of prizes of winners in the Prize Pool are adjustable parameters in the smart contract in each round. E.g., 1st prize: 50%, 2nd prize: 30%, 3rd prize: 20%
Remember that in the example above, the chance to win bigger prize depends on the number of tickets of player. They are not the same chances. So, get more tickets by depositing/holding tokens is the best way to win the big prize.
How deposited tokens are used?
This is how tokens are used in a round:
Award prize to winners: 80% (*)
Transfer to Charity wallet: 1% (**)
We periodically buy BNB and then transfer to Binance Charity wallet as describe in Architect and Money Flow.
Transfer to Operation wallet to maintain the game: 19% (***)
This wallet is used for:
Buy LINK token and then add funds to Upkeep in Chainlink Keepers and Chainlink VRF Subscription.
The redundant EXOTICSY tokens (if there is any based on estimated usage from previous rounds) will be burned to reduce the total supply.
(*), (**), (***): adjustable parameters in each round.
(*) Minimum: 80%
Fully Automatic System
Chainlink Keepers is used as the solution to make lottery game can run endlessly.
Basically, Lottery Smart Contract is keeper-compatible.
Upkeep in Chainlink Keepers on the Mainnet:
“performUpkeep” function in Lottery Smart Contract is designed to:
Change state of a round: Start -> Active -> End
Round state is Start: proceed to transfer tokens from Auto Pool to Lottery Pool based on settings in Auto Pool of players.
Round state is End:
Recalculate tickets of players, reset Hold Tickets to zero if they do not hold enough token as recognized in the first deposit.
Call to to get randomness numbers
Find winners based on random numbers
Reward the prize winners
Initialize new round