Crash խաղի արդյունքի ստուգումը 'ալգորիթմ, անվտանգություն

1) Ստուգման նպատակը հետևյալն է

Անփոխարինելիությունը 'օպերատորը չէր կարող փոխել արդյունքը ձեր տոկոսադրույքից հետո (սերվերային սիդի հեշի պատճառով)։

Վերարտադրողականություն 'ունենալով մուտքային տվյալներ, դուք ստանում եք նույն բազմապատիկը, որը ցույց է տվել խաղը։

Ընթացակարգի ամբողջականությունը 'հաղորդագրության ձևաչափը, կոդավորումը' nonce ', կլորացման կանոնը և «house edge» -ը կիրառվել են խիստ ճշգրտությամբ։

2) Տվյալները, առանց որոնց ստուգումը անհնար է

1. Server Seed Hash (կոմունիտ) - հրապարակվում է մինչև համապատասխան «Server Seed» օգտագործելը։

2. Server Seed (բացահայտվում է ժամանակի վերջում)։

3. Client Seed (ձեր սիդը; դուք առաջադրանք եք տալիս, թե պլատֆորմը ստեղծում է)։

4. Nonce (ձեր մրցույթի հաշվիչը ընթացիկ «Server Seed»)։

5. Հեշինգի ալգորիթմը (սովորաբար «HMAC-SHA256» կամ «SHA-256»)։

6. Հաղորդագրության ձևաչափը (օրինակ ՝ <: >), ճշգրիտ բաժանիչներ/գրանցում/կոդավորում։

7. Մապինգի հեշի բանաձևը շատ է (և կլորացման կանոն/նվազագույն)։

💡 Ամբողջ ճշգրտումը պետք է լինի օպերատորի Fairness/Provably Fox բաժնում։ Եթե ինչ-որ բան չկա, դա կարմիր դրոշն է (տե՛ ս թիվ 10)։

3) Ստուգման ալգորիթմ (7 քայլ)

1. Հաշվեք «SHA-256 (Windows Seed)» և համեմատեք հրատարակված «Windows SeedHash» -ի հետ։

2. Հավաքեք հաղորդագրություն 'խստորեն պլատֆորմի ձևաչափով (օրինակ ՝ «www.g = ClientSeed +»)։

3. Հաշեք տուրիստական հեշը

при `HMAC-SHA256`: `RoundHash = HMAC_SHA256(key=ServerSeed, msg=message)`;

«SHA-256»: «RoundHash = SHA256 (Windows Seed international)» կամ ինչպես նշված է ճշգրտության մեջ։

4. Վերցրեք պատահականությունը 'վերցրեք առաջին' k 'bit (հաճախ 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:
= f «+ client _ seed +: ww.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×. Մի օգտագործեք այն իրական ստուգման մեջ։
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» սովորաբար նետվում է (կամ սկսում է նոր հոսքը)։ Ստուգեք ձեր պլատֆորմի կանոնները։

Batchi 'Server Seed': Մեկ 'Server Seed "-ը գործում է մի շարք փուլերի վրա, հետո հրապարակում է նոր կոմունիստ։ մի շփոթեք տարբեր ժամանակահատվածների սերմերը։

Կլորացումը/նվազագույն: Երկրորդ նշանի անհամապատասխանությունը 90% դեպքերում սխալ է կլորացման/նվազագույնի կանոններում (օրինակ, ֆիքսված 1։ 00 ռուբլիներ սպայական պայմանով)։

Կոդավորումը/կոդավորումը 'լրացուցիչ բացթողում/տողի թարգմանություն, սխալ գրանցում, ոչ-UTF-8 կոտրում են ստուգումը։

6) Արագ ստուգման թուղթ

1. Արդյո՞ ք «SHA-256 (Windows Seed)» -ը համընկնում է հրատարակված «Live SeedHash» -ի հետ։

2. Արդյո՞ ք ձևավորված է «nonce» և «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-ը, բայց բացառում է վերարտադրողականության հարցերը)։
  • TFC/նստաշրջաններ 'միայն 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 Fox» բլոկը պարունակում է ամբողջական նկարագրություն և ստուգման օրինակներ։ մանրամասների բացակայությունը մեկ այլ ծառայություն ընտրելու պատճառ է։

12) Արդյունքը

Crash խաղի արդյունքի ստուգումը պարզ ընթացակարգ է

«Server Seed Hash»,
  • «RoundHash» վերականգնումը '«Server Seed», «Client Seed», «nonce» և ալգորիթմ,
  • մապինգի և կլորացման կանոնների կիրառումը,
  • Ձեր ստուգման և խաղի պատմության մեջ նույնական մեծահասակ։

Պահեք ձեր սեփական ջութակը, տրամաբանեք մուտքային տվյալները և պարբերաբար ստուգեք պատահական փուլերը։ Այդպես դուք հաստատում եք ազնվությունը ոչ թե բառերով, այլ մաթեմատիկորեն։

Caswino Promo