This is still a proof of concept
To start a lottery, run
This will create a text file called
some-name.txt with the info you are about
to provide (if you didn't give it a name, it will create one with a random
name). Fill them in like below, and it should tell you want you need to post in
Enter the name of your lottery (needs to be unique each time): shironeko's 1st Test Lottery Enter your lucky number: 42 Enter the number of winners: 2 The info you need to post: shironeko's 1st Test Lottery Lucky number's MAC: rYIpZz6lb4OmdGXWAWCpS39cSgCpk5El1ep-b0JGtDs= Number of Winners: 2
The generated file should look like this
shironeko's 1st Test Lottery 42 2 8KwDCd16chFZUw0YWmSOpEWYNqco3YKb2wXt8-nJdDE=
Then add users one by one like so, make sure to not have any trailing spaces
shironeko's 1st Test Lottery 42 2 8KwDCd16chFZUw0YWmSOpEWYNqco3YKb2wXt8-nJdDE= myself somebody@school idon't really know this guy 🐈️🐈️🐈️🐈️🐈️🐈️🐈️🐈️
To draw the winners, run
lotte should output the winner, their score, and all the other info you need to post.
The winners are: myself score: 001b6c8ebff639c529feea5115754b56c1b2f29e201f35f5c718a1efdff6f4a8 🐈️🐈️🐈️🐈️🐈️🐈️🐈️🐈️ score: 0502b2bc4e4e79f3cdbe530be27608d2becd2b0d5bc21f166ddc59a40945d835 The lucky number is: 42 The MAC key is: 8KwDCd16chFZUw0YWmSOpEWYNqco3YKb2wXt8-nJdDE=
Participants can use those to calculate their own score, and they can verifiy that nothing fishy (heh) is going on (lowest score wins).
score = min(sha256(1 <lottery name> <username>),...,sha256(<lucky number> <lottery name> <username>)) mac = hmac-sha256(mac-key, lucky-number-str)
lotte: The Fair Lottery Program Copyright 2020 shironeko This file is part of lotte. lotte is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. lotte is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with lotte. If not, see <https://www.gnu.org/licenses/>.