समस्या जिसे सत्यापन हल करता है
हर कैसीनो गेम एक दावा है: "यह परिणाम यादृच्छिक था, और हमने आपकी बेट देखने के बाद इसे नहीं चुना।" एक भौतिक कमरे में आप इस दावे को अपनी आँखों से जांचते हैं — ताजे डेक, पारदर्शी पासे, एक पहिया जिसे आप देख सकते हैं। ऑनलाइन, यादृच्छिकता किसी और के कंप्यूटर पर होती है। Provably fair डीलर के हाथों को देखने के लिए क्रिप्टोग्राफिक प्रतिस्थापन है।
मुख्य तंत्र commit-reveal है। इससे पहले कि आप बेट लगाएं, हाउस अपनी यादृच्छिकता को जगह में बंद कर देता है और आपको इसका एक फिंगरप्रिंट दिखाता है — सर्वर सीड का SHA-256 हैश। एक हैश एक तरफा काम करता है: हाउस एक दूसरा सीड नहीं खोज सकता जो एक ही फिंगरप्रिंट से मेल खाए, और आप इससे सीड नहीं पढ़ सकते। सीड के बाद में प्रकट होने के बाद, आप इसे आपको दिखाए गए फिंगरप्रिंट के विरुद्ध जांचते हैं, और हर राउंड की गणना करते हैं जो इसने उत्पादित किया।
हर राउंड के तीन इनपुट
| इनपुट | इसे कौन चुनता है | यह क्या करता है |
|---|---|---|
| सर्वर सीड | हाउस — खेल से पहले हैश के रूप में प्रतिबद्ध | यादृच्छिकता का हाउस का आधा |
| क्लाइंट सीड | आप — fairness पैनल में संपादन योग्य | आपका आधा; हाउस इसका अनुमान नहीं लगा सकता |
| Nonce | कोई नहीं — यह 0, 1, 2, … गिनता है | समान सीड के तहत हर राउंड को अद्वितीय बनाता है |
राउंड की कच्ची यादृच्छिकता HMAC-SHA256(server seed, client seed : nonce) है — एक keyed हैश जो दोनों पक्षों के इनपुट को मिलाता है। क्योंकि आपका client seed मिश्रण में प्रवेश करता है, हाउस को परिणाम को पूर्वाभास देने के लिए आपकी पसंद का अनुमान लगाना होता; क्योंकि server seed पहले प्रतिबद्ध था, इसे बाद में स्वैप नहीं किया जा सकता बिना आपके पास पहले से मौजूद फिंगरप्रिंट को तोड़े।
उस डाइजेस्ट से, बाइट संख्याएं बन जाती हैं। हमारे इंजन पहली बाइट को [0,1) में एक समान मान के रूप में पढ़ते हैं — राउंडिंग को जेनरेटर और वेरिफायर में बिट-दर-बिट एक ही तरीके से किया जाता है — और हर गेम समान मानों को प्रकाशित नियमों के माध्यम से परिणामों में मैप करता है: एक पासे रोल वक्र, एक सिकुड़ते पूल से कार्ड ड्रॉ, fixed cursor positions पर chinchiro पासे।
निर्देशिका
- कोई भी मूल खोलें और fairness पैनल खोलें। वर्तमान server seed hash पर ध्यान दें — यह प्रतिबद्धता है। अगर आप चाहें तो अपना स्वयं का client seed सेट करें।
- एक या दो राउंड खेलें। प्रत्येक सेटल किया गया राउंड अपनी बेट रिकॉर्ड में (hash, client seed, nonce) ट्रिपल दर्ज करता है।
- पैनल में अपनी seed pair को घुमाएं। रोटेशन पुरानी server seed को सेवानिवृत्त करता है और — यह महत्वपूर्ण क्षण है — इसे प्रकट करता है।
- प्रकट की गई server seed को SHA-256 के साथ hash करें और इसकी तुलना चरण 1 से फिंगरप्रिंट से करें। उन्हें बिल्कुल मेल खाना चाहिए।
- राउंड को पुनः कंप्यूट करें: HMAC-SHA256(revealed seed, "clientSeed:nonce"), डाइजेस्ट को गेम के प्रकाशित नियम के माध्यम से मैप करें, और इसकी तुलना परिणाम से करें जो आपको दिया गया था।
- चरण 4–5 के लिए कोई भी स्वतंत्र टूल काम करता है — एक ऑनलाइन SHA-256 कैलकुलेटर, Python की तीन पंक्तियां, या पैनल का अंतर्निर्मित verifier। गणित को इस बात की कोई परवाह नहीं है कि इसे कौन चलाता है।
ENGINE-VERIFIEDBetkyo के कार्यान्वयन के बारे में एक विस्तार असामान्य है: डेमो इंजन जो परिणाम उत्पन्न करता है और fairness पैनल जो उन्हें जांचता है, एक ही derivation मॉड्यूल को आयात करते हैं — एक कार्यान्वयन, दो नहीं। एक verifier जो अपना कोड जनरेटर के साथ साझा करता है, उससे सहमति में विचलित नहीं हो सकता।
सत्यापन क्या दावा नहीं करता
ईमानदारी की मांग सीमाओं को चिह्नित करना है। Provably fair साबित करता है कि परिणाम प्रतिबद्धता समय पर तय किए गए थे और प्रकाशित नियम के माध्यम से मैप किए गए थे। यह साबित नहीं करता कि नियम उदार है — एक खेल provably fair हो सकता है और फिर भी भयानक भुगतान कर सकता है, यही कारण है कि हम इसके साथ हर पेटेबल और हाउस एज प्रकाशित करते हैं। यह नुकसान को रोकता नहीं है, हारने की धारियों को छोटा नहीं करता है, या अगले राउंड के बारे में कोई वादा नहीं करता है; यह केवल वादा करता है कि अगला राउंड आपके खिलाफ नहीं चुना गया था।
और यह सत्यापित नहीं कर सकता कि यह क्या नहीं देख सकता: योजना गेम परिणामों को कवर करती है, यह नहीं कहते हैं, बाहरी घटनाओं के क्रम को लाइव रूप में कैसे हल किया जाता है। जहां हमारे खेलों में से एक बाहरी फीड पर निर्भर करता है, fairness पृष्ठ दावे को खींचने के बजाय स्पष्ट रूप से ऐसा कहता है।
शब्दावली
| शब्द | अर्थ |
|---|---|
| SHA-256 | एक one-way hash: कोई भी इनपुट → एक 256-bit फिंगरप्रिंट; उलटा या टकराव करना असंभव |
| HMAC | एक keyed hash — एक गुप्त कुंजी (server seed) को एक संदेश (client seed : nonce) के साथ मिलाता है |
| Commit-reveal | पहले फिंगरप्रिंट प्रकाशित करें, बाद में मान; फिंगरप्रिंट साबित करता है कि मान कभी नहीं बदला |
| Nonce | "Number used once" — एक काउंटर जो प्रत्येक राउंड के डाइजेस्ट को अनोखा बनाता है |
| Seed rotation | Seed pair को रिटायर करना: पुरानी server seed को ऑडिटिंग के लिए जारी किया जाता है, एक नई commitment शुरू होती है |
FAQ
क्या मुझे राउंड को verify करने के लिए क्रिप्टोग्राफी जानने की जरूरत है?
नहीं। Fairness panel हर स्टेप को ऑटोमेट करता है, और मैनुअल तरीके के लिए किसी भी SHA-256/HMAC कैलकुलेटर में स्ट्रिंग्स को पेस्ट करने से ज्यादा कुछ नहीं चाहिए। यह समझने में कि यह कैसे काम करता है एक पैराग्राफ लगता है; इसे करने में एक मिनट लगता है।
मुझे अपनी seed को rotate करने के लिए क्यों करना पड़ता है?
क्योंकि server seed को गुप्त रहना चाहिए जब तक वह राउंड्स प्रोड्यूस कर रहा है — इसे जल्दी जारी करने से खिलाड़ी भविष्य के नतीजों की गणना कर सकता है। Rotation seed के जीवन को समाप्त करता है, जो इसे reveal और audit करना सुरक्षित बनाता है।
क्या हाउस अपने लिए एक lucky seed जेनरेट कर सकता है?
Commitment इसके उपयोगी संस्करण को ब्लॉक करता है: seed आपकी बेट्स से पहले फिक्स किया जाता है और एक client seed के साथ मिक्स किया जाता है जिसे आप कंट्रोल करते हैं। हाउस को आपकी seed, आपकी bet, और आपका टाइमिंग प्रेडिक्ट करना पड़ेगा — जिस बिंदु पर यह अब कैसीनो नहीं चला रहा बल्कि एक mind-reading act कर रहा होगा।
क्या provably fair लाइसेंस प्राप्त या ऑडिट किए जाने जैसा ही है?
नहीं — ये अलग-अलग सवालों का जवाब देते हैं। Audits और licenses संस्थागत विश्वास हैं; provably fair प्रत्येक व्यक्तिगत परिणाम में गणितीय विश्वास है। हम math और अपनी पूरी paytables प्रकाशित करते हैं ताकि दोनों दावे कभी भ्रमित न हों।
SOURCES & REFERENCES
- HMAC — RFC 2104, keyed-hash निर्माण जो प्रति राउंड उपयोग किया जाता है
- SHA-2 family — FIPS 180-4, commitment hash
- Betkyo engine source: shared RNG primitives और single generator/verifier derivation modules
इस आर्टिकल में गेम्स
Limbo — rules & free play →Dice — rules & free play →Chinchiro — rules & free play →