Jak funguje provably fair na Rust webech a jak zkontrolovat své losy
Hashe server seedů, client seedy, nonce a HMAC-SHA256 jednoduše, s příkladem, který si můžeš zopakovat, a postupem krok za krokem pro kontrolu jakéhokoli losu na Rust skinovém webu.
Všech deset webů v našem žebříčku uvádí své hry jako provably fair. Ten pojem má přesný význam a kontrola, která za ním stojí, je něco, co můžeš provést sám s bezplatným hashovacím nástrojem nebo pár řádky kódu. Jen velmi málo hráčů ji kdy spustí. Tento návod vysvětluje, co systém dokazuje, co vynechává a jak ověřit los od začátku do konce.
Zkráceně: než vsadíš, web zamkne tajnou hodnotu a ukáže ti její otisk. Ty přidáš vstup od sebe. Po sázkách web tajnou hodnotu odhalí a ty můžeš potvrdit, že otisk sedí a že každý výsledek z těch vstupů vyplývá. Pokud se čísla shodují, web nemohl změnit výsledek poté, co viděl tvou sázku.
Problém, který provably fair řeší
Na skinovém webu každý výsledek určuje server. Když otevřeš bednu, hodíš mincí nebo čekáš na násobitel v crashi, díváš se na animaci čísla, které vzniklo na stroji, který nemůžeš zkontrolovat. Bez nějaké formy důkazu věříš, že provozovatel potichu nepošťuchuje losy proti tobě, když je tvá sázka velká.
Licencovaná online kasina na to obvykle odpovídají regulátory a audity generátorů náhodných čísel třetí stranou. Většina skinových webů se místo toho opírá o kryptografický přístup. Má pro hráče jednu velkou výhodu: nemusíš věřit auditorovi, protože výpočet můžeš zopakovat na vlastním počítači.
Tomuhle principu se říká commitment scheme. Představ si, že web napíše své tajemství na kartu, zapečetí ji do obálky a podá ti obálku před začátkem hry. Kartu nemůže později vyměnit, aniž bys to poznal, a ty ji nemůžeš přečíst předem.
Tři vstupy: server seed, client seed a nonce
Skoro každý systém provably fair na Rust webech používá stejné ingredience. Označení se mezi weby trochu liší, ale role zůstávají stejné.
Server seed
Dlouhý náhodný řetězec generovaný webem. Zůstává tajný, dokud hraješ, protože kdokoli, kdo by ho znal, by mohl předpovědět každý výsledek. Místo něj vidíš jeho hash, obvykle vytvořený pomocí SHA-256. Hash je jednosměrný otisk. Stejný vstup dává vždy stejný 64znakový výstup, změna jediného znaku vstupu změní výstup úplně a neexistuje praktický způsob, jak z hashe zpětně dojít k seedu.
Client seed
Řetězec, který pochází z tvé strany. Weby ti generují výchozí a většina ti ho dovolí upravit v panelu férovosti nebo nastavení. Jeho úkolem je zabránit webu, aby vybral server seed špatný konkrétně pro tebe. Web se k seedu zavázal dřív, než věděl, co napíšeš, takže neměl způsob, jak jedno proti druhému doladit.
Nonce
Počítadlo, které začíná na 0 nebo 1 a roste o jedna s každou sázkou na stejný pár seedů. Umožňuje ti použít jeden server seed a jeden client seed pro stovky sázek a přesto při každé dostat nový výsledek.
Když chceš zkontrolovat své výsledky, požádáš web o obměnu (rotaci) seedu. Odhalí starý server seed v čitelné podobě, ukáže ti hash nového a vynuluje nonce. Všechno, co jsi hrál na starém seedu, lze nyní ověřit.
Jak se vstupy stanou výsledkem
Nejběžnější recept je HMAC-SHA256. HMAC je standardní způsob, jak spojit tajný klíč se zprávou a vytvořit hash. Na většině Rust webů je klíčem server seed a zprávou client seed a nonce spojené dohromady, často dvojtečkou, jako clientseed:nonce. Některé weby přidávají číslo kola nebo ID hry, takže vždy čti přesný vzorec na stránce férovosti daného webu.
Výstupem je 64znakový hexadecimální řetězec. Web pak část toho řetězce převede na číslo mezi 0 a 1. Typická metoda vezme prvních osm hexadecimálních znaků (32 bitů), převede je na celé číslo a vydělí 4 294 967 296, což je 2 na 32. Toto desetinné číslo se pak namapuje na hru:
- Dice a upgrader: vynásob 100 a získáš los od 0,00 do 99,99, který porovnáš s cílem.
- Ruleta: vynásob počtem políček na kole a zaokrouhli dolů, abys vybral políčko.
- Bedny: vynásob celkovým počtem tiketů v bedně, takže skin, který vlastní 1 % tiketů, vyhraje v 1 % losů.
- Crash: vlož číslo do vzorce, který z něj udělá násobitel, s house edge zabudovanou dovnitř. Náš návod ke strategii v crashi ten vzorec prochází i to, co znamená pro cíle cash-outu.
Příklad, který si můžeš zopakovat
Níže uvedené seedy jsou pro tento příklad vymyšlené, takže si naši aritmetiku můžeš ověřit v jakékoli kalkulačce HMAC-SHA256.
- Server seed: example-server-seed-01. Jeho hash SHA-256 začíná a5275da7ccca3f73. Tento hash by ti web ukázal před hrou.
- Client seed: my-own-client-seed. Nonce: 1. Zpráva je tedy my-own-client-seed:1.
- HMAC-SHA256 se server seedem jako klíčem a touto zprávou jako vstupem dává výsledek, který začíná 4cdcf221.
- Hex 4cdcf221 je v desítkové soustavě 1 289 548 321. Po vydělení 4 294 967 296 je to asi 0,30025.
- Na škále dice 0 až 100 je to los 30,02. Na ruletovém kole s 15 políčky je 0,30025 krát 15 asi 4,5, což se zaokrouhlí dolů na políčko 4 (první políčko se počítá jako 0).
Spusť stejné seedy s nonce 2 a dostaneš úplně jiný hash začínající 6486ccbd, což vychází na asi 0,3927. Nic z prvního losu ti neříká nic o druhém. Ta nezávislost je celý smysl: v historii sázek není žádný vzorec ke čtení, protože každý výsledek je nový hash.
Jak los ověřit sám, krok za krokem
První úplná kontrola chvíli trvá. Poté je to pár minut kopírování a vkládání. Udělej to nejdřív na malém zůstatku, ať postup znáš, než ti na výsledku opravdu záleží.
- Otevři panel férovosti před sázkou. Obvykle je odkazovaný z obrazovky hry, patičky nebo nastavení profilu. Hashovaný server seed si ulož někam mimo web, například do poznámky v telefonu nebo jako screenshot.
- Nastav si vlastní client seed. Nahraď výchozí něčím, co jsi napsal sám. Klidně bouchni do klávesnice. Nemusí být zapamatovatelný.
- Hraj a poznamenej si sázky, na kterých ti záleží. Zapiš si nonce zobrazený u každé sázky nebo ho později najdi v historii sázek.
- Obměň seed. Web odhalí starý server seed. Zkopíruj ho.
- Zkontroluj závazek. Pošli odhalený server seed přes jakýkoli nástroj SHA-256. Výstup se musí shodovat s hashem, který jsi uložil v kroku 1, znak po znaku.
- Přepočítej los. Použij HMAC-SHA256 s odhaleným server seedem, svým client seedem a nonce a pak aplikuj převod, který web zveřejňuje. V PHP je to jediné volání hash_hmac a modul hmac v Pythonu dělá totéž na pár řádcích.
- Porovnej. Číslo, které spočítáš, musí dát výsledek zaznamenaný v tvé historii.
Většina webů nabízí i vestavěný ověřovač, kam seedy vložíš. Je pohodlný, ale běží na vlastním kódu provozovatele. Pro kontrolu, která na webu vůbec nezávisí, použij aspoň jednou nezávislý nástroj nebo vlastní skript.
Sdílené hry fungují trochu jinak
Módy pro jednoho hráče, jako dice, upgrader a sólové otevírání beden, mohou běžet na tvém osobním páru seedů. Hry, kde mnoho hráčů sdílí jeden výsledek, jako jackpot, coinflip, case battle, kola rulety a crash, nemohou nechat client seed jednoho hráče rozhodnout o výsledku všech. Weby to řeší několika běžnými způsoby.
- Řetězec hashů. Běžný v crashi. Web předem vygeneruje dlouhý řetězec hashů, kde hash každého kola je SHA-256 hashe následujícího kola. Poslední hash řetězce zveřejní před odehráním prvního kola a ty můžeš zkontrolovat, že každé odhalené kolo se zahashuje zpět do toho před ním. Každý výsledek v řetězci byl pevně dán dřív, než kdokoli vsadil.
- Veřejný seed zvenčí webu. Web se zaváže k server seedu a pak přimíchá hodnotu, kterou nikdo nemohl předem znát, například hash budoucího bloku na veřejném blockchainu. Protože ten blok v době závazku neexistoval, web nemohl svůj seed k němu doladit.
- Závazky na kolo. V jackpotu a coinflipu se hashovaný seed kola objeví, když se kolo otevře, a čistý seed plus vítězný tiket se ukážou na jeho konci.
Myšlenka ověření je v každém případě stejná. Najdi závazek, který byl před kolem veřejný, potvrď, že odhalená hodnota mu odpovídá, a pak výsledek přepočítej. K tomu, jak se vítězný tiket stane vítězem ve sdíleném potu, viz náš návod šance v coinflipu a jackpotu. Case battle míchají oba přístupy, což pokrýváme v case battle vysvětleno.
Co provably fair nedokazuje
Ověřený los dokazuje jednu úzkou věc: výsledek vzešel ze vstupů, k nimž se web zavázal před tvou sázkou. To je užitečné, ale hráči do odznaku často čtou mnohem víc, než unese.
- Neříká nic o house edge. Crash s velkou výhodou může být dokonale provably fair. Výhoda sedí uvnitř zveřejněného vzorce, který mění náhodné číslo na násobitel nebo šanci na výhru. Férové znamená, že web dodržel vlastní pravidla, a ta pravidla pořád časem upřednostňují web.
- Nekontroluje ceny. Pokud bedna uvádí skin s hodnotou hodně nad tím, za kolik by se prodal na Steam Community Market, los může být férový a bedna přesto špatná hodnota. Náš návod k upgraderu ukazuje, jak oceňování položek potichu posouvá skutečné šance.
- Nepokrývá výběry. Web může provozovat bezchybné seedy a přesto zpožďovat výplaty, zmrazovat účty nebo přepisovat podmínky. Proto je férovost jen jedním vstupem do toho, jak weby hodnotíme, vedle rychlosti výplat a důvěryhodnosti.
- Funguje jen tehdy, když někdo kontroluje. Závazek, který nikdo neporovná, je jen řetězec znaků na stránce.
Varovné signály na stránce férovosti
Ověřování seedů je rutinní krok, když web testujeme. Tohle jsou věci, které nás znepokojují, zhruba od mírných po vážné.
| Co vidíš | Co to znamená | Co dělat |
|---|---|---|
| Žádná možnost změnit client seed | Web ovládá každý vstup do tvých osobních losů | S módy pro jednoho hráče zacházej opatrněji |
| Tlačítko ověřovače, ale žádný zveřejněný vzorec | Výsledky můžeš kontrolovat jen kódem webu | Než vložíš víc, požádej podporu o přesný vzorec |
| Hash server seedu se objeví až po sázce | Žádný skutečný závazek neexistuje | Nepovažuj hru za provably fair |
| Staré server seedy nelze nikdy odhalit | Nic nelze ověřit | Totéž jako výše |
| Odhalený seed nedává uložený závazek | Seed byl změněn, nebo je stránka rozbitá | Přestaň hrát, pořiď si screenshoty všeho a kontaktuj podporu |
Pokud někdy narazíš na poslední řádek, uschovej důkazy: uložený hash, odhalený seed, ID sázek a čas každé sázky. Jediný nesoulad může být chyba zobrazení, ale je to přesně ten druh důvěryhodného hlášení od hráče, který nás vede k novému testu webu.
Rozumná rutina pro běžné hráče
Nemusíš ověřovat každou sázku. Lehká rutina zachytí většinu problémů, aniž by z hraní dělala domácí úkol.
- Nastav si čerstvý client seed pokaždé, když začneš hrát na novém webu.
- Před hrou si pořiď screenshot hashovaného server seedu.
- Po sezení seed obměň a zkontroluj závazek, což je jediný výpočet SHA-256.
- Přepočítej jeden nebo dva výsledky, na kterých záleželo nejvíc, například velkou prohru v upgraderu nebo battle, který jsi byl jistý, že jsi měl vyhrát.
- Čas od času zopakuj úplnou kontrolu nezávislým nástrojem místo ověřovače webu.
Čisté ověření znamená, že ztráty, které bereš, jsou ty, které předpovídá zveřejněná matematika, a ne víc. Výhoda tam je pořád u každého losu. Praktický další krok je předem se rozhodnout, kolik z těch očekávaných ztrát jsi ochoten zaplatit za zábavu; naše stránka o zodpovědném hraní pokrývá jednoduché limity a nástroje, které ti pomohou se jich držet.
Často kladené otázky
Může web provably fair přesto podvádět?
Nemůže změnit zavázaný výsledek, aniž by selhala kontrola hashe. Může ale provozovat vysokou house edge, přeceňovat položky v bednách nebo zpožďovat výběry, protože provably fair pokrývá jen to, jak los vzniká.
Musím měnit svůj client seed?
Nemusíš, ale měl bys. Client seed, který sis zvolil až poté, co byl ukázán hash server seedu, znamená, že web nemohl svůj seed vybrat s ohledem na tvůj vstup.
Proč web neukáže server seed před hrou?
Kdokoli, kdo zná server seed i client seed, dokáže spočítat každý nadcházející výsledek. Hash umožňuje webu zavázat se ke svému seedu, aniž by prozradil budoucí losy.
Jaký nástroj můžu použít k ověření losů?
Funguje jakákoli kalkulačka SHA-256 a HMAC-SHA256, včetně bezplatných online nástrojů a vestavěných funkcí v PHP, Pythonu nebo JavaScriptu. Ověřovač webu použij pro pohodlí a nezávislý nástroj pro kontrolu, na které záleží.
Je SHA-256 dost bezpečný pro tento účel?
Ano. Je to široce používaný standard, který se využívá i při těžbě Bitcoinu, a neexistuje žádný známý praktický způsob, jak ho zvrátit nebo najít druhý seed, který dává stejný hash.
Čti dál
Související návody
Bonusy, bedny zdarma a promo kódy v Rust gamblingu: kolik doopravdy stojí
Bedna zdarma má hodnotu svého průměrného dropu, ne své top položky, a zůstatek zdarma má hodnotu toho, co přežije protočení. Jak ocenit každý běžný bonus na Rust webech dřív, než zadáš kód.
Rust case battle vysvětleno: módy, šance a jak vybrat férový battle
Case battle nemění house edge na bednách, které obsahuje. Mění to, jak výrazně vyhráváš nebo prohráváš. Jak formáty fungují, matematika za nimi a jak poznat battle, do kterého stojí za to jít.
Zodpovědný gambling se skiny: limity, varovné signály a kde najít pomoc
Se skiny je snadné ztratit přehled o skutečných penězích. Tenhle návod pokrývá varovné signály, limity, které opravdu drží, vyloučení ze hry a blokovací nástroje a bezplatné linky, na které se můžeš obrátit ještě dnes.