Crash оюн натыйжасын текшерүү: алгоритм, коопсуздук
1) Текшерүү максаты: сиз так эмнени тастыктайсыз
Өзгөрүлбөстүк: оператор сиздин коюмуңуздан кийин натыйжаны өзгөртө алган жок (Server Sid Committ хэш эсебинен).
Воспроизводимость: Кирүү маалыматтары менен сиз оюн көрсөткөн көбөйткүчтү аласыз.
Жол-жоболордун бүтүндүгү: билдирүү форматы, increment '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. Mapping хеш формуласы → көбөйткүч (жана тегеректөө/минималдуу эреже).
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. Mapping формуласын колдонуңуз: 'u' ны көбөйткүчкө айландырыңыз (house edge/атайын учурлар оюндун документтери боюнча эске алынат).
- 6. Оюндун эрежелери боюнча тегеректеп (мисалы, 2 белгиге чейин, жок дегенде 1. 00 × ж.б.).
- 7. Тарыхтагы раунддун жыйынтыгы менен салыштырыңыз. дал = туура чынчылдык.
4) Pseudo Code (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:
k улук бит бир 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×. реалдуу текшерүүдө бул stub колдонбогула.
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) mapping + тегеректөө
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. Mapping жана тегеректөө документтер менен бирдей?
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').
Эсеп нөлдөн бирдиктин ордуна (же тескерисинче).
Платформанын бүткүл раундунун хеш (global nonce) колдонулган жана сиздин жеке 'nonce' керек.
эрежелер боюнча тегеректөө Ignor (banker's rounding vs floor/ceil).
Буга чейин ачылган 'Server Seed' менен эмес, активдүү менен салыштыруу.
10) "Кызыл желектер" оператору
Эч кандай коомдук Server Seed Hash башталганга чейин.
Сиз сиздин Client Seed же nonce көрө албайт.
Эч кандай коомдук mapping хеш формуласы жок.
Раунддардын тарыхы салыштыруу үчүн минималдуу маалыматтарды бербейт.
Формат жана алгоритм эскертүүсүз/архивдик спецификациясыз өзгөртүлгөн.
11) Австралия контексти (AU)
Валюта: AUD боюнча утуштарды/коюмдарды эсепке алыңыз, тарыхты түшүрүүнү сактаңыз (колдоо, талаштуу маселелер).
Жоопкерчиликтүү оюн (RG): депозит/убакыт лимиттери, тыныгуулар жана өзүн-өзү жоюу - ак ниет тиркемелерде жеткиликтүү; аларды колдонуңуз.
Платформа практикалары: ак ниет операторлордо "Fairness/Provably Fair" блогу текшерүүнүн толук сүрөттөлүшүн жана мисалдарын камтыйт; маалымат жоктугу - башка кызматты тандоого негиз.
12) Жыйынтык
Crash оюн натыйжасын текшерүү - бул так жол-жобосу болуп саналат:- коммитти салыштыруу 'Server Seed Hash',
- калыбына келтирүү 'RoundHash' боюнча 'Server Seed', 'Client Seed', 'nonce' жана алгоритм,
- жарыяланган mapping формуласын жана тегеректөө эрежелерин колдонуу,
- сиздин текшерүү жана оюн тарыхында бирдей көбөйткүч.
Өзүңүздүн сценарийиңизди сактап, кирүү маалыматтарын логиндеп, мезгил-мезгили менен туш келди раунддарды текшерип туруңуз. Демек, сиз чынчылдыкты сөз жүзүндө эмес, математикалык жактан тастыктайсыз.