Crash oýunlarynyň netijesini barlamak: algoritm, howpsuzlyk

1) Barlagyň maksady: nämäni tassyklaýarsyňyz

Üýtgewsizlik: Operator bahanaňyzdan soň netijäni üýtgedip bilmedi (serwer sid heş kommitinden).
Köpelmek: Giriş maglumatlary bar bolsa, oýnuň görkezişi ýaly köpeldiji alarsyňyz.
Proseduranyň bitewiligi: habar formaty, inkrement 'nonce', tegelek düzgüni we "house edge" aýratynlyklar boýunça berk ulanylýar.

2) Onsuz barlamak mümkin bolmadyk maglumatlar

1. Server Seed Hash (commit) - degişli "Server Seed" ulanylýança çap edilýär.
2. Server Seed (soňrak/gutarandan soň açylýar).
3. Client Seed (led; özüňiz soraýarsyňyz ýa-da platforma döreder).
4. Nonce (häzirki 'Serwer Seed' -iň çägindäki nyrhlaryňyzyň hasapçysy).
5. Heş algoritmi (adatça 'HMAC-SHA256' ýa-da 'SHA-256').
6. Habar formaty (mysal: '' : '), takyk bölüjiler/registrler/kodlaşdyrmalar.
7. Hashyň mapping formulasy → köpeldiji (we tegelek/iň pes düzgüni).

💡Ähli aýratynlyklar operatorda Fairness/Provably Fair bölüminde bolmaly. Eger bir zat ýok bolsa, ol gyzyl baýdakdyr (§ 10 serediň).

3) Barlag algoritmi (7 ädim)

1. Committ barlaň: 'SHA-256 (ServerSeed)' hasaplaň we çap edilen 'ServerSeedHash' bilen deňeşdiriň.
2. Habary ýygnaň: platforma görnüşinde (mysal üçin 'msg = ClientSeed +': "+ Nonce ').
3. Aýlaw heşini sanaň:
  • при `HMAC-SHA256`: `RoundHash = HMAC_SHA256(key=ServerSeed, msg=message)`;
'SHA-256': 'RoundHash = SHA256 (ServerSeedmessage)' ýa-da aýratynlykda görkezilişi ýaly.
4. Tötänligi aýyryň: ilkinji 'k' biti (köplenç 52) → tutuş 'r', soň 'u = r/2 ^ k' alyň.
5. Mapping formulasyny ulanyň: 'u' -ny köpeldijä öwüriň (house edge/aýratyn halatlar oýnuň resminamalarynda göz öňünde tutulýar).
6. Oýunyň düzgünleri boýunça tegelek (mysal üçin, 2 belgä çenli, azyndan 1. 00 × we ş.m.).
7. Taryhdaky tapgyryň netijesi bilen deňeşdiriň. Gabat gelmek = dogruçyllyk.

4) Psevdokod (Python/JS-e uýgunlaşdyrylyp bilner)

```python
Bu ýere platformanyzyň ýerine takyk mapping formulasyny stub_mapping ()

import hmac, hashlib, math

def round_hash(server_seed: bytes, client_seed: str, nonce: int) -> bytes:
  • message = f "{client _ seed}: {nonce}" .encode ("utf-8") formatyna göz aýlaň
  • return hmac. new(server_seed, message, hashlib. sha256). digest () ýa-da hashlib. sha256(...)

def take_u_from_hash(h: bytes, k_bits=52) -> float:
  • KDE-ni r
  • r = int. from_bytes(h, "big") >> (256 - k_bits)
  • return r / (1 << k_bits) u в [0, 1)

def stub_mapping(u: float) -> float:
  • ZAPLUSHKA! Oýnuňyzyň resminamalaryndan formula çalyşyň
  • Mysal üçin, käwagt görnüşiň üýtgemegi ulanylýar: crash = floor ((const/( r + 1)) 100 )/100
  • we/ýa-da seýrek mejbury hökmünde "house edge" 1. 00×. Bu stubany hakyky barlamakda ulanmaň.
  • return max(1. 00, round(1. 0 / max(1e-12, 1. 0 - u), 2))

def verify(server_seed_hex, server_seed_hash_hex, client_seed, nonce, shown_multiplier):
  • server_seed = bytes. fromhex(server_seed_hex)
  • 1) Kommit
  • assert hashlib. sha256(server_seed). hexdigest() == server_seed_hash_hex. lower()
  • 2-3) Heş tapgyry
  • h = round_hash(server_seed, client_seed, nonce)
  • 4) u
  • u = take_u_from_hash(h)
  • 5-6) mapping + tegelek
  • calc_mult = stub_mapping(u)
  • 7) deňeşdirme
  • return abs(calc_mult - shown_multiplier) < 1e-9
  • ```

Möhüm: 'stub _ mapping' ýerine platformanyzyň Fairness bölüminden takyk formulany ulanyň; ýogsam barlag nädogry bolar.

5) Hususy ýagdaýlar we duzaklar

Bir tapgyrda iki stawka: Köp platformalarda 'nonce', şol bir tapgyrda edilse-de, her stawka üçin ýokarlanýar (mysal üçin: A → 'nonce = 42', B → 'nonce = 43'). Taryhy barlaň.
'Client Seed' -i üýtgetmek: 'nonce' -ni üýtgedeniňizde adatça taşlanýar (ýa-da täze akym başlaýar). Platformanyzyň düzgünlerini barlaň.
Batchi 'Server Seed': bir 'Server Seed' tapgyrlar tapgyryna hereket edýär, soňra täze kommit çap edilýär; dürli döwürleriň tohumlaryny bulaşdyrmaň.
Tegelek/iň az: ikinji belgä laýyk gelmezlik - 90% ýagdaýynda tegelek/iň pes düzgünlerdäki ýalňyşlyk (mysal üçin, kesgitlenen 1. 00 × ýörite şertde).
Kodirleme/boşluklar: goşmaça boşluk/setiriň terjimesi, nädogry registrler, no-UTF-8 barlagy bozýar.

6) Tapgyry çalt barlamagyň çek-sanawy

1. 'SHA-256 (ServerSeed)' neşir edilen 'ServerSeedHash' bilen gabat gelýärmi?
2. 'message' we 'nonce' formaty dogrymy?
3. Algoritm ('HMAC-SHA256 '/' SHA-256') we meýdan açary/tertibi aýratynlyklar boýunça berk ulanylýarmy?
4. Mapping we tegelek dokumentler birmeňzeşmi?
5. Aýratyn ýagdaýlar hasaba alynýarmy (seýrek duş gelýän "dessine heläkçilik", iň az 1. 00 ×, kaplar)?
6. Netijesi oýnuň taryhyna gabat gelýärmi?

7) Gözegçiligi awtomatlaşdyrmak (tejribe)

Logy: 'client _ seed', 'nonce' yzygiderliligini, wagt belligini, jemleýji köpeldijini saklaň.
Sampling: "rewil" -den soň 'Server Seed' -i tötänleýin 20-50 tapgyra sürüň; gabat gelýänleriň göterimini ýazga alyň (100% bolmaly).
Regressiýa: oýnuň/üpjün edijiniň wersiýasyny üýtgedeniňizde, şol bir toplumy kowuň.
Eksport: CSV/JSON-y çeşme bilen saklaň - bu siziň "audit ýoluňyzdyr".

8) Howpsuzlyk: nädip ýalňyşmaly däl we özüňi aldatmaly däl

Lokal/awtonom synap görüň: diňe operatoryň web-tassyklaýjysyna bil baglamaň; öz skriptiňizi saklaň.
Doly maglumat bukjasyz tapgyrlara ynanmaň: formula/format ýok - tassyklama ýok.
Güýçli 'Client Seed': tötänleýin soraň, wagtal-wagtal üýtgediň (bu RTP-ni ýokarlandyrmaýar, ýöne köpelmek üçin soraglary aradan aýyrýar).
TLS/sessiýalar: diňe HTTPS, 2FA arkaly giriş, taryhyň girelgelerini we göçürmelerini yzarlamak.
Hiç kime 'Server Seed' bermäň: operator tarapyndan bir döwürden soň çap edilýär; siziň wezipäňiz - barlamak, öňünden "almak" däl.

9) "Täze gelenleriň ýalňyşlyklary"

Meýdanlaryň tertibi bulaşdyryldy ('Nonce: ClientSeed' ýerine 'ClientSeed: Nonce').
'nonce' hasaby birligiň ýerine noldan (ýa-da tersine).
Platformanyň ähli tapgyrynyň heşi (global nonce) ulanyldy, ýöne şahsy 'nonce' gerek.
Banker's rounding vs floor/ceil).
Eýýäm açylan 'Server Seed' bilen däl-de, işjeň bilen deňeşdirme.

10) Operatorda "Gyzyl baýdaklar"

Döwür başlamazdan ozal köpçülige açyk Server Seed Hash ýok.
Client Seed saýlap ýa-da nonce görüp bilmersiňiz.
Köpürjik heşiň köpçülige açyk formulasy ýok.
Tapgyrlaryň taryhy barlamak üçin iň az maglumat bermeýär.
Format we algoritm habarnamasyz/spesifikasiýa arhiwi bolmazdan üýtgedildi.

11) Awstraliýa konteksti (AU)

Walýuta: AUD-da ýeňişleri/jedelleri hasaba alyň, hekaýalary düşürmegi saklaň (goldaw, jedelli meseleler).
Jogapkär oýun (RG): depozit/wagt çäkleri, arakesmeler we öz-özüni aýyrmak - wyiousdanly programmalarda elýeterlidir; olary ulanyň.
Platforma tejribesi: ynsaply operatorlarda "Fairness/Provably Fair" bloky barlamagyň doly beýanyny we mysallaryny öz içine alýar; jikme-jiklikleriň ýoklugy - başga bir hyzmaty saýlamaga sebäp bolýar.

12) Jemleýji

Crash-oýnuň netijesini barlamak anyk prosedura:
  • "Server Seed Hash",
  • dikeldiş 'RoundHash' 'Server Seed', 'Client Seed', 'nonce' we algoritm,
  • çap edilen mapping formulasyny we tegelek düzgünlerini ulanmak,
  • barlagyňyzda we oýun taryhynda birmeňzeş köpeldiji.

Öz skriptiňizi saklaň, giriş maglumatlaryňyzy ýazga alyň we wagtal-wagtal tötänleýin tapgyrlary barlaň. Şonuň üçin dogruçyllygy söz bilen däl-de, matematiki taýdan tassyklaýarsyňyz.