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. Մապինգի հեշի բանաձևը շատ է (և կլորացման կանոն/նվազագույն)։
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:
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» սովորաբար նետվում է (կամ սկսում է նոր հոսքը)։ Ստուգեք ձեր պլատֆորմի կանոնները։
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» և ալգորիթմ,
մապինգի և կլորացման կանոնների կիրառումը,
Ձեր ստուգման և խաղի պատմության մեջ նույնական մեծահասակ։
Պահեք ձեր սեփական ջութակը, տրամաբանեք մուտքային տվյալները և պարբերաբար ստուգեք պատահական փուլերը։ Այդպես դուք հաստատում եք ազնվությունը ոչ թե բառերով, այլ մաթեմատիկորեն։
Անփոխարինելիությունը 'օպերատորը չէր կարող փոխել արդյունքը ձեր տոկոսադրույքից հետո (սերվերային սիդի հեշի պատճառով)։
Վերարտադրողականություն 'ունենալով մուտքային տվյալներ, դուք ստանում եք նույն բազմապատիկը, որը ցույց է տվել խաղը։
Ընթացակարգի ամբողջականությունը 'հաղորդագրության ձևաչափը, կոդավորումը' 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» և ալգորիթմ,
մապինգի և կլորացման կանոնների կիրառումը,
Ձեր ստուգման և խաղի պատմության մեջ նույնական մեծահասակ։
Պահեք ձեր սեփական ջութակը, տրամաբանեք մուտքային տվյալները և պարբերաբար ստուգեք պատահական փուլերը։ Այդպես դուք հաստատում եք ազնվությունը ոչ թե բառերով, այլ մաթեմատիկորեն։