Zaufanie i bezpieczeństwo4 min czytaniaZaktualizowano 05 kwietnia 2026

Losowania provably fair

Commit-and-reveal, kotwiczenie w blockchainie EOS i jak zweryfikować wynik.

Każde losowanie Skincash jest przeprowadzane według schematu, który każdy może niezależnie zweryfikować po fakcie. Nikt w Skincash — łącznie z zespołem — nie jest w stanie przewidzieć ani zmanipulować wyniku.

Przed losowaniem: commit

Tworząc losowanie, generujemy losowy 256-bitowy server seed. Nie publikujemy samego seeda — publikujemy tylko jego hash SHA-256. Ten hash to commit i jest zamrażany w bazie danych w chwili, gdy losowanie startuje. Ponieważ SHA-256 jest funkcją jednokierunkową, znajomość hasha nie pozwala nikomu zgadnąć seeda.

Zewnętrzna entropia: blok EOS

W momencie losowania nasz cron worker pobiera z blockchaina EOS najnowszy nieodwracalny blok i zapisuje jego hash. Bloki EOS są produkowane co pół sekundy przez niezależną sieć, więc hash bloku w dowolnym przyszłym momencie jest nieprzewidywalny w chwili commita. Oznacza to, że nawet Skincash nie może wpłynąć na losowanie.

Reveal i losowanie

Zwycięski los obliczany jest jako: winningTicket = (BigInt(sha256(serverSeed + publicSeed + eosBlockId)) mod BigInt(totalTickets)) + 1. Po losowaniu publikujemy server seed wraz z ID bloku, publicznym seedem i liczbą losów, dzięki czemu każdy może odtworzyć hash i potwierdzić zwycięski los.

js
const crypto = require('crypto');

// Published data (visible on the giveaway card)
const serverSeed   = '<revealed after draw>';
const publicSeed   = '<published at draw>';
const eosBlockId   = '<EOS block hash at draw time>';
const totalTickets = <total sold>;

const hash = crypto
  .createHash('sha256')
  .update(serverSeed + publicSeed + eosBlockId)
  .digest('hex');

const winning =
  (BigInt('0x' + hash) % BigInt(totalTickets)) + 1n;
console.log('Winning ticket:', winning.toString());

Jak zweryfikować

Na karcie dowolnego zakończonego losowania kliknij Zweryfikuj uczciwość. Modal pokazuje wszystkie cztery wejścia, uruchamia po stronie klienta SHA-256, by udowodnić, że para commit-reveal jest prawidłowa, i udostępnia gotowy do skopiowania snippet, który możesz uruchomić w Node lub w konsoli przeglądarki, aby lokalnie odtworzyć zwycięski los.

Czy ten artykuł był pomocny?
Twoja opinia pomaga nam ulepszać Centrum Pomocy.

Więcej w kategorii Zaufanie i bezpieczeństwo

Potrzebujesz dodatkowej pomocy?

Nasz zespół wsparcia jest online 24/7. Otwórz czat bezpośrednio ze strony, a my zajmiemy się resztą.