Provably Fair nima va o’yinning halolligini qanday tekshirish mumkin
Provably Fair (PF) nima?
Provably Fair - bu raund natijasi tasodifiy bo’lganligini va operator tomonidan o’zgartirilishi mumkin emasligini kriptografik tekshirish imkonini beruvchi protokol.
G’oya: avval kommit (yashirin server seed xeshi) e’lon qilinadi, so’ngra stavkadan so’ng revil (server seed o’zi) ochiladi va har kim o’yinchining client seed va raund identifikatorlarini hisobga olgan holda xeshni tekshirishi va RNGni takrorlashi mumkin.
Asosiy protokol: commit → bet → reveal
1. Commit: raundlar boshlanishidan oldin server tasodifiy’server _ seed’ni yaratadi va uning xeshini eʼlon qiladi:
commit = SHA-256(server_seed salt )//yoki Keccak-256
Kommitni tarixga/blokcheyn/jurnalga olib chiqish mumkin.
2. O’yinchi o’zining «client _ seed» ni tanlaydi yoki tasdiqlaydi (UI yoki o’z), stavkani:
client_seed, roundId, nonce
3. Reveal: Hamma tekshirishi uchun server’server _ seed’(va’salt’) ni ochadi:
SHA-256(server_seed salt) = = commit//yaxlitligini tekshirish
4. RNG: tasodif soni aniqlangan va takrorlanadi:
rng = HMAC-SHA256(key=server_seed, msg=client_seed roundId nonce)
//yoki rng = SHA-256 (server_seed client_seed roundId nonce)
5. Mapping oxirigacha:’rng’ni siljishsiz o’yin diapazoniga aylantiramiz (quyida qarang).
Raqamni siljitmasdan qanday olish mumkin (bias-free)
’rng% N’ ni olish noto’g’ri - bu modulli siljishni beradi, agar 2 ^ k N. ko’p bo’lmasa. To’g’ri - rejection sampling:pseudo
// rng_bytes = 32 bayt xesh → uint256 x = uint256 (rng_bytes)
limit = floor(2^256 / N) N while x >= limit:
rng_bytes = SHA-256 (rng_bytes )//« aralashtirish »x = uint256 (rng_bytes)
result = x % N
Shunday qilib, N natijalari bo’yicha bir tekis taqsimlanishni olamiz (ruletka kataklari, baraban ramzlari va boshqalar).
Mini-misol (o’yinchi tomonidan bosqichma-bosqich tekshirish)
Faraz qilaylik:
server_seed = «b2c6... e9 »//raunddan keyin ochilgan (hex/utf8)
client_seed = «my-client-seed »//Men tomonidan roundId =« R-2025-10-17-001 »
nonce = 42 commit = «c9a1... f3 »//opubl. oldindan
1) Kommitni tekshirish
’SHA-256 (server_seed)’ ni hisoblash va’commit’ga mos kelishiga ishonch hosil qilish.
2) Determinirlangan RNG
Hisoblash:
rng = HMAC-SHA256(key=server_seed, msg= client_seed ":" roundId ":" nonce)
3) Natijaga aylantirish
Ruletka uchun (37 raqam) → N = 37, rejection sampling va’x% 37’ni oling.
Slot uchun: taqsimlash jadvaliga muvofiq baraban/belgilarni aniqlash uchun bir nechta RNG porsiyalaridan foydalanish.
4) Tarixdagi natija bilan solishtirish
Maydonchada’server _ seed’,’client _ seed’,’roundId’,’nonce’,’hashAlgo’,’rngAlgo’,’mappingVersion’kabi hisob-kitoblar qoʻllanilishi kerak.
Muqobil/kuchaytirish: VRF (Verifiable Random Function)
Operator kommit oʻrniga (yoki qoʻshimcha ravishda) VRF dan foydalanishi mumkin:1. Smart-kontrakt yoki ommaviy reyestr provayderdan’VRF (seed)’ni so’raydi.
2. ’(random, proof)’ deb e’lon qilinadi.
3. Har kim «proof» ni VRFning ommaviy asosiy juftligi bilan tekshirishi mumkin.
4. Keyingi o’rinlarda RNG mappingining o’sha bosqichlari yakunlanadi.
Afzalliklari: operatorga nisbatan kamroq ishonch. Minuslar: VRF-provayderga/zanjirga bog’liqlik va mumkin bo’lgan qiymat.
Qanday qilib casino PFni to’g’ri amalga oshirishi kerak
Shartnoma (PF ma’lumotlari kontrakti)
Tur tarixidagi maydonlar:- `serverSeedHash`, `serverSeedReveal`, `clientSeed`, `roundId`, `nonce`, `hashAlgo`, `rngAlgo`, `mappingVer`, `proofUrl` (опц.) , `calcVer`.
- Qiymatlari - WORM saqlovida (immutable), vaqt shtamplari bilan (UTC).
Sidlarni yaratish
’server _ seed’ kripto barqaror PRNG (OS CSPRNG/HSM) tomonidan ishlab chiqariladi.
Sidlar hech qachon ketma-ket takrorlanmasligi kerak.
’client _ seed’ - o’yinchi tomonidan tanlanadi yoki mijozda ishlab chiqariladi va tasdiqlanadi.
Kommitlarni nashr etish
Commits to’lovlargacha mavjud (tarix, RSS, on-chain-langar).
Lotlar uchun siz kundalik ildizni nashr etuvchi kommitlardan foydalanishingiz mumkin.
Ochish (reveal)
Natijani e’lon qilishdan oldin’server _ seed’ochiladi va logotip qilinadi.
Bir sid bo’yicha bir qator raundlar uchun - seriya oxiridan keyin oshkor qilish (siyosatni oldindan ko’rsatish).
Shaffof mapping
Mapping algoritmining versiyasi (’mappingVer’) qayd etiladi.
Har qanday o’zgarish (’mappingVer ’/’ rngAlgo’) - faqat e’lon va yangi kommit seriyasi bilan.
Audit va nizolar
Xom kirishlar + hisoblash yozuvlari saqlanadi; kelishmovchilikda hisobot yaratiladi: kirish → RNG → mapping → natija.
Stream/Live: CV/RFID voqealarining xesh langarlarini, videolarni WORMda saqlash.
O’yinchi halollikni qanday tekshiradi (chek ro’yxati)
1. Tur tarixini oching va nusxa oling:’serverSeedReveal’,’clientSeed’,’roundId’,’nonce’,’hashAlgo’,’rngAlgo’,’mappingVer’.
2. ’serverSeedReveal’ xeshini sanab,’serverSeedHash’bilan solishtiring.
3. Koʻrsatilgan algoritm boʻyicha RNG hisoblang (HMAC/Hash + kirish).
4. Natijalar soniga «koʻchirilmagan» mapping (rejection sampling) ni qoʻllang.
5. Natija koʻrsatilgan natijaga mos kelishiga ishonch hosil qiling.
6. Agar VRF talab qilinsa,’proof’ni tekshiring («Verify» tugmasi yoki mustaqil skript/blok-eksplorer).
Namunaviy xatolar (anti-pattern)
’rng% N’ rejection sampling → siljish ehtimollari.
Yashirin yoki oʻzgaruvchan’client _ seed’(serverda oʻyinchi ishtirokisiz hosil qilinadi).
Stavkadan keyin’server _ seed’qayta generatsiya qilish (kommit orqa songa o’zgaradi).
Algoritmlarning shaffof boʻlmagan oʻzgarishlari
Seriyalar orasidagi sidlarni takrorlash.
WORM/vaqt shtamplari yo’qligi - voqealar tartibini isbotlab bo’lmaydi.
PF va biznes mantig’ini aralashtirish (masalan, bonus’mappingVer’da ko’rsatilmagan natija maydonini o’zgartiradigan tarzda qo’llaniladi).
FAQ (qisqacha)
Faqat ruletkani emas, balki slotlarni tekshirish mumkinmi?
Ha. PF saylov ketma-ketligiga nisbatan qo’llaniladi (masalan, barabandagi belgi indeksi). Ehtimollik jadvallari va RNG oʻqish tartibi hujjatlashtirilishi muhimdir.
Agar men’client _ seed’ni kiritsam, operator hali ham’server _ seed’ni tanlashi mumkinmi?
Agar kommit bahodan oldin e’lon qilingan bo’lsa, yo’q. U’server _ seed’ni oʻrnatadi va uni orqa songa almashtirishga imkon bermaydi.
Nima uchun ba’zan sidlar to’plamda ochiladi?
Shunday qilib, seriyadagi sidlarni «tanlab olish» mumkin emas. Agar kommit oldindan e’lon qilinsa va oshkor qilish siyosati shaffof bo’lsa, bunga yo’l qo’yiladi.
Mini-referens formatlari
Xeshlar: SHA-256 yoki Keccak-256.
RNG: HMAC-SHA256 (server sidi kalit sifatida) yoki konkatenatsiya SHA-256.
Identifikatorlar:’roundId’(UTC-shtamp + o’yin + inkrement),’nonce’(seriyadagi stavkalar hisoblagichi).
Версии: `rngAlgo=HMAC-SHA256@1`, `mappingVer=roulette. v2`, `calcVer=wallet-7. 2`.
Operator uchun PF joriy etish chek-varaqasi
Kriptografiya va sidlar
- CSPRNG/HSM; noyob’server _ seed’, hujjatlashtirilgan rotatsiya.
- ’client _ seed’- oʻyinchi tomonidan boshqariladigan, tarixda saqlanib qoladi.
Nashr etish va saqlash
- Tijorat stavkalari, tarix/nashr/langar kanaliga kirish.
- WORM ombori, UTC shtamplari, masshtablar uchun merkli-batchi.
Algoritmlar
- RNG va mapping siljishsiz; ’rngAlgo/mappingVer’ versiyasi.
- Skript/sahifa «Halollikni tekshirish» (open-source).
Live va gibrid
- CV/RFID/raundning xesh-langarlari, «stavkalar oynasi yopilganda» jurnali.
- Nizo tartib-taomillari (Kirish hisoboti → Natija, Commits/VRF havolalari).
Xavfsizlik va audit
- PF protokolining mustaqil auditi, bug’bountisi.
- Qarorlar mazmuni o’zgarmaydi; muntazam takrorlash testlari.
Provably Fair «bizga ishoning» ni «o’zingiz tekshiring» ga aylantiradi. Kommit/revil yoki VRF, determinizatsiya qilingan RNG va to’g’ri mapping bilan har qanday raund takrorlanadigan va tekshiriladigan bo’ladi. Futbolchi uchun bu shaffoflik va ishonch. Operator uchun - nizolar kamroq, brend kuchliroq va regulyator talablariga javob beradi. Eng asosiysi - intizom: kommitalarni oldindan e’lon qilish, algoritmlarning versiyalarini qayd etish, dalillarni o’zgarishsiz saqlash va foydalanuvchiga oddiy tekshirish vositasini berish.