Ziehungen mit Nachweis
Drei Werkzeuge für Verlosungen, bei denen jemand nachher fragt, ob fair gezogen wurde. Das Ergebnis folgt zwingend aus Teilnehmerliste und Seed — wer beides hat, rechnet dasselbe nach, auf jedem Gerät und ohne uns vertrauen zu müssen.
- Losentscheid mit NachweisVerlosung, die jeder nachrechnen kann: Versiegelung vorab veröffentlichen, Seed nach Anmeldeschluss zeigen. Mit Protokoll zum Kopieren.
- Gewichtete ZiehungVerlosung mit unterschiedlich vielen Losen je Teilnehmer. Jedes Los bekommt einen eigenen Losbon, der beste zählt — und bleibt nachrechenbar.
- Ziehung nachrechnenPrüfe eine Ziehung nach: Teilnehmerliste und Seed einsetzen und sehen, ob dieselbe Versiegelung und derselbe Gewinner herauskommen.
Wie der Losentscheid rechnet
Die Teilnehmerliste wird zeilenweise bereinigt und nach Unicode-Codepoints sortiert. Die Eingabereihenfolge ist damit egal.
Listen-Hash = SHA-256 der sortierten, mit Zeilenumbrüchen verbundenen Liste. Bei gewichteten Ziehungen steht die Losanzahl mit Tabulator hinter dem Namen.
Versiegelung = SHA-256 aus Listen-Hash, Nullbyte und Seed.
Losbon = SHA-256 aus Seed, Nullbyte, Position, Nullbyte, Name. Bei Gewichtung erhält jedes Los einen eigenen Bon mit angehängter Losnummer; der niedrigste zählt.
Aufsteigend nach Losbon sortiert. Die vordersten gewinnen, der Rest ist die Warteliste in Reihenfolge.
Seed aus externer Quelle
Am stärksten wird der Nachweis, wenn der Seed zum Zeitpunkt der Versiegelung noch niemand kennt — auch du nicht. Geeignet sind öffentliche Zukunftswerte: die Swisslos-Ziehung vom Freitag, der Hash eines Bitcoin-Blocks, der Schlusskurs eines Index.
Du legst die Quelle vorab fest, veröffentlichst die Versiegelung, und trägst den Wert nach Bekanntgabe ein. Die Seite ruft nichts ab; der Wert wird von Hand eingesetzt, damit sie ohne Netz und ohne Vertrauen in einen Server funktioniert.
Zufall in den übrigen Werkzeugen
Alle Ziehungen ohne Nachweis nutzen den kryptografischen Zufallsgenerator des Browsers mit Verwerfungsmethode, damit etwa ein 100er-Bereich nicht die tiefen Zahlen bevorzugt. Gemischt wird mit Fisher-Yates.
Alles läuft lokal, es wird nichts hochgeladen und nichts gespeichert.