इस पृष्ठ पर
ब्लैकजैक (एन्क्रिप्टेड संस्करण)
इस पृष्ठ पर
परिचय
यह पृष्ठ ब्लैकजैक के एन्क्रिप्टेड संस्करण के बारे में है, जिसे अक्सर क्रिप्टोकरेंसी पर आधारित कैसीनो में खेला जाता है। मुझे लगता है कि पाठक पारंपरिक ब्लैकजैक के बुनियादी नियमों से पहले से ही परिचित हैं।
प्रमाणित रूप से निष्पक्ष कैसीनो
विश्लेषण
क्रिप्टो.गेम्स के खेल के मामले में, नियमों का विचित्र सेट इस प्रकार है:
- 4 डेक
- प्रत्येक हाथ के बाद फेरबदल करें
- डीलर ब्लैकजैक के लिए नहीं झांकता
- ब्लैकजैक 6:5 का भुगतान करता है
- डीलर सॉफ्ट 17 पर हिट करता है
- किसी भी दो कार्ड पर डबल
- विभाजित इक्के मारो
- शीघ्र आत्मसमर्पण
- विभाजन के बाद दस और इक्का को ब्लैकजैक के रूप में गिना जाता है
- विभाजन के बाद डबल की अनुमति
- खिलाड़ी केवल एक बार ही विभाजित हो सकता है (मेरा मानना है)
जल्दी आत्मसमर्पण और स्प्लिटिंग के बाद 10-ए को ब्लैकजैक के रूप में गिनने पर विचार न करते हुए, मेरा ब्लैकजैक हाउस एज कैलकुलेटर बुनियादी रणनीति के साथ 1.91% का हाउस एज देता है। हालाँकि, ब्लैकजैक नियम विविधताओं की मेरी सूची कहती है कि जिन दो नियमों का कैलकुलेटर समर्थन नहीं करता है उनका मान 0.74% है। इससे कुल हाउस एज 1.17% हो जाता है, जो एक ऑनलाइन ब्लैकजैक गेम के लिए काफी अधिक है।
निष्पक्ष गेमिंग
क्रिप्टो.गेम्स अपने ब्लैकजैक गेम के लिए चार-डेक शू से यादृच्छिक रूप से कार्ड चुनने के लिए निम्नलिखित प्रक्रिया का उपयोग करता है।
- दांव लगाने से पहले खिलाड़ी को सर्वर सीड का SHA-256 हैश बताएं।
- शर्त लगाने के बाद, सर्वर सीड और क्लाइंट सीड को उसी क्रम में संयोजित करें।
- चरण 1 से संयुक्त बीज का SHA-512 हैश लें।
- चरण 2 में मिले हैश से दो अक्षर लें, बायीं ओर देखें।
- चरण 3 के दो वर्णों को हेक्साडेसिमल से दशमलव में बदलें। अगर आपको मेरी बात समझ नहीं आ रही है, तो मैं डाइस (एन्क्रिप्टेड संस्करण) पर अपने पेज पर आधार-16 गणित पर चर्चा करूँगा।
- यदि चरण 4 का परिणाम 207 या उससे कम है, तो उस कार्ड नंबर को 208-कार्ड शू में किसी विशिष्ट कार्ड से मैप करें।
- अगर वह कार्ड नंबर अभी तक हाथ में नहीं मिला है, तो उसे किसी खास ताश के पत्ते से जोड़ दें। ऐसा करने का तरीका इस प्रकार है:
- रैंक जानने के लिए, कार्ड नंबर को 13 से भाग दें और शेष निकालें। शेष को रैंक से इस प्रकार जोड़ें: 0 से इक्का, 1 से 2, 2 से 3, 3 से 4, 4 से 5, 5 से 6, 6 से 7, 7 से 8, 8 से 9, 9 से 10, 10 से गुलाम, 11 से बेगम, 12 से बादशाह।
- सूट पाने के लिए, कार्ड नंबर को 13 से भाग दें और शेष को हटा दें। फिर, उस भागफल को 4 से भाग दें और शेष को ले लें। फिर उस शेष को लेकर उसे सूट से इस प्रकार जोड़ें: 0 से हुकुम, 1 से पान, 2 से ईंट, 3 से चिड़ी।
- अन्यथा, यदि चरण 5 का परिणाम 207 से अधिक था, या वह कार्ड पहले ही मिल चुका था, तो हैश में उन दो अंकों को अनदेखा करें।
- हैश में दो पोजीशन आगे बढ़ें और फिर चरण 3 पर वापस जाएँ, जब तक कि आप हैश के अंत तक न पहुँच जाएँ। इससे आपको ब्लैकजैक खेलने के लिए जितने कार्ड चाहिए होंगे, उससे कहीं ज़्यादा कार्ड मिल जाएँगे।
उदाहरण
एक उदाहरण के लिए प्रक्रिया इस प्रकार काम करती है।
ऊपर दी गई तस्वीर, फेयर गेमिंग पैनल से, शर्त लगाने से पहले ली गई थी। एक निष्पक्ष खेल सुनिश्चित करने के लिए ज़रूरी चीज़ें हैं: एक नया क्लाइंट सीड (कुछ यादृच्छिक अक्षर पर्याप्त होंगे) और अगले सर्वर सीड का हैश दर्ज करना और रिकॉर्ड करना, जिसे खेल में "अगला सर्वर सीड SHA256" शीर्षक दिया गया है। ये रहे:
क्लाइंट सीड = 5v5b85n85vb856nvbn5vbn
- अगला सर्वर बीज SHA256 =
581b31f8cd6e5d4bb510ac0e53a440af7baab92f8f1f220eff14e20201e0b1f6
व्यक्तिगत रूप से, मैं इन चीजों को कॉपी करके नोटपैड में पेस्ट करता हूं, हालांकि इस प्रक्रिया से गुजरना कठिन होता है।
ऊपर दी गई तस्वीर में, मैं 0.00001 BTC (बिटकॉइन) के दांव से शुरुआत करता हूँ, जो लगभग 10¢ के बराबर है। वे खिलाड़ी को इस दांव का इस्तेमाल दस चिप्स खरीदने के लिए करते हैं और फिर पूरे दस चिप्स दांव पर लगाने के लिए कहते हैं। मुझे नहीं पता कि वे इस कदम से पानी को गंदा क्यों करते हैं।
मेरा प्रारंभिक हाथ तीन के मुकाबले कुल 11 का था, इसलिए मैंने दोगुना दांव लगाया और 3 प्राप्त किया। डीलर के पास होल में 5 था, जिससे कुल 8 हुआ, फिर उसने एक राजा निकाला, जिससे कुल 18 हुआ। इस प्रकार, मैं 14 से 18 से हार गया।
png" />
इसके बाद, मैं फेयर गेमिंग पैनल पर वापस जाता हूँ ताकि यह सुनिश्चित हो सके कि खेल निष्पक्ष था, जैसा कि मेरे दांव लगाने से पहले ही कार्डों के क्रम को पूर्वनिर्धारित करके दर्शाया गया है। ऊपर दिए गए चरणों का पालन करते हुए:
- फेयर गेमिंग पैनल से, हम देखते हैं कि सर्वर सीड
Yt5IDwsb3Ldc5vyusvcQNfLqqjoYmCHGRkasqXNQथा। - हम 581b31f8cd6e5d4bb510ac0e53a440af7baab92f8f1f220eff14e20201e0b1f6 प्राप्त करने के लिए इसका SHA-256 हैश लेते हैं।
- हम चरण 2 के हैश की तुलना दांव से पहले दर्ज किए गए "अगले सर्वर सीड SHA256" से करते हैं और पुष्टि करते हैं कि वे मेल खाते हैं। अगर वे मेल नहीं खाते, तो या तो आपने कुछ गलत किया है, या कैसीनो झूठ बोल रहा है/धोखा दे रहा है। इस स्थिति में, वे मेल खाते हैं। इससे यह पुष्टि होती है कि कार्डों का क्रम पहले से तय था।
- यह जांचने के लिए कि आपको सही कार्ड मिले हैं, सर्वर सीड और क्लाइंट सीड को उसी क्रम में मिलाएँ। इससे आपको Yt5IDwsb3Ldc5vyusvcQNfLqqjoYmCHGRkasqXNQ5v5b85n85vb856nvbn5vbn मिलेगा। अगर आप नॉन्स चुनते हैं, तो वह क्लाइंट सीड के अंत में होगा।
- चरण 4 से संयुक्त हैश का SHA-512 हैश लें। वे दो अलग-अलग हैशिंग फ़ंक्शन (SHA-256 और SHA-512) क्यों इस्तेमाल करते हैं, मुझे समझ नहीं आ रहा। इससे आपको 2b87fbc5eac7368ef393c8ab292f71a0251702f6db028ca8a855bfaa541b78df3ae996ad22ac022588a46231ed32180d5cbde86dff5d2368cbb7658332bbb9bc मिलेगा।
- पहले दो अक्षर लें, जो 2b हैं, और उन्हें हेक्साडेसिमल में परिवर्तित करें: 2b = 2*16 + 11 = 43.
- चूँकि 43 <= 207, इसे कार्ड में बदलें: रैंक = mod(43,13) = 4, जो 5 से मेल खाता है। सूट = mod(int(43/13),4) = mod(3,4) = 3, जो चिड़ी से मेल खाता है। यह खिलाड़ी को दिया जाने वाला पहला कार्ड है, चिड़ी का 5।
- चरण 4 से हैश में दो स्थान आगे बढ़ें, जो 87 हैं। इसे हेक्साडेसिमल से दशमलव में बदलें: 8*16 + 7 = 135.
- चूँकि 135 <= 207 है और अभी तक नहीं मिला है, इसे कार्ड में बदलें: रैंक = mod(135,13) = 5, जो 6 से मेल खाता है। सूट = mod(int(135/13),4) = mod(10,4) = 2, जो ईंट के पत्तों से मेल खाता है। यह खिलाड़ी को दिया जाने वाला दूसरा कार्ड है, ईंट का 6।
- चरण 4 से हैश में दो स्थान आगे बढ़ाएँ, जो कि fb हैं। इसे हेक्साडेसिमल से दशमलव में बदलें: 15*16 + 11 = 251.
- चूँकि 251 > 207 है, हम उन दो स्थितियों को छोड़ देते हैं।
- चरण 4 से हैश में दो स्थान आगे बढ़ाएँ, जो c5 हैं। इसे हेक्साडेसिमल से दशमलव में बदलें: 12*16 + 5 = 197.
- चूँकि 197 <= 207 है और अभी तक नहीं मिला है, इसे कार्ड में बदलें: रैंक = mod(197,13) = 2, जो रैंक 3 से मेल खाता है। सूट = mod(int(197/13),4) = mod(15,4) = 3, जो चिड़ी से मेल खाता है। यह डीलर को दिया गया पहला (खुला हुआ) कार्ड है, चिड़ी का 3।
- चरण 4 से हैश में दो स्थान आगे बढ़ाएँ, जो कि ea हैं। इसे हेक्साडेसिमल से दशमलव में बदलें: 14*16 + 10 = 234.
- चूँकि 234 > 207, हम उन दो स्थितियों को छोड़ देते हैं।
- चरण 4 से हैश में दो स्थान आगे बढ़ाएँ, जो c7 हैं। इसे हेक्साडेसिमल से दशमलव में बदलें: 12*16 + 7 = 199.
- चूँकि 199 <= 207 है और अभी तक नहीं मिला है, इसे कार्ड में बदलें: रैंक = mod(199,13) = 4, जो 5 से मेल खाता है। सूट = mod(int(199/13),4) = mod(15,4) = 3, जो चिड़ी से मेल खाता है। यह डीलर को दिया गया दूसरा (नीचे की ओर) कार्ड है, चिड़ी का 5।
- चरण 4 से हैश में दो स्थान आगे बढ़ें, जो 36 हैं। इसे हेक्साडेसिमल से दशमलव में बदलें: 3*16 + 6 = 54.
- चूँकि 54 <= 207 है और अभी तक नहीं मिला है, इसे कार्ड में बदलें: रैंक = mod(54,13) = 2, जो 3 से मेल खाता है। सूट = mod(int(54/13),4) = mod(4,4) = 0, जो हुकुम से मेल खाता है। यह, हुकुम का 3, शू में अगला कार्ड है, जो डबल डाउन के बाद खिलाड़ी के पास गया। इस प्रकार खिलाड़ी का कुल योग 5+6+3 = 14 है।
- चरण 4 से हैश में दो स्थान आगे बढ़ाएँ, जो 8e हैं। इसे हेक्साडेसिमल से दशमलव में बदलें: 8*16 + 14 = 142.
- चूँकि 142 <= 207 है और अभी तक नहीं मिला है, इसे एक पत्ते में बदलें: रैंक = mod(142,13) = 12, जो बादशाह से मेल खाता है। सूट = mod(int(142/13),4) = mod(10,4) = 2, जो ईंटों से मेल खाता है। यह, ईंटों का बादशाह, जूते का अगला पत्ता है, जो डीलर के पास तब गया जब उसे हार्ड 8 मारना था, जिससे कुल 18 प्राप्त हुए।
- खिलाड़ी 14 से 18 से हार जाता है।
- यदि अधिक कार्डों की आवश्यकता होती तो हम इस प्रक्रिया को तब तक जारी रखते जब तक पर्याप्त कार्ड नहीं मिल जाते।
अगर आपको लगता है कि आपको बहुत सारे स्टेप्स पूरे करने हैं, तो मैं सहमत हूँ। इसीलिए मैंने आपके लिए एक PHP स्क्रिप्ट लिखी है! इसका इस्तेमाल करने के लिए, इन स्टेप्स को फॉलो करें:
- PHP सैंडबॉक्स पर जाएं.
- लाइन 3 पर सर्वर सीड दर्ज करें।
- लाइन 4 पर क्लाइंट सीड दर्ज करें।
- पंक्ति 5 पर अगले सर्वर सीड का हैश दर्ज करें।
- "कोड निष्पादित करें" पर क्लिक करें।
यह प्रोग्राम सर्वर सीड हैश को आपके दांव लगाने से पहले उपलब्ध कराए गए डेटा और खेल में बांटे गए कार्ड के अनुसार बदल देगा।
मेरे पास कोड की एक प्रति भी है जिसे आप नीचे दिए गए बटन पर क्लिक करके देख सकते हैं।
[बिगाड़ने वाला]
// Crypto.Games के लिए ब्लैकजैक निष्पक्षता जांच
$server_seed = "Yt5IDwsb3Ldc5vyusvcQNfLqqjoYmCHGRkasqXNQ";
$client_seed = "5v5b85n85vb856nvbn5vbn";
$next_hash = "581b31f8cd6e5d4bb510ac0e53a440af7baab92f8f1f220eff14e20201e0b1f6";
$rank_array=array("A",2,3,4,5,6,7,8,9,10,"J","Q","K");
$suit_array=array("हुकुम","दिल","हीरे","चिड़ी");
$ कार्ड_पाया=0;
$स्थिति=0;
$संयुक्त_बीज = $सर्वर_बीज.$क्लाइंट_बीज;
प्रतिध्वनि "संयुक्त बीज = $combined_seed\n";
$combined_hash = हैश('sha512', $combined_seed);
प्रतिध्वनि "संयुक्त बीज का हैश = $combined_hash\n";
करना
{
$first_two=substr($combined_hash,$position,2);
$hex_to_dec=hexdec($first_two);
यदि ($hex_to_dec <=207)
{
$ दोहराना = 0;
यदि ($cards_found>0)
{
के लिए ($i=0; $i<$cards_found; $i++)
{
यदि ($hex_to_dec == $card_array[$i])
{ $दोहराएँ=1; }
}
}
यदि ($दोहराएँ==0)
{
$card_array[$cards_found] = $hex_to_dec;
$ कार्ड_पाया++;
$रैंक=$hex_to_dec%13;
$suit=intdiv($hex_to_dec,13)%4;
इको "कार्ड $cards_found = \t$rank_array[$rank] of $suit_array[$suit]\n";
}
}
$स्थिति+=2;
यदि ($स्थिति==128)
{
echo "त्रुटि -- हैश में और अधिक स्थान नहीं है.\n";
$ कार्ड_पाया=10;
}
}
जबकि ($ कार्ड_पाया<20);
$server_seed_hash=hash('sha256', $server_seed);
यदि ($server_seed_hash==$next_hash)
{ echo "सर्वर बीज मिलान.\n"; }
अन्य
{
प्रतिध्वनि "सर्वर बीज बेमेल!\n";
प्रतिध्वनि "सर्वर बीज =\t$server_seed\n";
प्रतिध्वनि "सर्वर बीज हैश =\t$server_seed_hash\n";
प्रतिध्वनि "कथित अगला हैश=\t$next_hash\n";
}
// प्रक्रिया
// 1. "स्टेप" को 0 के बराबर और "पोजीशन" को 0 के बराबर रखें।
// 2. सर्वर और क्लाइंट सीड्स, स्टेप और सर्वर सीड को उसी क्रम में जोड़ें।
// 3. चरण 2 से स्ट्रिंग का SHA-512 हैश उत्पन्न करें।
// 4. चरण 3 से हैश की "स्थिति" से शुरू करते हुए पहले दो वर्णों को हेक्साडेसिमल से दशमलव में परिवर्तित करें।
// 5. यदि चरण 4 का परिणाम 0 से 207 है, तो इसे चार-डेक शू में एक विशिष्ट कार्ड से मैप करें।
// 6. यदि चरण 5 का परिणाम अभी तक सामने नहीं आया है, तो वह खेल में बांटा जाने वाला अगला कार्ड होगा।
// 7. चरण 6 से कार्ड की वास्तविक स्थिति जानने के लिए, निम्न कार्य करें:
// A. चरण 4 के परिणाम को 13 से विभाजित करें और शेष लें।
// बी. रैंक प्राप्त करने के लिए चरण 7A से परिणाम मैप करें, इस प्रकार: 0 से A, 1 से 2, 2 से 3, ..., 9 से 10, 10 से J, 11 से Q, 12 से K.
// C. चरण 4 के परिणाम को 13 से विभाजित करें और शेष को हटा दें।
// D. चरण 7C के परिणाम को 4 से विभाजित करें और शेष लें।
// ई. सूट प्राप्त करने के लिए चरण 7डी से परिणाम का मानचित्र बनाएं, इस प्रकार: 0 से हुकुम, 1 से पान, 2 से ईंट, 3 से चिड़ी।
// 8. जब तक आप हैश के अंत तक नहीं पहुंच जाते, तब तक चरण 4 से 7 को दोहराते रहें, हालांकि यह असंभव है कि खेल में इतने सारे कार्ड की आवश्यकता होगी।
?>
[/बिगाड़ने वाला]

