M README.md => README.md +35 -23
@@ 6,47 6,59 @@ This is still a proof of concept
lotte needs `guile` and `guile-gcrypt`
## Usage:
-Create a file like below, let's call it `example.txt`, bracketed text are
-comments. No trailing spaces anywhere please. :)
+To start a lottery, run
```
-shironeko's 1st Test Lottery (Name needs to be differen each time)
-42 (This is the lucky number, don't reveal it until the end, bigger is probably better)
+./lotte-cli.scm some-name
```
-Then 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
+your lottery.
```
-cat example.txt | ./lotte.scm
+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 output shows your sealed lucky number, post it along with your announcement
-to prove you didn't change the lucky number afterwards, you need to save the
-key somewhere for that.
+The generated file should look like this
```
-Your sealed lucky number is: 1617e076355f986242d59e15e51425c7fdee4b1c3227c9bfb0718f137a7af987
-The key is: 31d3b2bd349f49c82c273fde55af55ac7ee1d8fbca49fd46857b639eb735a5d3 (reveal this at the end)
+shironeko's 1st Test Lottery
+42
+2
+8KwDCd16chFZUw0YWmSOpEWYNqco3YKb2wXt8-nJdDE=
```
-Then add users one by one like so
+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
-@someone
+somebody@school
idon't really know this guy
-a🐈️
+🐈️🐈️🐈️🐈️🐈️🐈️🐈️🐈️
```
-and run the same command again
+To draw the winners, run
```
-cat example.txt | ./lotte.scm
+./lotte-cli.scm some-name.txt
```
-lotte should output the winner along with their score.
+lotte should output the winner, their score, and all the other info you need to
+post.
```
-The winner is: myself
-Their score is: 001b6c8ebff639c529feea5115754b56c1b2f29e201f35f5c718a1efdff6f4a8
+The winners are:
+myself score: 001b6c8ebff639c529feea5115754b56c1b2f29e201f35f5c718a1efdff6f4a8
+🐈️🐈️🐈️🐈️🐈️🐈️🐈️🐈️ score: 0502b2bc4e4e79f3cdbe530be27608d2becd2b0d5bc21f166ddc59a40945d835
+The lucky number is: 42
+The MAC key is: 8KwDCd16chFZUw0YWmSOpEWYNqco3YKb2wXt8-nJdDE=
```
-Don't forget to tell everyone the lottery name and the lucky number you used in
-the file and the key saved from before when you announce the winner. other
-users can use those to calculate their own score, and they can verifiy that
-nothing fishy (heh) is going on.
+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)
```
# License
M example.txt => example.txt +1 -1
@@ 1,7 1,7 @@
shironeko's 1st Test Lottery
42
2
-jJJ7QZXuaaFrsPGz1H4Gcua7v2qd5I1SOkn_uaxr5pU=
+8KwDCd16chFZUw0YWmSOpEWYNqco3YKb2wXt8-nJdDE=
myself
somebody@school
idon't really know this guy
M lotte-cli.scm => lotte-cli.scm +1 -0
@@ 81,4 81,5 @@
(let ((winners (lotte lotte-name lucky-num num-of-winners users)))
(display "The winners are:\n")
(print-winners winners)
+ (format #t "The lucky number is: ~A\n" lucky-num-str)
(format #t "The MAC key is: ~A\n" mac-key))))))