RustGamblingReviews

Guides

Sådan fungerer provably fair på Rust-sider, og sådan tjekker du dine kast

Server seed-hashes, client seeds, nonces og HMAC-SHA256 i almindelige ord, med et regneeksempel, du kan gentage, og en trin-for-trin-rutine til at tjekke ethvert kast på en Rust skin-side.

To Rust-spillere med nattesynsbriller sigter med laserrifler i mørket

Alle ti sider i vores rangering angiver deres spil som provably fair. Udtrykket har en præcis betydning, og tjekket bag det er noget, du selv kan køre med et gratis hashing-værktøj eller få linjer kode. Meget få spillere gør det nogensinde. Denne guide forklarer, hvad systemet beviser, hvad det udelader, og hvordan du verificerer et kast fra start til slut.

Den korte version: Før du satser, låser siden en hemmelig værdi fast og viser dig et fingeraftryk af den. Du tilføjer et input fra dig selv. Efter væddemålene afslører siden hemmeligheden, og du kan bekræfte, at fingeraftrykket stemmer, og at hvert resultat følger af inputtene. Hvis tallene passer, kunne siden ikke have ændret et udfald, efter den så dit væddemål.

Problemet, provably fair løser

På en skin-side bestemmer serveren hvert resultat. Når du åbner en case, flipper en mønt eller venter på en crash-multiplikator, ser du en animation af et tal, der blev frembragt på en maskine, du ikke kan inspicere. Uden en form for bevis stoler du på, at operatøren ikke i det skjulte skubber til kastene imod dig, når dit væddemål er stort.

Licenserede online casinoer svarer som regel på det med tilsynsmyndigheder og tredjepartsrevisioner af deres tilfældighedsgeneratorer. De fleste skin-sider støtter sig i stedet på en kryptografisk tilgang. Den har én stor fordel for spillere: Du behøver ikke stole på en revisor, fordi du kan gentage udregningen på din egen computer.

Ideen kaldes et commitment-skema. Forestil dig, at siden skriver sin hemmelighed på et kort, lægger kortet i en konvolut og rækker dig konvolutten, før spillet starter. Den kan ikke bytte kortet bagefter uden, at du opdager det, og du kan ikke læse kortet for tidligt.

De tre inputs: server seed, client seed og nonce

Næsten alle provably fair-systemer på Rust-sider bruger de samme ingredienser. Betegnelserne varierer lidt mellem siderne, men rollerne er de samme.

Server seed

En lang tilfældig streng genereret af siden. Den forbliver hemmelig, mens du spiller, fordi enhver, der kendte den, kunne forudsige hvert resultat. Det, du ser i stedet, er dens hash, som regel frembragt med SHA-256. En hash er et envejs-fingeraftryk. Det samme input giver altid det samme output på 64 tegn, at ændre ét enkelt tegn i inputtet ændrer outputtet fuldstændigt, og der er ingen praktisk måde at regne baglæns fra hashen til seed'en.

Client seed

En streng, der kommer fra din side. Sider genererer en standard til dig, og de fleste lader dig redigere den i fairness- eller indstillingspanelet. Dens opgave er at forhindre siden i at vælge en server seed, der er dårlig for netop dig. Siden forpligtede sig til sin seed, før den vidste, hvad du ville skrive, så den havde ingen mulighed for at tune den ene til den anden.

Nonce

En tæller, der starter på 0 eller 1 og stiger med én for hvert væddemål, du placerer på det samme seed-par. Den lader dig genbruge én server seed og én client seed til hundredvis af væddemål og stadig få et nyt resultat hver gang.

Når du vil tjekke dine resultater, beder du siden om at rotere seed'en. Den afslører den gamle server seed i klartekst, viser dig hashen af en ny og nulstiller noncen. Alt, du spillede på den gamle seed, kan nu verificeres.

Sådan bliver inputtene til et resultat

Den mest almindelige opskrift er HMAC-SHA256. HMAC er en standardmåde at kombinere en hemmelig nøgle med en besked for at frembringe en hash. På de fleste Rust-sider er server seed'en nøglen, og beskeden er client seed'en og noncen sat sammen, ofte med et kolon, som clientseed:nonce. Nogle sider tilføjer et rundenummer eller et spil-ID, så læs altid den præcise formel på sidens egen fairness-side.

Outputtet er en hexadecimal streng på 64 tegn. Siden omdanner derefter en del af den streng til et tal mellem 0 og 1. En typisk metode tager de første otte hex-tegn (32 bit), omregner dem til et helt tal og dividerer med 4.294.967.296, som er 2 opløftet i 32. Den decimal bliver så afbildet på spillet:

  • Dice og upgrader: Gang med 100 for at få et kast fra 0,00 til 99,99, og sammenlign det derefter med målet.
  • Roulette: Gang med antallet af felter på hjulet, og rund ned for at vælge et felt.
  • Cases: Gang med det samlede antal billetter i casen, så en skin, der ejer 1 % af billetterne, vinder i 1 % af kastene.
  • Crash: Send tallet gennem en formel, der omdanner det til en multiplikator, med husets fordel bygget ind. Vores crash-strategiguide gennemgår den formel og hvad den betyder for cash-out-mål.

Et regneeksempel, du kan gentage

Seedsene nedenfor er opdigtede til dette eksempel, så du kan tjekke vores regning med en hvilken som helst HMAC-SHA256-beregner.

  1. Server seed: example-server-seed-01. Dens SHA-256-hash begynder a5275da7ccca3f73. Den hash er det, siden ville vise dig, før du spiller.
  2. Client seed: my-own-client-seed. Nonce: 1. Beskeden er derfor my-own-client-seed:1.
  3. HMAC-SHA256 med server seed'en som nøgle og den besked som input giver et resultat, der begynder med 4cdcf221.
  4. Hex 4cdcf221 er 1.289.548.321 i decimal. Divideret med 4.294.967.296 er det cirka 0,30025.
  5. På en dice-skala fra 0 til 100 er det et kast på 30,02. På et roulettehjul med 15 felter er 0,30025 gange 15 cirka 4,5, hvilket runder ned til felt 4 (hvor det første felt tælles som 0).

Kør de samme seeds med nonce 2, og du får en helt anden hash, der begynder 6486ccbd, hvilket giver cirka 0,3927. Intet ved det første kast fortæller dig noget om det andet. Den uafhængighed er hele pointen: Der er intet mønster at læse i en væddemålshistorik, fordi hvert resultat er en ny hash.

Sådan verificerer du selv et kast, trin for trin

Det første fulde tjek tager et stykke tid. Derefter er det nogle få minutters kopiering og indsættelse. Gør det først på en lille saldo, så du kender processen, før et resultat faktisk betyder noget for dig.

  1. Åbn fairness-panelet, før du satser. Det er som regel linket fra spilskærmen, footeren eller dine profilindstillinger. Gem den hashede server seed et sted uden for siden, som en note på din telefon eller et skærmbillede.
  2. Sæt din egen client seed. Erstat standarden med noget, du selv har skrevet. Hamr løs på tastaturet. Den behøver ikke være mindeværdig.
  3. Spil, og notér de væddemål, du bekymrer dig om. Skriv noncen ned, der vises ved hvert væddemål, eller find den senere i din væddemålshistorik.
  4. Roter seed'en. Siden afslører den gamle server seed. Kopiér den.
  5. Tjek commitment'et. Kør den afslørede server seed gennem et hvilket som helst SHA-256-værktøj. Outputtet skal matche den hash, du gemte i trin 1, tegn for tegn.
  6. Genberegn kastet. Brug HMAC-SHA256 med den afslørede server seed, din client seed og noncen, og anvend derefter den omregning, siden offentliggør. I PHP er det ét enkelt kald til hash_hmac, og Pythons hmac-modul gør det samme på et par linjer.
  7. Sammenlign. Det tal, du beregner, skal give det udfald, der er registreret i din historik.

De fleste sider tilbyder også en indbygget verifier, hvor du indsætter seedsene. Den er praktisk, men den kører på operatørens egen kode. For et tjek, der slet ikke afhænger af siden, så brug et uafhængigt værktøj eller dit eget script mindst én gang.

Hvorfor trin 2 betyder noget: Hvis du aldrig ændrer standard-client seed'en, har siden genereret begge seeds. I teorien kunne den have søgt efter en server seed, der giver en dårlig stime mod netop den client seed. At vælge din egen client seed, efter server seed-hashen er på skærmen, lukker det hul.

Fælles spil fungerer lidt anderledes

Enkeltspiller-spiltyper som dice, upgrader og solo-case-åbninger kan køre på dit personlige seed-par. Spil, hvor mange spillere deler ét resultat, som jackpot, coinflip, case battles, roulette-runder og crash, kan ikke lade én spillers client seed afgøre alles udfald. Sider håndterer det på nogle få almindelige måder.

  • En hash-kæde. Almindelig i crash. Siden genererer en lang kæde af hashes på forhånd, hvor hver rundes hash er SHA-256 af den følgende rundes. Den offentliggør kædens sidste hash, før den første runde spilles, og du kan tjekke, at hver afslørede runde hasher tilbage til den foregående. Hvert resultat i kæden var fastlagt, før nogen placerede et væddemål.
  • En offentlig seed udefra. Siden forpligter sig til sin server seed og blander derefter en værdi ind, som ingen kunne kende på forhånd, som hashen af en fremtidig blok på en offentlig blockchain. Fordi den blok ikke fandtes, da siden forpligtede sig, kunne siden ikke tune sin seed til den.
  • Commitments pr. runde. I jackpot og coinflip vises rundens hashede seed, når runden åbner, og den almindelige seed plus den vindende billet vises, når den slutter.

Verificeringsideen er den samme i hvert tilfælde. Find det commitment, der var offentligt før runden, bekræft, at den afslørede værdi matcher det, og genberegn derefter resultatet. For hvordan en vindende billet bliver til en vinder i en fælles pot, se vores guide til odds i coinflip og jackpot. Case battles blander begge tilgange, hvilket vi dækker i case battles forklaret.

Hvad provably fair ikke beviser

Et verificeret kast beviser én snæver ting: at resultatet kom fra inputs, siden forpligtede sig til, før du satsede. Det er nyttigt, men spillere læser ofte langt mere ind i mærket, end det understøtter.

  • Det siger intet om husets fordel. Et crash-spil med en stor fordel kan sagtens være provably fair. Fordelen ligger i den offentliggjorte formel, der omdanner det tilfældige tal til en multiplikator eller en vinderchance. Fair betyder, at siden fulgte sine egne regler, og de regler favoriserer stadig siden over tid.
  • Det tjekker ikke priser. Hvis en case lister en skin til en værdi langt over, hvad den ville sælges for på Steam Community Market, kan kastet være fair, mens casen stadig er dårlig værdi. Vores upgrader-guide viser, hvordan prissætning af items i det stille flytter de reelle odds.
  • Det dækker ikke udbetalinger. En side kan køre fejlfri seeds og stadig forsinke udbetalinger, fryse konti eller omskrive sine vilkår. Derfor er fairness kun ét input i sådan vurderer vi sider, ved siden af udbetalingshastighed og tillid.
  • Det virker kun, hvis nogen tjekker. Et commitment, ingen sammenligner, er blot en streng af tegn på en side.

Røde flag på en fairness-side

At verificere seeds er et rutinetrin, når vi tester en side. Det her er det, der gør os mistænksomme, groft fra mildt til alvorligt.

Hvad du serHvad det betyderHvad du skal gøre
Ingen mulighed for at ændre client seed'enSiden styrer hvert input til dine personlige kastBehandl enkeltspiller-spiltyper med større forsigtighed
En verifier-knap, men ingen offentliggjort formelDu kan kun tjekke resultater med sidens egen kodeBed support om den præcise formel, før du indbetaler meget
Server seed-hashen vises først, efter du har satsetDer er intet reelt commitmentBehandl ikke spillet som provably fair
Gamle server seeds kan aldrig afsløresIntet kan verificeresDet samme som ovenfor
Den afslørede seed hasher ikke til det gemte commitmentSeed'en blev ændret, eller siden er i stykkerStop med at spille, tag skærmbilleder af alt, og kontakt support

Hvis du nogensinde rammer den sidste række, så gem dine beviser: den gemte hash, den afslørede seed, væddemåls-ID'erne og tidspunktet for hvert væddemål. Et enkelt misforhold kan være en visningsfejl, men det er præcis den slags troværdig spillerrapport, der får os til at gentjekke en side.

En fornuftig rutine for almindelige spillere

Du behøver ikke verificere hvert væddemål. En let rutine fanger de fleste problemer uden at gøre en session til lektier.

  • Sæt en ny client seed, hver gang du begynder at spille på en ny side.
  • Tag et skærmbillede af den hashede server seed, før du spiller.
  • Roter efter sessionen, og tjek commitment'et, hvilket er én SHA-256-beregning.
  • Genberegn det ene eller de to resultater, der betød mest, som et stort tab i upgrader eller et battle, du var sikker på, du burde have vundet.
  • Gentag nu og da det fulde tjek med et uafhængigt værktøj i stedet for sidens verifier.

En ren verificering betyder, at de tab, du tager, er dem, den offentliggjorte matematik forudsiger, og ikke flere. Fordelen er der stadig ved hvert kast. Det praktiske næste skridt er at beslutte på forhånd, hvor meget af de forventede tab du vil betale for underholdningen; vores side om ansvarligt spil dækker enkle grænser og de værktøjer, der hjælper dig med at holde dem.

  • #provably fair
  • #odds
  • #sikkerhed
  • #guider

Ofte stillede spørgsmål

Kan en provably fair-side stadig snyde?

Den kan ikke ændre et forpligtet resultat uden at hash-tjekket fejler. Den kan stadig køre en høj husets fordel, overprissætte items i cases eller forsinke udbetalinger, fordi provably fair kun dækker, hvordan kastet frembringes.

Skal jeg ændre min client seed?

Nej, men det bør du. En client seed, du valgte, efter server seed-hashen blev vist, betyder, at siden ikke kunne have valgt sin seed med dit input i tankerne.

Hvorfor viser siden ikke bare server seed'en, før jeg spiller?

Enhver, der kender både server seed'en og client seed'en, kan beregne alle kommende resultater. Hashen lader siden forpligte sig til sin seed uden at afsløre fremtidige kast.

Hvilket værktøj kan jeg bruge til at verificere kast?

Enhver SHA-256- og HMAC-SHA256-beregner virker, herunder gratis onlineværktøjer og de indbyggede funktioner i PHP, Python eller JavaScript. Brug sidens verifier for nemheds skyld og et uafhængigt værktøj til det tjek, der tæller.

Er SHA-256 sikker nok til det her?

Ja. Det er en udbredt standard, som også bruges i Bitcoin-mining, og der er ingen kendt praktisk måde at vende den om eller finde en anden seed, der giver den samme hash.

Læs videre

Relaterede guides

Alle guides