Here's a breakdown on how winners are selected for our XP Store raffles.
1) We Fetch the raffle entries ordered by date ascending and store them in an array.
2) We get the current (latest) Ethereum block hash and use it as a seed.
3) We get a random integer with a range from 0 to (array length - 1).
4) We use that number as the index of the entries array and select the winner.
5) If more winners are required for the raffle, we remove all of the current winner's entries from the entries array as to not select the same winner twice.
6) We repeat the process until we have the required number of winners
You can see the winners of every raffles as well as the wallets that have participated here: