Weryfikacja losowania · Porsche 911 GT3 RS
Przed losowaniem publikujemy kryptograficzne zobowiązanie do tajnego seeda serwera. W chwili losowania seed zostaje ujawniony razem z publicznym hashem bloku Bitcoina, a zwycięzca jest czystą funkcją obu wartości — po upublicznieniu poniższego zobowiązania niczego w wyniku nie da się już zmienić.
Zatwierdzony hash seeda
Data losowania
Losy w losowaniu
Zobowiązanie
Generujemy tajny 32-bajtowy seed serwera i przed losowaniem publikujemy jego hash SHA-256 (powyżej). Sam seed pozostaje zapieczętowany — ale hash go blokuje: każda zmiana seeda zmieniłaby hash.
Ujawnienie + Bitcoin
W chwili losowania ujawniamy seed serwera i bierzemy hash publicznego bloku Bitcoina wykopanego po zamrożeniu listy losów. Nikt — łącznie z nami — nie może wybrać ani przewidzieć przyszłego hasha bloku.
HMAC → zwycięski indeks
Obie wartości łączymy funkcją HMAC-SHA-256 (klucz = seed serwera, wiadomość = hash bloku). Ten skrót, wzięty modulo łączna liczba losów, daje zwycięski indeks.
Indeks → los
Losy ułożone są w kolejności wydania; losy każdego zamówienia zajmują ciągły zakres. Wygrywa zakres zawierający zwycięski indeks.
Po losowaniu ta strona pokazuje każdą wartość wejściową — ujawniony seed, hash bloku i łączną liczbę losów — więc każdy może przeliczyć wynik od zera.