KAKALOT Originals निष्पक्षता: हर राउंड खुद जाँचें
KAKALOT Originals का हर गेम इस तरह बना है कि आप जाँच सकें कि हर नतीजा आपके खेलने से पहले तय हो चुका था और बाद में बदला नहीं गया। यह पेज विचार और चरण समझाता है, ताकि आपको साइट की बात पर आँख मूँदकर भरोसा न करना पड़े।
विचार: पहले लॉक, बाद में खुलासा
खेलने से पहले सिस्टम server seed नाम की एक गुप्त वैल्यू बनाता है और आपको केवल उसका कमिटमेंट (server seed का SHA-256) दिखाता है। कमिटमेंट एक सीलबंद लिफ़ाफ़े की तरह काम करता है: साइट बाद में गुप्त वैल्यू बदल नहीं सकती, वरना हैश मेल नहीं खाएगा।
हर नतीजा server seed, client seed (आपकी तरफ़ की वैल्यू) और राउंड नंबर (nonce) से HMAC-SHA256 द्वारा निकाला जाता है। जब आप "Rotate seed" दबाते हैं, तो पुराना server seed खुल जाता है, ताकि आप उसके साथ खेले गए हर राउंड को खुद दोबारा निकाल सकें।
किसी राउंड को कैसे जाँचें
- खेलने से पहले मौजूदा सीड का कमिटमेंट (server seed hash), client seed और nonce नोट कर लें।
- हमेशा की तरह खेलें। हर राउंड का एक round ID होता है और वह आपकी दांव हिस्ट्री में दिखता है।
- "Rotate seed and reveal the old one" दबाएँ। पिछली जोड़ी का server seed दिखाया जाता है।
- जाँचें कि खुले हुए server seed का SHA-256 उस कमिटमेंट के बराबर है जो आपने खेलने से पहले देखा था। अगर मेल खाता है, तो साइट ने आपके शुरू करने के बाद वैल्यू नहीं बदली।
- server seed को की (key) और उस गेम के मैसेज फ़ॉर्मेट (नीचे की टेबल) को मैसेज मानकर HMAC-SHA256 निकालें, और उसकी तुलना राउंड के नतीजे से करें।
- या गेम पेज पर "Verify" दबाएँ: आपका ब्राउज़र सब कुछ आपके लिए दोबारा निकालता है, सर्वर के नतीजे पर भरोसा किए बिना।
हर गेम के मैसेज फ़ॉर्मेट
उदाहरणों में client seed clientSeed और nonce 7 है; आपकी असली वैल्यू गेम पेज पर दिखती हैं। जो गेम कई डाइजेस्ट इस्तेमाल करते हैं वे उन्हें 0 से गिनते हैं।
| गेम | मैसेज |
|---|---|
| HEADS OR TAILS | clientSeed:7 |
| DRAGON'S VAULT | clientSeed:7:vault:0 , clientSeed:7:vault:1 |
| DROP CHAIN | clientSeed:7:drop:0 , clientSeed:7:drop:1 , ... |
| COIN FOX | clientSeed:7:reels:0 , clientSeed:7:reels:1 , ... |
| ROYAL INGOTS | clientSeed:7:ingot:0 , clientSeed:7:ingot:1 , ... |
| GOLDEN KICK | clientSeed:7:kick:0 , ... , clientSeed:7:kick:3 |
| FOXBALL | clientSeed:7:fb:0 , ... , clientSeed:7:fb:7 |
Royal Jackpot ड्रॉ एक अतिरिक्त मैसेज इस्तेमाल करते हैं। HEADS OR TAILS के लिए यह clientSeed:7:jackpot है, और नतीजे के पहले 6 बाइट वह संख्या हैं जो जैकपॉट तय करती है।
HMAC की key server seed के बाइट हैं (हेक्साडेसिमल: बेस 16, 64 अक्षर)। नतीजे को सिक्कों, कार्ड या बोर्ड में बदलने का हर गेम का अपना नियम है; ब्योरे के लिए हर गेम गाइड देखें।
नमूना कोड: HEADS OR TAILS की जाँच
नीचे का कोड आपके ब्राउज़र कंसोल में चलता है। यह एक राउंड का कमिटमेंट और सिक्का उछाल जाँचता है (मैसेज clientSeed:nonce)।
const hex = (s) => Uint8Array.from(s.match(/../g).map((h) => parseInt(h, 16)));
const toHex = (b) => [...new Uint8Array(b)].map((x) => x.toString(16).padStart(2, '0')).join('');
async function verifyCoin(serverSeed, serverHash, clientSeed, nonce, coins) {
const seed = hex(serverSeed);
const hashOk = toHex(await crypto.subtle.digest('SHA-256', seed)) === serverHash;
const key = await crypto.subtle.importKey('raw', seed, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
const digest = new Uint8Array(await crypto.subtle.sign('HMAC', key, new TextEncoder().encode(clientSeed + ':' + nonce)));
let result = '';
for (let i = 0; i < coins; i++) result += digest[i] & 1 ? 'T' : 'H';
return { hashOk, result };
}Round ID और हैश चेन
हर राउंड का एक अनोखा क्रमिक round ID होता है, जैसे असली पैसे के ROYAL INGOTS के लिए RI-0000001 और डेमो के लिए DI-। हर गेम का अपना प्रीफ़िक्स है, और round ID गेम पेज और आपकी दांव हिस्ट्री में दिखता है।
डेटाबेस लगातार राउंड की एक हैश चेन रखता है: हर राउंड के हैश में पिछले राउंड का हैश, round ID, सीड कमिटमेंट, client seed, nonce और नतीजा शामिल होता है। अगर बाद में कोई राउंड बदला या डाला जाए, तो चेन टूट जाएगी और उसके बाद के हर राउंड से मेल खाना बंद कर देगी।
ROYAL BACCARAT: हर कार्ड लॉक
बैकारा पूरे शू को लॉक करता है। जब शू खुलता है, तो उसके 416 कार्ड (8 डेक) फेंटे जाते हैं और हर कार्ड "position:card:salt" टेक्स्ट के SHA-512 कमिटमेंट से लॉक होता है। जब कोई कार्ड बाँटा जाता है, तो उसका salt खोल दिया जाता है ताकि आप जाँच सकें कि बाँटा गया कार्ड वही है जो पहले हैंड से पहले लॉक किया गया था। जब शू खत्म होता है, तो उसका सीड खोल दिया जाता है ताकि पूरा फेंटना जाँचा जा सके। ब्योरे ROYAL BACCARAT गाइड में हैं।
जानने लायक सीमाएँ
इस तरह की जाँच साबित करती है कि नतीजे आपके शुरू करने के बाद बदले नहीं गए और प्रकाशित नियमों से निकाले गए। यह अगले राउंड को पहले से अनुमान योग्य नहीं बनाती और आपकी संभावनाएँ बेहतर नहीं करती: हर राउंड फिर भी रैंडम है।
जो डेमो विज़िटर बिना साइन अप किए खेलते हैं, वह अपना सीड बनाता है और नतीजे आपके अपने ब्राउज़र में निकालता है, असली गेम के ही इंजन और टेबल के साथ। यह मुफ़्त पॉइंट्स के साथ अभ्यास है: कोई मनी अकाउंट नहीं और कोई जैकपॉट नहीं।
अक्सर पूछे जाने वाले सवाल
Provably Fair क्या है?
खिलाड़ियों के लिए यह जाँचने का तरीका कि हर नतीजा खेलने से पहले लॉक की गई वैल्यू से तय हुआ: साइट पहले अपने गुप्त मान का कमिटमेंट दिखाती है, फिर बाद में गुप्त मान खोलती है ताकि नतीजा दोबारा निकाला जा सके।
क्या जाँचने के लिए मुझे कोड लिखना होगा?
नहीं। गेम पेज पर "Verify" दबाएँ और आपका ब्राउज़र काम कर देता है। अगर आप खुद जाँचना चाहें, तो इस पेज के चरण और नमूना कोड इस्तेमाल करें।
जाँचने से पहले मुझे सीड रोटेट क्यों करना पड़ता है?
server seed एक गुप्त मान है। अगर इस्तेमाल में रहते हुए ही उसे खोल दिया जाए, तो कोई भी अगले नतीजे पहले से जान सकता है, इसलिए वह तभी खुलता है जब आप नई जोड़ी पर रोटेट करते हैं।