Crash თამაშის შედეგის შემოწმება: ალგორითმი, უსაფრთხოება

1) შემოწმების მიზანი: რას ამტკიცებთ

შეუსაბამობა: ოპერატორმა ვერ შეცვალა შედეგი თქვენი განაკვეთის შემდეგ (სერვერის სიდის ჰაშის კომიტის გამო).

რეპროდუქცია: შეყვანის მონაცემებით, თქვენ იღებთ იგივე ფაქტორს, რაც თამაშმა აჩვენა.

პროცედურის მთლიანობა: შეტყობინებების ფორმატი, ვადა 'nonce', დამრგვალების წესი და „სახლი edge“ მკაცრად გამოიყენება სპეციფიკაციით.

2) მონაცემები, რომლის გარეშეც შემოწმება შეუძლებელია

1. Server Seed Hash (კომუნა) - ქვეყნდება შესაბამისი 'Server Seed' - ის გამოყენებამდე.

2. Server Seed (ვლინდება მოგვიანებით/პერიოდის ბოლოს).

3. Client Seed (თქვენი Sid; თქვენ განსაზღვრავთ მას საკუთარ თავს ან წარმოქმნიან პლატფორმას).

4. Nonce (თქვენი განაკვეთების მრიცხველი მიმდინარე 'Server Seed' - ის ფარგლებში).

5. ჰაშირების ალგორითმი (ჩვეულებრივ 'HMAC-SHA256' ან 'SHA-256').

6. გზავნილის ფორმატი (მაგალითი: '' : '), ზუსტი გამყოფი/რეესტრი/კოდირება.

7. Hash mapping ფორმულა არის ფაქტორი (და დამრგვალების წესი/მინიმალური).

💡 ყველა სპეციფიკაცია უნდა იყოს ოპერატორის Fairness/Provably Fair- ის განყოფილებაში. თუ რამე არ არის, ეს არის წითელი დროშა (იხ. § 10).

3) გადამოწმების ალგორითმი (7 ნაბიჯი)

1. შეამოწმეთ კომუნა: გაითვალისწინეთ 'SHA-256 (ServerSeed)' და შეადარეთ გამოქვეყნებულ 'Server SeedHash- ს ".

2. შეაგროვეთ შეტყობინება: მკაცრად პლატფორმის ფორმატით (მაგალითად, 'msg = ClientSeed + „:“ + Nonce').

3. გაითვალისწინეთ მრგვალი ჰაში:
  • при `HMAC-SHA256`: `RoundHash = HMAC_SHA256(key=ServerSeed, msg=message)`;
  • 'SHA-256' -ში: 'RoundHash = SHA256 (ServerSeed | | შეტყობინებები)' ან როგორც მითითებულია სპეციფიკაციაში.
  • 4. ამოიღეთ უბედური შემთხვევა: აიღეთ პირველი 'k' bit (ხშირად 52) - მთელი 'r', შემდეგ 'u = r/2 ^ k'.
  • 5. გამოიყენეთ mapping ფორმულა: გადააქციეთ '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:
მესიჯი = „{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 = 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
ან/და „სახლი 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 '- ის შეცვლა: sid' nonce- ის შეცვლისას, ის ჩვეულებრივ იშლება (ან იწყება ახალი ნაკადი). შეამოწმეთ თქვენი პლატფორმის წესები.

Butchi 'Server Seed': ერთი 'Server Seed' მოქმედებს რაუნდების სერიაზე, შემდეგ ქვეყნდება ახალი კომუნა; ნუ დაიბნევით სხვადასხვა პერიოდის თესლი.

დამრგვალება/მინიმუმი: მეორე ნიშნის შეუსაბამობა - შემთხვევების 90% -ში შეცდომა დამრგვალების/მინიმუმის წესებში (მაგალითად, ფიქსირებული 1). 00 × სპეციალური პირობით).

კოდირება/ხარვეზები: დამატებითი უფსკრული/ხაზის თარგმნა, არასწორი რეესტრი, არა-UTF-8 არღვევს აუდიტს.

6) სწრაფი რაუნდის შემოწმების ჩეკის სია

1. ემთხვევა „SHA-256 (ServerSeed)“ გამოქვეყნებული „Servert SeedHash“?

2. სწორად არის ჩამოყალიბებული „მესიჯი“ და ფორმატი „nonce“?

3. ალგორითმი ('HMAC-SHA256 '/' SHA-256') და გასაღები/ველების რიგი მკაცრად გამოიყენება სპეციფიკაციით?

4. მაპინგი და დამრგვალება იდენტური დოკუმენტაციაა?

5. გათვალისწინებულია თუ არა სპეციალური შემთხვევები (იშვიათი „მყისიერი კრახი“, მინიმუმ 1. 00 ×, ქუდი)?

6. შედეგი ემთხვევა პენის თამაშის ისტორიას?

7) კონტროლის ავტომატიზაცია (პრაქტიკა)

Logs: შეინარჩუნეთ 'client _ seed', თანმიმდევრობა 'nonce', დროის ნიშანი, საბოლოო ფაქტორი.

Sampling: „revil“ 'Server Seed- ის შემდეგ, სკრიპტით გადაიტანეთ შემთხვევითი 20-50 რაუნდი; ჩაწერეთ დამთხვევების პროცენტი (უნდა იყოს 100%).

რეგრესია: თამაშის/პროვაიდერის ვერსიის შეცვლისას, იგივე ნაკრები გამოიტანეთ.

ექსპორტი: შეინახეთ CSV/JSON წყაროებით - ეს არის თქვენი „აუდიტის სიმღერა“.

8) უსაფრთხოება

შეამოწმეთ ადგილობრივი/offline: ნუ დაეყრდნობით მხოლოდ ოპერატორის ვებ ლიდერს; შეინარჩუნეთ საკუთარი სკრიპტი.

ნუ ენდობით რაუნდებს მონაცემთა სრული პაკეტის გარეშე: არ არსებობს ფორმულა/ფორმატი - არ არსებობს გადამოწმება.

ძლიერი 'Client Seed': დაუსვით შემთხვევითი, შეცვალეთ პერიოდულად (ეს არ ზრდის RTP- ს, მაგრამ გამორიცხავს კითხვებს რეპროდუქციისკენ).

TLS/სესიები: შესვლა მხოლოდ HTTPS, 2FA, შეყვანისა და ისტორიის გადმოტვირთვის მონიტორინგი.

არავის გადასცეს „Server Seed“: ის გამოქვეყნებულია ოპერატორის მიერ პერიოდის შემდეგ; თქვენი ამოცანაა შეამოწმოთ, წინასწარ არ მიიღოთ იგი.

9) ტიპიური „ახალბედა შეცდომები“

მინდვრის შეკვეთა დაბნეულია ('Nonce: ClientSeed' ნაცვლად 'ClientSeed: Nonce').

'nonce' ანგარიში ნულიდან ერთეულის ნაცვლად (ან პირიქით).

გამოიყენება პლატფორმის მთელი რაუნდის ჰაში, და თქვენ გჭირდებათ თქვენი პირადი 'nonce'.

დამრგვალების უგულებელყოფა წესების შესაბამისად.

შერიგება აქტიურთან და არა უკვე გახსნილ 'სერვერ სედთან ".

10) წითელი დროშები ოპერატორთან

პერიოდის დაწყებამდე არ არის საჯარო სერვერი Seed Hash.

თქვენ არ შეგიძლიათ დაუსვათ თქვენი Client Seed ან ნახოთ nonce.

არ არსებობს ჰაშის მაპინგის საზოგადოებრივი ფორმულა ფაქტორში.

რაუნდის ისტორია არ იძლევა მინიმალურ მონაცემებს გადამოწმებისთვის.

ფორმატი და ალგორითმი შეიცვალა სპეციფიკაციის შეტყობინების/არქივის გარეშე.

11) ავსტრალიის კონტექსტი (AU)

ვალუტა: გაითვალისწინეთ AUD- ში მოგება/განაკვეთები, შეინახეთ მოთხრობების გადმოტვირთვა (მხარდაჭერა, საკამათო საკითხები).

საპასუხისმგებლო თამაში (RG): ანაბრის/დროის ლიმიტები, პაუზები და თვითკმაყოფილება - ხელმისაწვდომია კეთილსინდისიერ პროგრამებში; გამოიყენეთ ისინი.

პლატფორმის პრაქტიკა: კეთილსინდისიერი ოპერატორებისთვის, Fairness/Provably Fair ბლოკი შეიცავს სრულ აღწერასა და გადამოწმების მაგალითებს; დეტალების არარსებობა არის სხვა სერვისის არჩევის მიზეზი.

12) შედეგი

Crash თამაშის შედეგის შემოწმება მკაფიო პროცედურაა:
  • Commite 'Server Seed Hash',
  • RoundHash- ის აღდგენა 'Server Seed', 'Client Seed', 'nonce' და ალგორითმი,
  • გამოქვეყნებული mapping ფორმულის და დამრგვალების წესების გამოყენება,
  • იდენტური ფაქტორი თქვენს შემოწმებაში და თამაშის ისტორიაში.

შეინარჩუნეთ საკუთარი სკრიპტი, შეაფასეთ შეყვანის მონაცემები და პერიოდულად შეამოწმეთ შემთხვევითი რაუნდი. ასე რომ, თქვენ დაადასტურებთ პატიოსნებას არა სიტყვებით, არამედ მათემატიკურად.

Caswino Promo