> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mycryptocasino.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Mines की निष्पक्षता

> बोर्ड कब कमिट होता है, वह कैसे निकाला जाता है, और सेटलमेंट के समय प्रोग्राम क्या दोबारा जांचता है।

आपके एक भी टाइल चुनने से पहले ही Mines का बोर्ड तय हो जाता है। शुरुआती ट्रांज़ैक्शन एक रैंडम सर्वर सीड के SHA-256 हैश को कमिट करता है और एक Solana स्लॉट हैश दर्ज करता है, और बोर्ड पूरी तरह इन्हीं दोनों से निकलता है। सेटलमेंट के समय प्रोग्राम पूरा बोर्ड ऑन-चेन दोबारा निकालता है और उससे मेल न खाने वाले किसी भी सेटलमेंट को अस्वीकार कर देता है।

यह पेज हर [Mines](/hi/docs/games/mines) बोर्ड के पीछे की सटीक प्रक्रिया बताता है: क्या कमिट होता है और कब, बोर्ड ठीक-ठीक कैसे निकाला जाता है, सेटलमेंट के समय प्रोग्राम क्या दोबारा जांचता है, और इस व्यवस्था की ईमानदार सीमाएं क्या हैं। पृष्ठभूमि: [प्रूवेबली फेयर का अवलोकन](/hi/docs/provably-fair/overview)।

## क्या कमिट होता है, और कब

Mines का एक गेम एक ही ऑन-चेन ट्रांज़ैक्शन (`mines_start`) से शुरू होता है, जो **आपके कोई भी टाइल चुनने से पहले** एक साथ तीन काम करता है:

1. **ऑपरेटर के हिस्से को कमिट करता है।** बैकएंड एक रैंडम 32-बाइट `server_seed` बनाता है और ट्रांज़ैक्शन उसका SHA-256 हैश, यानी कमिट, स्टोर करता है। सीड खुद गेम खत्म होने तक छिपा रहता है।
2. **चेन की एंट्रॉपी दर्ज करता है।** प्रोग्राम Solana के `SlotHashes` sysvar से सबसे हाल का स्लॉट हैश पढ़ता है और उसे गेम में स्टोर करता है।
3. **शर्तों को फ़्रीज़ करता है।** हाउस एज, पेआउट की सीमा और रिफ़ंड टाइमआउट आपके गेम में स्नैपशॉट के रूप में दर्ज हो जाते हैं; जिस बोर्ड पर आप पहले से खेल रहे हैं, उसकी कीमत कोई बदल नहीं सकता।

बोर्ड पूरी तरह कमिट किए गए सीड, स्टोर किए गए स्लॉट हैश, आपके अकाउंट और आपके गेम काउंटर से निकलता है। **इसी पल से बोर्ड तय है**: आपके चुनाव के जवाब में माइन अपनी जगह नहीं बदल सकतीं। खेल के दौरान टाइल्स ऑफ़-चेन खोली जाती हैं (इसी वजह से वे तुरंत खुलती हैं); अंत में सेटलमेंट ट्रांज़ैक्शन सीड का खुलासा करता है और प्रोग्राम **पूरा बोर्ड ऑन-चेन दोबारा निकालता है**, और उससे मेल न खाने वाले किसी भी सेटलमेंट को अस्वीकार कर देता है।

<h2 id="the-exact-board-derivation">
  Mines का बोर्ड कैसे निकाला जाता है?
</h2>

5×5 ग्रिड की 25 टाइल्स को पंक्ति-दर-पंक्ति 0 से 24 तक नंबर दिया गया है (`index = row × 5 + column`)। बोर्ड एक 25-बिट मास्क है: बिट `t` सेट होने का मतलब है कि टाइल `t` के नीचे माइन छिपी है।

```text theme={null}
इनपुट
  server_seed  32 बाइट   ऑपरेटर का सीड, गेम की शुरुआत में sha256(server_seed) के रूप में कमिट
  slothash     32 बाइट   शुरुआती ट्रांज़ैक्शन के चलने के समय का नवीनतम Solana स्लॉट हैश
  user         32 बाइट   आपके ऑन-चेन यूज़र अकाउंट का पता
  nonce        8 बाइट    आपका Mines गेम काउंटर, little-endian
  mines_count  1..24     आपके द्वारा चुनी गई माइन की संख्या

रैंडम स्ट्रीम: SHA-256 ब्लॉक, हर बार 4 बाइट इस्तेमाल होते हैं
  block(k)   = sha256( server_seed ‖ slothash ‖ user ‖ nonce ‖ "mines" ‖ k )
               // "mines" = 5 ASCII बाइट; k = ब्लॉक काउंटर 0, 1, 2, …, 8 बाइट little-endian
  next_u32() = मौजूदा ब्लॉक के अगले बिना पढ़े 4 बाइट, big-endian;
               ब्लॉक खत्म होने पर block(k+1) पर जाएं

0..bound में निष्पक्ष ड्रॉ (रिजेक्शन सैंपलिंग, कोई modulo पूर्वाग्रह नहीं)
  draw(bound):
    zone = 4294967295 − (4294967295 mod bound)
    दोहराएं v = next_u32() जब तक v < zone
    लौटाएं v mod bound

बोर्ड: आंशिक Fisher–Yates शफ़ल
  tiles = [0, 1, …, 24]
  mine_mask = 0
  for i in 0..mines_count:
      j = i + draw(25 − i)
      tiles[i] और tiles[j] की अदला-बदली करें
      mine_mask = mine_mask OR (1 << tiles[i])
```

दोबारा गणना करते समय ध्यान देने लायक बातें:

* हैश इनपुट का क्रम ठीक यही है: सीड, स्लॉट हैश, यूज़र अकाउंट का पता, nonce (**8 बाइट little-endian**), ASCII टैग `"mines"`, फिर ब्लॉक काउंटर (**8 बाइट little-endian**, 0 से शुरू)।
* हर 4-बाइट का टुकड़ा **big-endian** में पढ़ा जाता है। एक ब्लॉक से अधिकतम 8 ड्रॉ मिलते हैं; ज़रूरत पड़ने पर स्ट्रीम अगले काउंटर मान से फिर भर जाती है।
* रिजेक्शन-सैंपलिंग लूप हर ड्रॉ को पूरी तरह समान रूप से वितरित बनाता है: शफ़ल में बहस करने लायक कोई पूर्वाग्रह नहीं है।

<h2 id="the-payout-formula">
  प्रोग्राम कौन-सा पेआउट फ़ॉर्मूला लागू करता है?
</h2>

हर सुरक्षित टाइल खुलने पर आपका कैश आउट आपके बचे रहने की संभावना के सटीक व्युत्क्रम से गुणा होता है, और हाउस एज सिर्फ़ एक बार लगता है:

```text theme={null}
multiplier = (1 − edge) × ∏(i = 0 … k−1) ( (25 − i) / (25 − M − i) )

M = माइन की संख्या, k = खोली गई सुरक्षित टाइल्स की संख्या
```

प्रोग्राम इसकी गणना सटीक पूर्णांक अंकगणित से करता है और अंत में सिर्फ़ एक बार नीचे की ओर पूर्णांक भाग करता है (राउंडिंग, अधिकतम एक बेसिस पॉइंट, हाउस के पक्ष में जाती है)। मौजूदा 1.5% एज पर:

| बोर्ड | मल्टीप्लायर |
| - | - |
| 3 माइन, 1 टाइल खुली | 1.1193x |
| 3 माइन, 2 टाइल खुलीं | 1.2792x |
| 24 माइन, 1 टाइल खुली | 24.625x |
| 1 माइन, पूरा बोर्ड साफ़ (24 टाइल खुलीं) | 24.625x |

माइन और खुली टाइल्स के हर संयोजन के लिए अपेक्षित रिटर्न `1 − edge` है। मौजूदा मान [शुल्क और सीमाएं](/hi/docs/fees-and-limits) में दिए गए हैं।

## सेटलमेंट के समय प्रोग्राम क्या लागू करता है

सेटलमेंट ट्रांज़ैक्शन (`mines_settle`) `server_seed` का खुलासा करता है और एक नतीजे का दावा करता है: खोली गई टाइल्स के एक सेट के साथ कैश आउट, या किसी खास टाइल पर बस्ट। इसके बाद प्रोग्राम सब कुछ ऑन-चेन जांचता है:

* `sha256(server_seed)` गेम की शुरुआत में स्टोर किए गए कमिट के बराबर होना चाहिए; किसी दूसरे सीड से गेम सेटल नहीं हो सकता।
* ऊपर दिए फ़ॉर्मूले से बोर्ड **शुरू से दोबारा निकाला जाता है**। खुली बताई गई कोई टाइल अगर असल में माइन है, तो दावा अस्वीकार होता है; बस्ट बताई गई टाइल अगर माइन नहीं है, तो अस्वीकार होता है; जो बस्ट टाइल खुली हुई भी बताई गई हो, वह भी अस्वीकार होती है।
* मल्टीप्लायर की गणना ऑन-चेन, **स्नैपशॉट किए गए** एज और आपकी वास्तव में खोली गई टाइल्स की संख्या से होती है, इसलिए पेआउट गलत नहीं बताया जा सकता।
* सेटलमेंट इवेंट सीड, स्लॉट हैश, पूरा माइन मास्क, आपकी खोली गई टाइल्स और नतीजा हमेशा के लिए सार्वजनिक कर देता है।

## क्या गारंटी है, और क्या नहीं

**प्रोग्राम द्वारा लागू:**

* कमिट और स्टोर किए गए स्लॉट हैश की वजह से बोर्ड आपके पहले चुनाव से पहले ही तय हो जाता है। गेम के बीच माइन अपनी जगह नहीं बदल सकतीं।
* सेटलमेंट के समय ऑपरेटर बोर्ड के बारे में झूठ नहीं बोल सकता: गलत सीड, माइन को सुरक्षित बताना या नकली बस्ट, इनमें से कुछ भी हो तो ट्रांज़ैक्शन विफल हो जाता है।
* जिन शर्तों (एज, पेआउट की सीमा, टाइमआउट) पर आपने गेम शुरू किया, वही गेम के अंत तक लागू रहती हैं।
* आपकी दांव राशि कभी फंस नहीं सकती: अगर ऑपरेटर कभी सेटल नहीं करता, तो गेम के टाइमआउट के बाद **कोई भी** कैंसल कॉल कर सकता है, जिससे आपकी दांव राशि वापस मिल जाती है। सामान्य संचालन में यह नौबत कभी नहीं आती: छोड़ा गया बोर्ड टाइमआउट से पहले उसके मौजूदा मल्टीप्लायर पर कैश आउट कर दिया जाता है (देखें [Mines](/hi/docs/games/mines)), इसलिए आपको सिर्फ़ दांव राशि नहीं, बल्कि अपनी जीत मिलती है। बिना अनुमति वाला कैंसल सबसे नीचे की गारंटी है, उस स्थिति के लिए जब ऑपरेटर मौजूद ही न हो।

**ईमानदार चेतावनियां:**

* **आपके खेलते समय ऑपरेटर बोर्ड जानता है।** यह संरचनात्मक है, इस खास डिज़ाइन की कमी नहीं: टाइल्स ऑफ़-चेन तुरंत खोली जाती हैं, और जो उन्हें खोलता है उसे पता होना ही चाहिए कि माइन कहां हैं। कोई भी रैंडमनेस व्यवस्था इसे खत्म नहीं कर सकती: VRF से बना बोर्ड भी, आपकी पहली टाइल खोलते ही ऑपरेटर को पता होगा। कमिट यह गारंटी देता है कि इस जानकारी का इस्तेमाल बोर्ड को *बदलने* या नतीजे को *गलत बताने* के लिए नहीं किया जा सकता।
* **शुरुआत का समय।** बोर्ड उस स्लॉट हैश पर निर्भर है जो आपका गेम शुरू होते समय दर्ज होता है, और शुरुआती ट्रांज़ैक्शन बैकएंड भेजता है; यह वही समय-संबंधी पहलू है जो बाकी गेम्स में भी है। किसी बोर्ड को पहले से जानना तभी काम आता है जब आपके चुनाव अनुमान लगाने लायक हों; अलग-अलग जगह क्लिक करने से समय के आधार पर बोर्ड चुनने की कोशिश नाकाम हो जाती है।
* **रद्दीकरण।** ऑपरेटर चल रहे गेम को कैंसल कर सकता है (सिद्धांत रूप में उसे भी, जिसे आप जीत रहे हों)। कैंसल करने पर **पूरी दांव राशि वापस मिलती है** (ज़ब्त करने का कोई रास्ता नहीं है) और हमेशा एक सार्वजनिक इवेंट जारी होता है, इसलिए रद्दीकरण कितनी बार होता है, इसका ऑडिट कोई भी ऑन-चेन कर सकता है।
* हर गेम में नया सीड होना ज़रूरी है: खुलासा किया गया सीड सार्वजनिक होता है, और उसे दोबारा इस्तेमाल करने से अगला बोर्ड सार्वजनिक रूप से निकाला जा सकेगा। प्रोग्राम लगातार दो गेम में एक ही सीड के इस्तेमाल को ऑन-चेन अस्वीकार करता है, और बैकएंड वैश्विक विशिष्टता लागू करता है।

<h2 id="verify-a-game">
  Mines गेम को कैसे सत्यापित करें?
</h2>

आपके गेम के अंतिम ट्रांज़ैक्शन का सेटलमेंट इवेंट (`MinesGameSettled`) `server_seed`, `slothash`, `user`, `nonce`, `mines_count`, `mines_mask`, `revealed_mask`, `bust_tile`, `multiplier_bps` और `is_win` साथ रखता है। सत्यापित करने के लिए:

1. कमिट जांचें: `sha256(server_seed)` आपके गेम के शुरुआती ट्रांज़ैक्शन (`MinesGameStarted` इवेंट) में प्रकाशित `commit_hash` के बराबर होना चाहिए, जिससे साबित होता है कि बोर्ड आपके पहले चुनाव से पहले लॉक हो चुका था।
2. ऊपर दिए फ़ॉर्मूले से माइन मास्क दोबारा निकालें और उसे इवेंट के `mines_mask` से मिलाएं।
3. मास्क से नतीजा जांचें: `revealed_mask` का हर बिट एक सुरक्षित टाइल होना चाहिए, और बस्ट टाइल एक माइन होनी चाहिए।
4. पेआउट फ़ॉर्मूले से मल्टीप्लायर जांचें।

एक्सप्लोरर से इवेंट डेटा पढ़ने के सामान्य सुझावों के लिए [राउंड सत्यापित करें](/hi/docs/provably-fair/verify-a-round) देखें।

गेम खुद कैसे खेला जाता है, यह जानने के लिए [Mines गेम गाइड](/hi/docs/games/mines) देखें।
