क्रैश खेल के परिणाम की जाँच करें: एल्गोरिथ्म, सुरक्षा
1) सत्यापन का उद्देश्य: आप वास्तव में क्या पुष्टि करते
अपरिवर्तनीयता: आपके शर्त के बाद ऑपरेटर परिणाम नहीं बदल सका (सर्वर बीज हैश की प्रतिबद्धता के कारण)।
प्रजनन क्षमता: इनपुट होने के कारण, आपको वही गुणक मिलता है जो खेल ने दिखाया था।
प्रक्रिया अखंडता: संदेश प्रारूप, वृद्धि 'nonce', गोल नियम और "हाउस एज" को कड़ाई से विनिर्देश के अनुसार लागू किया जाता है।
2) डेटा जिसके बिना सत्यापन असंभव है
1. सर्वर बीज हैश (कमिट) - संबंधित 'सर्वर बीज' का उपयोग करने से पहले प्रकाशित।
2. सर्वर बीज (अवधि के अंत में बाद में/प्रकट किया गया)।
3. क्लाइंट बीज (आपका बीज; आप इसे स्वयं सेट करते हैं या मंच उत्पन्न करता है)
4. नॉन (वर्तमान 'सर्वर बीज' के भीतर आपके दांव का काउंटर)।
5. हैश एल्गोरिथ्म (आमतौर पर 'HMAC-SHA256' या 'SHA-256')।
6. संदेश प्रारूप (उदाहरण: '": "), सटीक परिसीमन/केस/एन्कोडिंग।
7. हैश मैपिंग फॉर्मूला - एक गुणक (और एक गोल/न्यूनतम नियम)।
3) सत्यापन एल्गोरिथ्म (7 चरण)
1. प्रतिबद्धता की तुलना करें: 'SHA-256 (ServerSeed)' की गणना करें और प्रकाशित 'ServerSeedHash' के साथ तुलना करें।
2. संदेश एकत्र करें: कड़ाई से प्लेटफ़ॉर्म प्रारूप में (उदाहरण के लिए, 'msg = ClientSeed + ":" + Nonce')।
3. राउंड हैश की गिनती करें:
4) स्यूडोकोड (पायथन/जेएस के लिए अनुकूलित किया जा सकता है)
"" अजगर
यहाँ प्रविष्ट करें अपने मंच से सटीक मानचित्रण सूत्र stub_mapping () के बजाय
आयात hmac, hashlib, गणित
def round_hash (server_seed: बाइट्स, client_seed: str, nonce: int) -> बाइट्स:
def take_u_from_hash (h: बाइट्स, k_bits=52) -> फ्लोट:
def stub_mapping (u: float) -> फ्लोट:
def सत्यापित करें (server_seed_hex, server_seed_hash_hex, client_seed, अस्थायी, shown_multiplier):
महत्वपूर्ण: 'स्टब _ मैपिंग' के बजाय, अपने प्लेटफॉर्म के फेयरनेस सेक्शन से सटीक फॉर्मूला लागू करें; अन्यथा, चेक गलत हो जाएगा।
5) विशेष मामले और नुकसान
एक दौर में दो दांव: कई प्लेटफार्मों में आपके प्रत्येक दांव के लिए 'नॉन' वेतन वृद्धि होती है, भले ही उन्हें एक ही दौर में रखा जाए (उदाहरण: शर्त ए 'नॉनस = 42', शर्त बी 'नॉनस = 43')। इतिहास से जाँच करें।
'क्लाइंट सीड' बदलना: बीज बदलते समय, 'नोन' आमतौर पर रीसेट होता है (या एक नई धारा शुरू होती है)। अपने मंच के नियमों की तुलना करें।
बैची 'सर्वर सीड': वन 'सर्वर सीड' राउंड की एक श्रृंखला पर काम करता है, फिर एक नया कमिट प्रकाशित होता है; विभिन्न अवधियों से बीजों को भ्रमित न करें।
राउंडिंग/न्यूनतम: दूसरे साइन पर बेमेल - 90% मामलों में, राउंडिंग/न्यूनतम नियमों में एक त्रुटि (उदाहरण के लिए, निश्चित 1। विशेष परिस्थितियों में 00 ×)।
एनकोडिंग/रिक्त स्थान: अतिरिक्त स्थान/पंक्ति फ़ीड, गलत मामला, non-UTF-8 ब्रेक जांच।
6) क्विक राउंड चेक लिस्ट
1. क्या 'SHA-256 (ServerSeed)' प्रकाशित 'ServerSeedHash' से मेल खाता है?
2. क्या 'मेसेज' और 'नॉन' प्रारूप सही ढंग से बना है?
3. एल्गोरिथ्म ('HMAC-SHA256 '/' SHA-256') और कुंजी/क्षेत्र आदेश विनिर्देश के अनुसार सख्ती से लागू होते हैं?
4. क्या मैपिंग और राउंडिंग प्रलेखन के समान हैं?
5. क्या विशेष मामले (दुर्लभ "त्वरित क्रैश", न्यूनतम 1। 00 ×, माउथगार्ड)?
6. क्या परिणाम खेल के इतिहास के साथ पैसे के साथ मेल खाता है?
7) नियंत्रण का स्वचालन (अभ्यास)
लॉग: 'क्लाइंट _ सीड', अनुक्रम 'नॉनस', टाइमस्टैम्प, अंतिम गुणक रखें।
नमूना: 'सर्वर सीड' के "दहाड़" के बाद, यादृच्छिक 20-50 राउंड के माध्यम से स्क्रिप्ट चलाएं; मिलान प्रतिशत ठीक करें (100% होना चाहिए).
प्रतिगमन: खेल/प्रदाता का संस्करण बदलते समय, एक ही सेट चलाएँ।
निर्यात: स्रोतों के साथ CSV/JSON संग्रहीत करें - यह आपका "ऑडिट ट्रैक" है।
8) सुरक्षा: गलतियाँ कैसे न करें और खुद को मूर्ख होने दें
स्थानीय रूप से/ऑफ़लाइन जाँचें: केवल ऑपरेटर के वेब वेलिडेटर पर भरोसा न करें; अपनी स्क्रिप्ट रखें।
पूर्ण डाटा पैकेज के बिना राउंड पर भरोसा न करें: कोई सूत्र/प्रारूप नहीं - कोई सत्यापन नहीं।
मजबूत 'क्लाइंट सीड': बेतरतीब ढंग से पूछें, समय-समय पर बदलें (इससे आरटीपी में वृद्धि नहीं होती है, लेकिन प्रजनन क्षमता के बारे में प्रश्न बाहर होते हैं)।
TLS/सत्र: HTTPS-केवल लॉगिन, 2FA, ट्रैकिंग इतिहास लॉगिन और अपलोड।
किसी को 'सर्वर बीज' न दें: यह अवधि के बाद ऑपरेटर द्वारा प्रकाशित किया जाता है; आपका कार्य सत्यापित करना है, इसे पहले से "प्राप्त" करना नहीं।
9) विशिष्ट "धोखेबाज़त्रुटियाँ"
मिश्रित क्षेत्र क्रम ('Nonce: ClientSeed' के बजाय 'ClientSeed: Nonce')।
एक (या इसके विपरीत) के बजाय शून्य से 'नॉन' की गिनती करें।
प्लेटफ़ॉर्म (वैश्विक नॉन) के पूरे दौर के हैश का उपयोग किया गया था, लेकिन आपको अपने व्यक्तिगत 'नॉन' की आवश्यकता है।
बैंकर का राउंडिंग बनाम फर्श/छत।
सक्रिय के विरुद्ध जाँच करें, पहले से उजागर नहीं 'सर्वर बीज'.
10) ऑपरेटर पर "लाल झंडे"
अवधि की शुरुआत से पहले कोई सार्वजनिक सर्वर बीज हैश नहीं।
आप अपना क्लाइंट बीज या दृश्य अस्थायी सेट नहीं कर सकते।
कोई सार्वजनिक गुणक हैश मैपिंग फॉर्मूला नहीं है।
राउंड का इतिहास सामंजस्य के लिए न्यूनतम डेटा प्रदान नहीं करता है।
प्रारूप और एल्गोरिथ्म को बिना नोटिस/विनिर्देश संग्रह के बदल दिया गया।
11) ऑस्ट्रेलियाई संदर्भ (एयू)
मुद्रा: AUD में जीत/दांव का रिकॉर्ड रखें, कहानियों का अपलोड रखें (समर्थन, विवादास्पद मुद्दे)।
जिम्मेदार प्ले (आरजी): जमा/समय सीमा, ठहराव और स्व-बहिष्करण - बोना फाइड ऐप में उपलब्ध है; उनका उपयोग करें।
प्लेटफ़ॉर्म प्रथाओं: बोना फ़ाइड ऑपरेटरों के लिए, निष्पक्षता/निष्पक्षता मेला ब्लॉक में एक पूर्ण विवरण और सत्यापन के उदाहरण हैं; विवरण की कमी दूसरी सेवा चुनने का एक कारण है।
12) नीचे की रेखा
क्रैश गेम के परिणाम की जाँच करना एक स्पष्ट प्रक्रिया है:
अपनी स्वयं की स्क्रिप्ट, लॉग इनपुट रखें और समय-समय पर यादृच्छिक दौर की जाँच करें। तो आप ईमानदारी की पुष्टि शब्दों में नहीं, बल्कि गणितीय रूप से करते हैं।
अपरिवर्तनीयता: आपके शर्त के बाद ऑपरेटर परिणाम नहीं बदल सका (सर्वर बीज हैश की प्रतिबद्धता के कारण)।
प्रजनन क्षमता: इनपुट होने के कारण, आपको वही गुणक मिलता है जो खेल ने दिखाया था।
प्रक्रिया अखंडता: संदेश प्रारूप, वृद्धि 'nonce', गोल नियम और "हाउस एज" को कड़ाई से विनिर्देश के अनुसार लागू किया जाता है।
2) डेटा जिसके बिना सत्यापन असंभव है
1. सर्वर बीज हैश (कमिट) - संबंधित 'सर्वर बीज' का उपयोग करने से पहले प्रकाशित।
2. सर्वर बीज (अवधि के अंत में बाद में/प्रकट किया गया)।
3. क्लाइंट बीज (आपका बीज; आप इसे स्वयं सेट करते हैं या मंच उत्पन्न करता है)
4. नॉन (वर्तमान 'सर्वर बीज' के भीतर आपके दांव का काउंटर)।
5. हैश एल्गोरिथ्म (आमतौर पर 'HMAC-SHA256' या 'SHA-256')।
6. संदेश प्रारूप (उदाहरण: '"
7. हैश मैपिंग फॉर्मूला - एक गुणक (और एक गोल/न्यूनतम नियम)।
💡संपूर्ण विनिर्देश ऑपरेटर के निष्पक्षता/निष्पक्ष निष्पक्ष अनुभाग में होना चाहिए। यदि कुछ नहीं है, तो यह एक लाल झंडा है (देखें। 10)।
3) सत्यापन एल्गोरिथ्म (7 चरण)
1. प्रतिबद्धता की तुलना करें: 'SHA-256 (ServerSeed)' की गणना करें और प्रकाशित 'ServerSeedHash' के साथ तुलना करें।
2. संदेश एकत्र करें: कड़ाई से प्लेटफ़ॉर्म प्रारूप में (उदाहरण के लिए, 'msg = ClientSeed + ":" + Nonce')।
3. राउंड हैश की गिनती करें:
- при 'HMAC-SHA256': 'राउंडहैश = HMAC_SHA256 (कुंजी = ServerSeed, msg = संदेश)';
जब 'SHA-256': 'राउंडहैश = SHA256 (ServerSeed | संदेश)' या जैसा कि विनिर्देश में निर्दिष्ट है। |
---|---|
4. यादृच्छिकता निकालें: पहले 'k' बिट्स (अक्सर 52) → पूर्णांक 'r', फिर 'u = r/2 ^ k' लें। | |
5. मैपिंग फॉर्मूला लागू करें: 'यू' को एक गुणक में परिवर्तित करें (गेम प्रलेखन के अनुसार हाउस एज/विशेष मामलों को ध्यान में रखा जाता है)। | |
6. खेल के नियमों के अनुसार गोल करें (उदाहरण के लिए, 2 वर्ण तक, कम से कम 1। 00 ×, आदि)। | |
7. इतिहास में कुल दौर के साथ तुलना करें। संयोग = सही ईमानदारी। |
4) स्यूडोकोड (पायथन/जेएस के लिए अनुकूलित किया जा सकता है)
"" अजगर
यहाँ प्रविष्ट करें अपने मंच से सटीक मानचित्रण सूत्र stub_mapping () के बजाय
आयात hmac, hashlib, गणित
def round_hash (server_seed: बाइट्स, client_seed: str, nonce: int) -> बाइट्स:
- संदेश = f "{client _ seed}: {nonce}". एनकोड ("utf-8") प्रारूप विनिर्देशन देखें
- वापसी hmac। नया (server_seed, संदेश, हैशलिब। sha256)। पचाना () या हैशलिब। sha256 (...)
def take_u_from_hash (h: बाइट्स, k_bits=52) -> फ्लोट:
- हम एक पूरे आर के रूप में k सबसे महत्वपूर्ण बिट्स लेते हैं
- r = int। from_bytes (h, "बड़ा")> (256 - k_bits)
- रिटर्न r/( 1 <
def stub_mapping (u: float) -> फ्लोट:
- STUB! अपने खेल प्रलेखन से सूत्र के साथ बदलें
- उदाहरण के लिए, कभी-कभी फॉर्म के एक परिवर्तन का उपयोग किया जाता है: क्रैश = फर्श (कांस्ट/( आर + 1)) 100 )/100
- और/या "हाउस एज" एक दुर्लभ जबरन 1 के रूप में। 00 ×। वास्तविक जांच में इस स्टब का उपयोग न करें।
- वापसी अधिकतम (1। 00, राउंड (1। 0/अधिकतम (1e-12, 1। 0 - यू), 2)))
def सत्यापित करें (server_seed_hex, server_seed_hash_hex, client_seed, अस्थायी, shown_multiplier):
- server_seed = बाइट्स। fromhex (server_seed_hex)
- 1) कमिट
- मुखर हैशलिब। Sha256 (server_seed)। hexdigest () = = server_seed_hash_hex। निचला ()
- 2-3) गोल हैश
- h = (,, , अस्थायी)
- 4) यू
- u = take_u_from_hash (h)
- 5-6) मैपिंग + राउंडिंग
- calc_mult = stub_mapping (यू)
- 7) तुलना
- रिटर्न एब्स (calc_mult - shown_multiplier) <1e-9
- ```
महत्वपूर्ण: 'स्टब _ मैपिंग' के बजाय, अपने प्लेटफॉर्म के फेयरनेस सेक्शन से सटीक फॉर्मूला लागू करें; अन्यथा, चेक गलत हो जाएगा।
5) विशेष मामले और नुकसान
एक दौर में दो दांव: कई प्लेटफार्मों में आपके प्रत्येक दांव के लिए 'नॉन' वेतन वृद्धि होती है, भले ही उन्हें एक ही दौर में रखा जाए (उदाहरण: शर्त ए 'नॉनस = 42', शर्त बी 'नॉनस = 43')। इतिहास से जाँच करें।
'क्लाइंट सीड' बदलना: बीज बदलते समय, 'नोन' आमतौर पर रीसेट होता है (या एक नई धारा शुरू होती है)। अपने मंच के नियमों की तुलना करें।
बैची 'सर्वर सीड': वन 'सर्वर सीड' राउंड की एक श्रृंखला पर काम करता है, फिर एक नया कमिट प्रकाशित होता है; विभिन्न अवधियों से बीजों को भ्रमित न करें।
राउंडिंग/न्यूनतम: दूसरे साइन पर बेमेल - 90% मामलों में, राउंडिंग/न्यूनतम नियमों में एक त्रुटि (उदाहरण के लिए, निश्चित 1। विशेष परिस्थितियों में 00 ×)।
एनकोडिंग/रिक्त स्थान: अतिरिक्त स्थान/पंक्ति फ़ीड, गलत मामला, non-UTF-8 ब्रेक जांच।
6) क्विक राउंड चेक लिस्ट
1. क्या 'SHA-256 (ServerSeed)' प्रकाशित 'ServerSeedHash' से मेल खाता है?
2. क्या 'मेसेज' और 'नॉन' प्रारूप सही ढंग से बना है?
3. एल्गोरिथ्म ('HMAC-SHA256 '/' SHA-256') और कुंजी/क्षेत्र आदेश विनिर्देश के अनुसार सख्ती से लागू होते हैं?
4. क्या मैपिंग और राउंडिंग प्रलेखन के समान हैं?
5. क्या विशेष मामले (दुर्लभ "त्वरित क्रैश", न्यूनतम 1। 00 ×, माउथगार्ड)?
6. क्या परिणाम खेल के इतिहास के साथ पैसे के साथ मेल खाता है?
7) नियंत्रण का स्वचालन (अभ्यास)
लॉग: 'क्लाइंट _ सीड', अनुक्रम 'नॉनस', टाइमस्टैम्प, अंतिम गुणक रखें।
नमूना: 'सर्वर सीड' के "दहाड़" के बाद, यादृच्छिक 20-50 राउंड के माध्यम से स्क्रिप्ट चलाएं; मिलान प्रतिशत ठीक करें (100% होना चाहिए).
प्रतिगमन: खेल/प्रदाता का संस्करण बदलते समय, एक ही सेट चलाएँ।
निर्यात: स्रोतों के साथ CSV/JSON संग्रहीत करें - यह आपका "ऑडिट ट्रैक" है।
8) सुरक्षा: गलतियाँ कैसे न करें और खुद को मूर्ख होने दें
स्थानीय रूप से/ऑफ़लाइन जाँचें: केवल ऑपरेटर के वेब वेलिडेटर पर भरोसा न करें; अपनी स्क्रिप्ट रखें।
पूर्ण डाटा पैकेज के बिना राउंड पर भरोसा न करें: कोई सूत्र/प्रारूप नहीं - कोई सत्यापन नहीं।
मजबूत 'क्लाइंट सीड': बेतरतीब ढंग से पूछें, समय-समय पर बदलें (इससे आरटीपी में वृद्धि नहीं होती है, लेकिन प्रजनन क्षमता के बारे में प्रश्न बाहर होते हैं)।
TLS/सत्र: HTTPS-केवल लॉगिन, 2FA, ट्रैकिंग इतिहास लॉगिन और अपलोड।
किसी को 'सर्वर बीज' न दें: यह अवधि के बाद ऑपरेटर द्वारा प्रकाशित किया जाता है; आपका कार्य सत्यापित करना है, इसे पहले से "प्राप्त" करना नहीं।
9) विशिष्ट "धोखेबाज़त्रुटियाँ"
मिश्रित क्षेत्र क्रम ('Nonce: ClientSeed' के बजाय 'ClientSeed: Nonce')।
एक (या इसके विपरीत) के बजाय शून्य से 'नॉन' की गिनती करें।
प्लेटफ़ॉर्म (वैश्विक नॉन) के पूरे दौर के हैश का उपयोग किया गया था, लेकिन आपको अपने व्यक्तिगत 'नॉन' की आवश्यकता है।
बैंकर का राउंडिंग बनाम फर्श/छत।
सक्रिय के विरुद्ध जाँच करें, पहले से उजागर नहीं 'सर्वर बीज'.
10) ऑपरेटर पर "लाल झंडे"
अवधि की शुरुआत से पहले कोई सार्वजनिक सर्वर बीज हैश नहीं।
आप अपना क्लाइंट बीज या दृश्य अस्थायी सेट नहीं कर सकते।
कोई सार्वजनिक गुणक हैश मैपिंग फॉर्मूला नहीं है।
राउंड का इतिहास सामंजस्य के लिए न्यूनतम डेटा प्रदान नहीं करता है।
प्रारूप और एल्गोरिथ्म को बिना नोटिस/विनिर्देश संग्रह के बदल दिया गया।
11) ऑस्ट्रेलियाई संदर्भ (एयू)
मुद्रा: AUD में जीत/दांव का रिकॉर्ड रखें, कहानियों का अपलोड रखें (समर्थन, विवादास्पद मुद्दे)।
जिम्मेदार प्ले (आरजी): जमा/समय सीमा, ठहराव और स्व-बहिष्करण - बोना फाइड ऐप में उपलब्ध है; उनका उपयोग करें।
प्लेटफ़ॉर्म प्रथाओं: बोना फ़ाइड ऑपरेटरों के लिए, निष्पक्षता/निष्पक्षता मेला ब्लॉक में एक पूर्ण विवरण और सत्यापन के उदाहरण हैं; विवरण की कमी दूसरी सेवा चुनने का एक कारण है।
12) नीचे की रेखा
क्रैश गेम के परिणाम की जाँच करना एक स्पष्ट प्रक्रिया है:
- 'सर्वर बीज हैश' का सत्यापन,
- 'सर्वर बीज', 'क्लाइंट बीज', 'नॉन' और एल्गोरिथ्म द्वारा 'राउंडहैश' को बहाल करना,
- प्रकाशित मैपिंग फॉर्मूला और राउंडिंग नियम लागू करें
- अपनी समीक्षा में और खेल इतिहास में समान गुणक।
अपनी स्वयं की स्क्रिप्ट, लॉग इनपुट रखें और समय-समय पर यादृच्छिक दौर की जाँच करें। तो आप ईमानदारी की पुष्टि शब्दों में नहीं, बल्कि गणितीय रूप से करते हैं।