Crash oyunun nəticəsini yoxlamaq: alqoritm, təhlükəsizlik
1) Yoxlamanın məqsədi: tam olaraq nə təsdiq edirsiniz
Dəyişməzlik: operator sizin bahisinizdən sonra nəticəni dəyişə bilmədi (server cid hash kommiti hesabına).
Oynama qabiliyyəti: giriş məlumatları ilə oyun göstərdiyi eyni çoxluğu əldə edirsiniz.
Prosedurun bütövlüyü: mesaj formatı, increment 'nonce', yuvarlaqlaşdırma qaydası və «house edge» ciddi spesifikasiyaya görə tətbiq olunur.
2) Yoxlanılması mümkün olmayan məlumatlar
1. Server Seed Hash (commit) - müvafiq «Server Seed» istifadə edilməzdən əvvəl dərc olunur.
2. Server Seed (daha sonra/dövrün sonunda açılır).
3. Client Seed (sizin led; özünüz soruşursunuz və ya platforma yaradır).
4. Nonce (cari 'Server Seed' çərçivəsində bahis sayğacı).
5. Heşləmə alqoritmi (adətən 'HMAC-SHA256' və ya 'SHA-256').
6. Mesaj formatı (məsələn: '': '), dəqiq ayırıcılar/registr/kodlaşdırma.
7. Mapping formula hasha → çarpan (və yuvarlaqlaşdırma qaydası/minimum).
3) Yoxlama alqoritmi (7 addım)
1. Kommiti müqayisə edin: 'SHA-256 (ServerSeed)' hesablayın və dərc olunmuş 'ServerSeedHash' ilə müqayisə edin.
2. Mesaj toplayın: platforma formatında (məsələn, 'msg = ClientSeed +': '+ Nonce').
3. Raund Hash hesablayın:
4) Pseudo-kod (Python/JS-ə uyğunlaşdırıla bilər)
```python
Buraya platformanızdan dəqiq mapping düsturunu stub_mapping ()
import hmac, hashlib, math
def round_hash(server_seed: bytes, client_seed: str, nonce: int) -> bytes:
def take_u_from_hash(h: bytes, k_bits=52) -> float:
def stub_mapping(u: float) -> float:
def verify(server_seed_hex, server_seed_hash_hex, client_seed, nonce, shown_multiplier):
Vacibdir: 'stub _ mapping' əvəzinə platformanızın Fairness bölməsindən dəqiq bir düstur tətbiq edin; əks halda yoxlama düzgün olmayacaq.
5) Xüsusi hallar və sualtı daşlar
Bir turda iki bahis: bir çox 'nonce' platformaları eyni turda olsa belə, hər bir bahis artır (məsələn: A → 'nonce = 42' bahis, B → 'nonce = 43' bahis). Tarixi yoxlayın.
'Client Seed' dəyişdirilməsi: 'nonce' sidi dəyişdirildikdə adətən sıfırlanır (və ya yeni axın başlayır). Platformanızın qaydalarını yoxlayın.
Batchi 'Server Seed': bir 'Server Seed' bir sıra raundlar üçün işləyir, sonra yeni kommit dərc olunur; müxtəlif dövrlərdə toxumları qarışdırmayın.
Dəyirmanlama/minimum: ikinci işarə uyğunsuzluğu - 90% hallarda dəyirmanlama/minimum qaydalarında səhv (məsələn, sabit 1. 00 × xüsusi şərtlərlə).
Kodlaşdırma/boşluqlar: əlavə boşluq/xətt tərcüməsi, səhv registr, UTF-8 yoxlamanı pozur.
6) Tur sürətli yoxlama çek siyahısı
1. 'SHA-256 (ServerSeed)' dərc olunmuş 'ServerSeedHash' ilə üst-üstə düşürmü?
2. 'message' və 'nonce' formatı doğrudurmu?
3. Alqoritm ('HMAC-SHA256 '/' SHA-256') və açar/sahə qaydası ciddi spesifikasiyaya görə tətbiq olunur?
4. Mapping və yuvarlaqlaşdırma sənədlərlə eynidir?
5. Xüsusi hallar nəzərə alınır (nadir «ani qəza», minimum 1. 00 ×, kaplar)?
6. Nəticə oyunun tarixçəsi ilə bir qəpiyə təsadüf edirmi?
7) Nəzarət avtomatlaşdırılması (təcrübə)
Log 'lar: 'client _ seed', 'nonce' ardıcıllığı, vaxt işarəsi, yekun çarpanı saxlayın.
Sampling: «revil» 'Server Seed' sonra təsadüfi 20-50 raund script; uyğunluq faizini qeyd edin (100% olmalıdır).
Reqressiya: Oyun/provayder versiyasını dəyişdirərkən eyni dəsti qaçırın.
İxrac: CSV/JSON-u mənbələrlə saxlayın - bu sizin «audit yolunuzdur».
8) Təhlükəsizlik: səhv etməmək və özünüzü aldatmamaq
Yerli/oflayn yoxlayın: yalnız operatorun veb validatoruna güvənməyin; öz skript saxlamaq.
Tam məlumat paketi olmadan raundlara etibar etməyin: heç bir formula/format yoxdur - heç bir yoxlama yoxdur.
Güclü 'Client Seed': təsadüfi soruşun, vaxtaşırı dəyişdirin (bu RTP-ni artırmır, lakin reproduktivlik üçün sualları istisna edir).
TLS/seanslar: giriş yalnız HTTPS, 2FA, giriş və download tarixi izləmək.
"Server Seed 'i heç kimə verməyin: bu, operator tərəfindən bir müddətdən sonra yayımlanır; sizin vəzifəniz onu əvvəlcədən «əldə etməməyi» yoxlamaqdır.
9) Tipik «yeni gələnlərin səhvləri»
Sahələrin sırası qarışıq ('Nonce: ClientSeed' əvəzinə 'ClientSeed: Nonce').
Hesab sıfırdan vahid əvəzinə (və ya əksinə).
Platformanın bütün turunun heş (global nonce) istifadə olunur, ancaq şəxsi 'nonce' lazımdır.
Banker 's rounding vs floor/ceil.
Artıq açılmış 'Server Seed' ilə deyil, aktiv ilə müqayisə.
10) «Qırmızı bayraqlar» operator
Heç bir ictimai Server Seed Hash dövrü başlamazdan əvvəl.
Siz Client Seed-i təyin edə və ya nonce izləyə bilməzsiniz.
Çoxluqda heş mappinqinin ictimai formulu yoxdur.
Raundların tarixi yoxlama üçün minimum məlumat vermir.
Format və alqoritm bildiriş/spesifikasiya arxivi olmadan dəyişdirildi.
11) Avstraliya konteksti (AU)
Valyuta: qazancların/bahislərin hesabını AUD-da aparın, hekayələrin yüklənməsini saxlayın (dəstək, mübahisəli məsələlər).
Məsuliyyətli oyun (RG): depozit/vaxt limitləri, fasilələr və özünü istisna - vicdanlı tətbiqlərdə mövcuddur; onları istifadə edin.
Platforma təcrübələri: Vicdanlı operatorlarda «Fairness/Provably Fair» bloku yoxlamanın tam təsviri və nümunələrini ehtiva edir; təfərrüatların olmaması başqa bir xidmət seçmək üçün bir səbəbdir.
12) Yekun
Crash oyununun nəticəsinin yoxlanılması dəqiq prosedurdur:
Öz skriptinizi saxlayın, giriş məlumatlarınızı daxil edin və təsadüfi turları vaxtaşırı yoxlayın. Beləliklə, siz sözlə deyil, riyazi olaraq dürüstlüyünüzü təsdiq edirsiniz.
Dəyişməzlik: operator sizin bahisinizdən sonra nəticəni dəyişə bilmədi (server cid hash kommiti hesabına).
Oynama qabiliyyəti: giriş məlumatları ilə oyun göstərdiyi eyni çoxluğu əldə edirsiniz.
Prosedurun bütövlüyü: mesaj formatı, increment 'nonce', yuvarlaqlaşdırma qaydası və «house edge» ciddi spesifikasiyaya görə tətbiq olunur.
2) Yoxlanılması mümkün olmayan məlumatlar
1. Server Seed Hash (commit) - müvafiq «Server Seed» istifadə edilməzdən əvvəl dərc olunur.
2. Server Seed (daha sonra/dövrün sonunda açılır).
3. Client Seed (sizin led; özünüz soruşursunuz və ya platforma yaradır).
4. Nonce (cari 'Server Seed' çərçivəsində bahis sayğacı).
5. Heşləmə alqoritmi (adətən 'HMAC-SHA256' və ya 'SHA-256').
6. Mesaj formatı (məsələn: ''
7. Mapping formula hasha → çarpan (və yuvarlaqlaşdırma qaydası/minimum).
💡Bütün spesifikasiya operatorda Fairness/Provably Fair bölməsində olmalıdır. Əgər bir şey yoxdursa, bu qırmızı bayraqdır (bax § 10).
3) Yoxlama alqoritmi (7 addım)
1. Kommiti müqayisə edin: 'SHA-256 (ServerSeed)' hesablayın və dərc olunmuş 'ServerSeedHash' ilə müqayisə edin.
2. Mesaj toplayın: platforma formatında (məsələn, 'msg = ClientSeed +': '+ Nonce').
3. Raund Hash hesablayın:
- при `HMAC-SHA256`: `RoundHash = HMAC_SHA256(key=ServerSeed, msg=message)`;
'SHA-256' ilə: 'RoundHash = SHA256 (ServerSeed | message)' və ya spesifikasiyada göstərildiyi kimi. |
---|---|
4. Təsadüfi çıxarın: ilk 'k' biti (tez-tez 52) → bütün 'r', sonra 'u = r/2 ^ k' götürün. | |
5. Mappinq düsturunu tətbiq edin: 'u' çoxaltıcıya çevirin (house edge/xüsusi hallar oyun sənədlərinə əsasən nəzərə alınır). | |
6. Oyun qaydalarına görə yuvarlaqlaşdırın (məsələn, 2 işarəyə qədər, ən azı 1. 00 × və s.). | |
7. Tarixdəki turun nəticəsi ilə müqayisə edin. Uyğunluq = düzgün dürüstlük. |
4) Pseudo-kod (Python/JS-ə uyğunlaşdırıla bilər)
```python
Buraya platformanızdan dəqiq mapping düsturunu 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») formatına baxın
- return hmac. new(server_seed, message, hashlib. sha256). digest () və ya hashlib. sha256(...)
def take_u_from_hash(h: bytes, k_bits=52) -> float:
- k yaşlı bit bütün r kimi götürün
- r = int. from_bytes(h, "big") >> (256 - k_bits)
- return r / (1 << k_bits) u в [0, 1)
def stub_mapping(u: float) -> float:
- ZAPLUSHKA! Oyununuzun sənədlərindən düsturla əvəz edin
- Məsələn, bəzən növün çevrilməsindən istifadə olunur: crash = floor ((const/( r + 1)) 100 )/100
- və/və ya nadir məcburi kimi «house edge» 1. 00×. Bu stubu real yoxlamada istifadə etməyin.
- 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) Hesh raund
- h = round_hash(server_seed, client_seed, nonce)
- 4) u
- u = take_u_from_hash(h)
- 5-6) mappinq + yuvarlaqlaşdırma
- calc_mult = stub_mapping(u)
- 7) müqayisə
- return abs(calc_mult - shown_multiplier) < 1e-9
- ```
Vacibdir: 'stub _ mapping' əvəzinə platformanızın Fairness bölməsindən dəqiq bir düstur tətbiq edin; əks halda yoxlama düzgün olmayacaq.
5) Xüsusi hallar və sualtı daşlar
Bir turda iki bahis: bir çox 'nonce' platformaları eyni turda olsa belə, hər bir bahis artır (məsələn: A → 'nonce = 42' bahis, B → 'nonce = 43' bahis). Tarixi yoxlayın.
'Client Seed' dəyişdirilməsi: 'nonce' sidi dəyişdirildikdə adətən sıfırlanır (və ya yeni axın başlayır). Platformanızın qaydalarını yoxlayın.
Batchi 'Server Seed': bir 'Server Seed' bir sıra raundlar üçün işləyir, sonra yeni kommit dərc olunur; müxtəlif dövrlərdə toxumları qarışdırmayın.
Dəyirmanlama/minimum: ikinci işarə uyğunsuzluğu - 90% hallarda dəyirmanlama/minimum qaydalarında səhv (məsələn, sabit 1. 00 × xüsusi şərtlərlə).
Kodlaşdırma/boşluqlar: əlavə boşluq/xətt tərcüməsi, səhv registr, UTF-8 yoxlamanı pozur.
6) Tur sürətli yoxlama çek siyahısı
1. 'SHA-256 (ServerSeed)' dərc olunmuş 'ServerSeedHash' ilə üst-üstə düşürmü?
2. 'message' və 'nonce' formatı doğrudurmu?
3. Alqoritm ('HMAC-SHA256 '/' SHA-256') və açar/sahə qaydası ciddi spesifikasiyaya görə tətbiq olunur?
4. Mapping və yuvarlaqlaşdırma sənədlərlə eynidir?
5. Xüsusi hallar nəzərə alınır (nadir «ani qəza», minimum 1. 00 ×, kaplar)?
6. Nəticə oyunun tarixçəsi ilə bir qəpiyə təsadüf edirmi?
7) Nəzarət avtomatlaşdırılması (təcrübə)
Log 'lar: 'client _ seed', 'nonce' ardıcıllığı, vaxt işarəsi, yekun çarpanı saxlayın.
Sampling: «revil» 'Server Seed' sonra təsadüfi 20-50 raund script; uyğunluq faizini qeyd edin (100% olmalıdır).
Reqressiya: Oyun/provayder versiyasını dəyişdirərkən eyni dəsti qaçırın.
İxrac: CSV/JSON-u mənbələrlə saxlayın - bu sizin «audit yolunuzdur».
8) Təhlükəsizlik: səhv etməmək və özünüzü aldatmamaq
Yerli/oflayn yoxlayın: yalnız operatorun veb validatoruna güvənməyin; öz skript saxlamaq.
Tam məlumat paketi olmadan raundlara etibar etməyin: heç bir formula/format yoxdur - heç bir yoxlama yoxdur.
Güclü 'Client Seed': təsadüfi soruşun, vaxtaşırı dəyişdirin (bu RTP-ni artırmır, lakin reproduktivlik üçün sualları istisna edir).
TLS/seanslar: giriş yalnız HTTPS, 2FA, giriş və download tarixi izləmək.
"Server Seed 'i heç kimə verməyin: bu, operator tərəfindən bir müddətdən sonra yayımlanır; sizin vəzifəniz onu əvvəlcədən «əldə etməməyi» yoxlamaqdır.
9) Tipik «yeni gələnlərin səhvləri»
Sahələrin sırası qarışıq ('Nonce: ClientSeed' əvəzinə 'ClientSeed: Nonce').
Hesab sıfırdan vahid əvəzinə (və ya əksinə).
Platformanın bütün turunun heş (global nonce) istifadə olunur, ancaq şəxsi 'nonce' lazımdır.
Banker 's rounding vs floor/ceil.
Artıq açılmış 'Server Seed' ilə deyil, aktiv ilə müqayisə.
10) «Qırmızı bayraqlar» operator
Heç bir ictimai Server Seed Hash dövrü başlamazdan əvvəl.
Siz Client Seed-i təyin edə və ya nonce izləyə bilməzsiniz.
Çoxluqda heş mappinqinin ictimai formulu yoxdur.
Raundların tarixi yoxlama üçün minimum məlumat vermir.
Format və alqoritm bildiriş/spesifikasiya arxivi olmadan dəyişdirildi.
11) Avstraliya konteksti (AU)
Valyuta: qazancların/bahislərin hesabını AUD-da aparın, hekayələrin yüklənməsini saxlayın (dəstək, mübahisəli məsələlər).
Məsuliyyətli oyun (RG): depozit/vaxt limitləri, fasilələr və özünü istisna - vicdanlı tətbiqlərdə mövcuddur; onları istifadə edin.
Platforma təcrübələri: Vicdanlı operatorlarda «Fairness/Provably Fair» bloku yoxlamanın tam təsviri və nümunələrini ehtiva edir; təfərrüatların olmaması başqa bir xidmət seçmək üçün bir səbəbdir.
12) Yekun
Crash oyununun nəticəsinin yoxlanılması dəqiq prosedurdur:
- «Server Seed Hash» kommitinin yoxlanılması,
- bərpa 'RoundHash' 'Server Seed', 'Client Seed', 'nonce' və alqoritm,
- dərc olunmuş mappinq düsturunun və yuvarlaqlaşdırma qaydalarının tətbiqi,
- yoxlama və oyun tarixində eyni çarpan.
Öz skriptinizi saxlayın, giriş məlumatlarınızı daxil edin və təsadüfi turları vaxtaşırı yoxlayın. Beləliklə, siz sözlə deyil, riyazi olaraq dürüstlüyünüzü təsdiq edirsiniz.