Crash ойын нәтижесін тексеру: алгоритм, қауіпсіздік
1) Тексерудің мақсаты: сіз нені растайсыз
Өзгертілмейтіндігі: оператор сіздің тарифіңізден кейін нәтижені өзгерте алмады (сервер сид хеш коммитіне байланысты).
Ойнату қабілеті: кіріс деректері болса, ойын көрсеткен көбейткішті аласыз.
Рәсімнің тұтастығы: хабарлама форматы, инкремент 'nonce', дөңгелектеу ережесі және «house edge» қатаң ерекшеліктер бойынша қолданылған.
2) Оларсыз тексеру мүмкін емес деректер
1. Server Seed Hash (коммит) - тиісті «Server Seed» пайдаланылғанға дейін жарияланады.
2. Server Seed (кейінірек/кезең аяқталғаннан кейін ашылады).
3. Client Seed (Сіздің LED; сіз өзіңіз бересіз немесе платформа генерациялайды).
4. Nonce (ағымдағы 'Server Seed' ішіндегі мөлшерлеме санағы).
5. Хештеу алгоритмі (әдетте 'HMAC-SHA256' немесе 'SHA-256').
6. Хабарлама пішімі (мысалы: ': '), дәл бөлгіштер/тіркелгі/кодтау.
7. Хеш → көбейткіштің маппинг формуласы (және дөңгелектеу/минимум ережесі).
3) Тексеру алгоритмі (7 қадам)
1. Коммитті салыстырыңыз: 'SHA-256 (ServerSeed)' деп есептеңіз және жарияланған 'ServerSeedHash' деп салыстырыңыз.
2. Хабарды жинаңыз: қатаң түрде платформа пішімінде (мысалы, 'msg = ClientSeed + «:» + Nonce').
3. Раундтық хешті санаңыз:
4) Жалған құжат (Python/JS-ке бейімдеуге болады)
```python
Мұнда 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):
Маңызды: 'stub _ mapping' орнына платформаңыздың Fairness бөлімінен нақты формуланы қолданыңыз; әйтпесе тексеру дұрыс болмайды.
5) Жеке жағдайлар және су асты тастары
Бір раундта екі ставка: көптеген платформаларда 'nonce' сіздің әрбір ставкаңызға, тіпті олар бір раундта жасалса да өседі (мысалы: A → 'nonce = 42' ставкасы, B → 'nonce = 43' ставкасы). Тарих бойынша тексеріңіз.
'Client Seed' дегенді ауыстыру: 'nonce' дегенді ауыстырған кезде әдетте лақтырылады (немесе жаңа ағын басталады). Платформаңыздың ережелерін салыстырып тексеріңіз.
Батчи 'Server Seed': бір 'Server Seed' раундтар сериясына әрекет етеді, содан кейін жаңа коммит жарияланады; әртүрлі кезеңдегі тұқымдарды шатастырмаңыз.
Дөңгелектеу/минимум: екінші белгіге сәйкессіздік - 90% жағдайларда дөңгелектеу/минимум ережелеріндегі қателік (мысалы, тіркелген 1. 00 × арнайы жағдайда).
Кодтау/бос орындар: артық бос орын/жолды аудару, дұрыс емес регистр, UTF-8 тексеруді бұзады.
6) Раундты жылдам тексеру чек-парағы
1. 'SHA-256 (ServerSeed)' жарияланған 'ServerSeedHash' сәйкес келе ме?
2. 'message' және 'nonce' пішімі дұрыс қалыптастырылды ма?
3. Алгоритм ('HMAC-SHA256 '/' SHA-256') және кілт/өріс тәртібі қатаң спецификациясы бойынша қолданылды ма?
4. Маппинг пен дөңгелектеу құжаттармен бірдей ме?
5. Ерекше жағдайлар ескеріле ме (сирек кездейсоқ «сәтсіз қирау», кем дегенде 1. 00 ×, қаптар)?
6. Нәтижесі бір тиынға дейінгі ойын тарихымен сәйкес келе ме?
7) Бақылауды автоматтандыру (практика)
Логи: 'client _ seed', 'nonce' бірізділігін, уақыт белгісін, жиынтық көбейткішін сақтаңыз.
Сэмплинг: «Ревилден» кейін 'Server Seed' сценарийін кездейсоқ 20-50 раундтар; сәйкестік пайызын белгілеңіз (100% болуы керек).
Регрессия: ойын/провайдер нұсқасын ауыстырған кезде сол жиынтықты қуып шығыңыз.
Экспорт: CSV/JSON-ды бастапқы көздермен сақтаңыз - бұл сіздің «аудит-трекіңіз».
8) Қауіпсіздік: қателеспеу және өзін алдаудың алдын алу
Жергілікті/оффлайн режимінде тексеріңіз: тек оператордың веб-валидаторына сүйенбеңіз; өз сценарийіңізді сақтаңыз.
Толық деректер жиынтығынсыз раундтарға сенбеңіз: формула/пішім жоқ - верификация жоқ.
Күшті 'Client Seed': кездейсоқ сұраңыз, дүркін-дүркін өзгертіңіз (бұл RTP-ні арттырмайды, бірақ қайталану сұрақтарын жоққа шығарады).
TLS/сессиялар: тек HTTPS, 2FA арқылы кіру, тарихтың кірістері мен жүктемелерін қадағалау.
'Server Seed' дегенді ешкімге бермеңіз: оны оператор кезеңнен кейін жариялайды; сіздің міндетіңіз - салыстыру, оны алдын ала «алмау».
9) «Жаңадан келгендердің қателері»
Өрістердің реті шатастырылған ('Nonce: ClientSeed' орнына 'ClientSeed: Nonce').
'nonce' санағы нөлден бір орнына (немесе керісінше).
Платформаның бүкіл раундының хеші (global nonce) пайдаланылды, ал сіздің дербес 'nonce' қажет.
Қағидалар бойынша дөңгелектеу игноры (banker's rounding vs floor/ceil).
Ашылған 'Server Seed' емес, белсенді 'дегенді салыстыру.
10) Оператордың «Қызыл жалаулары»
Кезең басталғанға дейін жария Server Seed Hash жоқ.
Өзіңіздің Client Seed жүйеңізді орнатуға немесе nonce бағдарламасын қарауға болмайды.
Көбейткішке хэштің ашық маппинг формуласы жоқ.
Раундтар тарихы тексеру үшін минималды деректер бермейді.
Пішім және алгоритм ескертусіз/ерекшеліктер мұрағатынсыз өзгертілді.
11) Австралия контексті (AU)
Валюта: AUD-да ұтыстарды/ставкаларды есепке алыңыз, тарихты жүктеуді сақтаңыз (қолдау, даулы мәселелер).
Жауапты ойын (RG): депозит/уақыт лимиттері, үзілістер және өзін-өзі жою - адал қосымшаларда қол жетімді; оларды пайдаланыңыз.
Платформалық практикалар: адал операторларда «Fairness/Provably Fair» блогы верификацияның толық сипаттамасы мен мысалдарын қамтиды; егжей-тегжейінің болмауы - басқа сервисті таңдауға себеп.
12) Қорытынды
Crash-ойынның нәтижесін тексеру - бұл нақты рәсім:
Өз сценарийіңізді сақтаңыз, кіріс деректеріне логин енгізіңіз және кездейсоқ раундтарды ұдайы тексеріңіз. Осылайша сіз адалдықты сөзбен емес, математикалық тұрғыдан дәлелдейсіз.
Өзгертілмейтіндігі: оператор сіздің тарифіңізден кейін нәтижені өзгерте алмады (сервер сид хеш коммитіне байланысты).
Ойнату қабілеті: кіріс деректері болса, ойын көрсеткен көбейткішті аласыз.
Рәсімнің тұтастығы: хабарлама форматы, инкремент 'nonce', дөңгелектеу ережесі және «house edge» қатаң ерекшеліктер бойынша қолданылған.
2) Оларсыз тексеру мүмкін емес деректер
1. Server Seed Hash (коммит) - тиісті «Server Seed» пайдаланылғанға дейін жарияланады.
2. Server Seed (кейінірек/кезең аяқталғаннан кейін ашылады).
3. Client Seed (Сіздің LED; сіз өзіңіз бересіз немесе платформа генерациялайды).
4. Nonce (ағымдағы 'Server Seed' ішіндегі мөлшерлеме санағы).
5. Хештеу алгоритмі (әдетте 'HMAC-SHA256' немесе 'SHA-256').
6. Хабарлама пішімі (мысалы: '
7. Хеш → көбейткіштің маппинг формуласы (және дөңгелектеу/минимум ережесі).
💡Барлық ерекшелік Fairness/Provably Fair бөлімінде болуы тиіс. Егер бірдеңе болмаса - бұл қызыл ту (§ 10 қараңыз).
3) Тексеру алгоритмі (7 қадам)
1. Коммитті салыстырыңыз: 'SHA-256 (ServerSeed)' деп есептеңіз және жарияланған 'ServerSeedHash' деп салыстырыңыз.
2. Хабарды жинаңыз: қатаң түрде платформа пішімінде (мысалы, 'msg = ClientSeed + «:» + Nonce').
3. Раундтық хешті санаңыз:
- при `HMAC-SHA256`: `RoundHash = HMAC_SHA256(key=ServerSeed, msg=message)`;
'SHA-256' кезінде: 'RoundHash = SHA256 (ServerSeed | message)' немесе спецификацияда көрсетілгендей. |
---|---|
4. Кездейсоқтықты алыңыз: бірінші 'k' бит (жиі 52) → бүтін 'r', содан кейін 'u = r/2 ^ k' алыңыз. | |
5. Маппинг формуласын қолданыңыз: 'u' -ны көбейткішке түрлендіріңіз (house edge/ерекше жағдайлар ойын құжаттамасында ескеріледі). | |
6. Ойын ережелері бойынша дөңгелектеңіз (мысалы, 2 белгіге дейін, кем дегенде 1. 00 × және т.б.). | |
7. Тарихтағы раундтың қорытындысымен салыстырыңыз. Сәйкестік = дұрыс адалдық. |
4) Жалған құжат (Python/JS-ке бейімдеуге болады)
```python
Мұнда 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») пішімін спецификациядан қараңыз
- return hmac. new(server_seed, message, hashlib. sha256). digest () немесе hashlib. sha256(...)
def take_u_from_hash(h: bytes, k_bits=52) -> float:
- Үлкен битті тұтас r ретінде алыңыз
- r = int. from_bytes(h, "big") >> (256 - k_bits)
- return r / (1 << k_bits) u в [0, 1)
def stub_mapping(u: float) -> float:
- БІТЕГІШ! Ойын құжаттамасындағы формулаға ауыстыру
- Мысалы, кейде түрді түрлендіруді пайдаланады: crash = floor ((const/( r + 1)) 100 )/100
- және/немесе сирек мәжбүрлеу ретінде «house edge» 1. 00×. Бұл стубаны нақты тексеруде пайдаланбаңыз.
- 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) Коммит
- assert hashlib. sha256(server_seed). hexdigest() == server_seed_hash_hex. lower()
- 2-3) Раунд хеші
- h = round_hash(server_seed, client_seed, nonce)
- 4) u
- u = take_u_from_hash(h)
- 5-6) маппинг + дөңгелектеу
- calc_mult = stub_mapping(u)
- 7) салыстыру
- return abs(calc_mult - shown_multiplier) < 1e-9
- ```
Маңызды: 'stub _ mapping' орнына платформаңыздың Fairness бөлімінен нақты формуланы қолданыңыз; әйтпесе тексеру дұрыс болмайды.
5) Жеке жағдайлар және су асты тастары
Бір раундта екі ставка: көптеген платформаларда 'nonce' сіздің әрбір ставкаңызға, тіпті олар бір раундта жасалса да өседі (мысалы: A → 'nonce = 42' ставкасы, B → 'nonce = 43' ставкасы). Тарих бойынша тексеріңіз.
'Client Seed' дегенді ауыстыру: 'nonce' дегенді ауыстырған кезде әдетте лақтырылады (немесе жаңа ағын басталады). Платформаңыздың ережелерін салыстырып тексеріңіз.
Батчи 'Server Seed': бір 'Server Seed' раундтар сериясына әрекет етеді, содан кейін жаңа коммит жарияланады; әртүрлі кезеңдегі тұқымдарды шатастырмаңыз.
Дөңгелектеу/минимум: екінші белгіге сәйкессіздік - 90% жағдайларда дөңгелектеу/минимум ережелеріндегі қателік (мысалы, тіркелген 1. 00 × арнайы жағдайда).
Кодтау/бос орындар: артық бос орын/жолды аудару, дұрыс емес регистр, UTF-8 тексеруді бұзады.
6) Раундты жылдам тексеру чек-парағы
1. 'SHA-256 (ServerSeed)' жарияланған 'ServerSeedHash' сәйкес келе ме?
2. 'message' және 'nonce' пішімі дұрыс қалыптастырылды ма?
3. Алгоритм ('HMAC-SHA256 '/' SHA-256') және кілт/өріс тәртібі қатаң спецификациясы бойынша қолданылды ма?
4. Маппинг пен дөңгелектеу құжаттармен бірдей ме?
5. Ерекше жағдайлар ескеріле ме (сирек кездейсоқ «сәтсіз қирау», кем дегенде 1. 00 ×, қаптар)?
6. Нәтижесі бір тиынға дейінгі ойын тарихымен сәйкес келе ме?
7) Бақылауды автоматтандыру (практика)
Логи: 'client _ seed', 'nonce' бірізділігін, уақыт белгісін, жиынтық көбейткішін сақтаңыз.
Сэмплинг: «Ревилден» кейін 'Server Seed' сценарийін кездейсоқ 20-50 раундтар; сәйкестік пайызын белгілеңіз (100% болуы керек).
Регрессия: ойын/провайдер нұсқасын ауыстырған кезде сол жиынтықты қуып шығыңыз.
Экспорт: CSV/JSON-ды бастапқы көздермен сақтаңыз - бұл сіздің «аудит-трекіңіз».
8) Қауіпсіздік: қателеспеу және өзін алдаудың алдын алу
Жергілікті/оффлайн режимінде тексеріңіз: тек оператордың веб-валидаторына сүйенбеңіз; өз сценарийіңізді сақтаңыз.
Толық деректер жиынтығынсыз раундтарға сенбеңіз: формула/пішім жоқ - верификация жоқ.
Күшті 'Client Seed': кездейсоқ сұраңыз, дүркін-дүркін өзгертіңіз (бұл RTP-ні арттырмайды, бірақ қайталану сұрақтарын жоққа шығарады).
TLS/сессиялар: тек HTTPS, 2FA арқылы кіру, тарихтың кірістері мен жүктемелерін қадағалау.
'Server Seed' дегенді ешкімге бермеңіз: оны оператор кезеңнен кейін жариялайды; сіздің міндетіңіз - салыстыру, оны алдын ала «алмау».
9) «Жаңадан келгендердің қателері»
Өрістердің реті шатастырылған ('Nonce: ClientSeed' орнына 'ClientSeed: Nonce').
'nonce' санағы нөлден бір орнына (немесе керісінше).
Платформаның бүкіл раундының хеші (global nonce) пайдаланылды, ал сіздің дербес 'nonce' қажет.
Қағидалар бойынша дөңгелектеу игноры (banker's rounding vs floor/ceil).
Ашылған 'Server Seed' емес, белсенді 'дегенді салыстыру.
10) Оператордың «Қызыл жалаулары»
Кезең басталғанға дейін жария Server Seed Hash жоқ.
Өзіңіздің Client Seed жүйеңізді орнатуға немесе nonce бағдарламасын қарауға болмайды.
Көбейткішке хэштің ашық маппинг формуласы жоқ.
Раундтар тарихы тексеру үшін минималды деректер бермейді.
Пішім және алгоритм ескертусіз/ерекшеліктер мұрағатынсыз өзгертілді.
11) Австралия контексті (AU)
Валюта: AUD-да ұтыстарды/ставкаларды есепке алыңыз, тарихты жүктеуді сақтаңыз (қолдау, даулы мәселелер).
Жауапты ойын (RG): депозит/уақыт лимиттері, үзілістер және өзін-өзі жою - адал қосымшаларда қол жетімді; оларды пайдаланыңыз.
Платформалық практикалар: адал операторларда «Fairness/Provably Fair» блогы верификацияның толық сипаттамасы мен мысалдарын қамтиды; егжей-тегжейінің болмауы - басқа сервисті таңдауға себеп.
12) Қорытынды
Crash-ойынның нәтижесін тексеру - бұл нақты рәсім:
- 'Server Seed Hash' коммитін салыстыру,
- қалпына келтіру 'RoundHash' бойынша 'Server Seed', 'Client Seed', 'nonce' және алгоритм,
- жарияланған маппинг формуласын және дөңгелектеу ережелерін қолдану,
- сіздің тексеруіңізде және ойынның тарихында бірдей көбейткіш.
Өз сценарийіңізді сақтаңыз, кіріс деректеріне логин енгізіңіз және кездейсоқ раундтарды ұдайы тексеріңіз. Осылайша сіз адалдықты сөзбен емес, математикалық тұрғыдан дәлелдейсіз.