> ## 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.

# एक राउंड सत्यापित करें

> सार्वजनिक डेटा से किसी पूरे हो चुके राउंड का चरण-दर-चरण सत्यापन, साथ में Dice और Mines की छोटी जांच।

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

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

## आप क्या साबित कर रहे हैं

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

## चरण 1: ऐप में राउंड का निष्पक्षता डेटा खोलें

अपना दांव इतिहास (या राउंड इतिहास) खोलें और किसी पूरे हो चुके राउंड पर क्लिक करके उसका विवरण खोलें। राउंड के परिणाम के साथ आपको ये मिलेंगे:

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

निष्पक्षता टूल आसान रास्ता है। इस पेज का बाकी हिस्सा पूरी तरह स्वतंत्र रास्ता है, जिसमें आप चेन और अपने कंप्यूटर के अलावा किसी पर भरोसा नहीं करते।

## चरण 2: एक राउंड के तीन ट्रांज़ैक्शन

| निष्पक्षता डेटा | ऑन-चेन इंस्ट्रक्शन | यह क्या प्रकाशित करता है |
| - | - | - |
| कमिट ट्रांज़ैक्शन | `start_new_round` | कमिट `sha256(secret)`, `CrashRoundPrepared` इवेंट में, दांव खुलने से पहले |
| ब्लॉक-हैश ट्रांज़ैक्शन | `start_game` | कैप्चर किया गया Solana स्लॉट हैश, `CrashGameStarted` इवेंट में; इसी क्षण से परिणाम तय हो जाता है |
| रिवील ट्रांज़ैक्शन | `crash` | रिवील की गई गुप्त वैल्यू और अंतिम क्रैश पॉइंट, `CrashRoundFinalized` इवेंट में |

## चरण 3: Solana एक्सप्लोरर से मान पढ़ें

हर ट्रांज़ैक्शन को अपनी पसंद के एक्सप्लोरर (Solscan, Solana Explorer, SolanaFM…) पर खोलें, उसी नेटवर्क पर जिस पर ऐप चलता है। ट्रांज़ैक्शन पेज पर डिकोड किए गए प्रोग्राम **इवेंट** देखें (कभी-कभी ये “Logs” या “Instruction data” के अंतर्गत होते हैं; जो एक्सप्लोरर प्रोग्राम का IDL जानते हैं, वे इवेंट फ़ील्ड को नाम से डिकोड करते हैं)।

चार मान इकट्ठा करें:

* `commit_hash`: 32 बाइट, कमिट ट्रांज़ैक्शन से।
* `blockhash`: 32 बाइट, ब्लॉक-हैश ट्रांज़ैक्शन से।
* `local_e`: 32-बाइट गुप्त वैल्यू, रिवील ट्रांज़ैक्शन से।
* `crash_point_bps`: बेसिस पॉइंट में अंतिम क्रैश पॉइंट, रिवील ट्रांज़ैक्शन से (29948 का मतलब 2.9948x)।

<Tip>
  **एन्कोडिंग**

  एक्सप्लोरर साइट के अनुसार 32-बाइट मानों को hex, base58 या बाइट ऐरे के रूप में दिखाते हैं। नीचे दी गई स्क्रिप्ट **hex** की अपेक्षा करती है; अगर आपका एक्सप्लोरर base58 दिखाता है तो उसे बदल लें (कोई भी base58 डिकोडर चलेगा; मायने बाइट मानों के हैं, लिखने के तरीके के नहीं)।
</Tip>

## चरण 4: क्रम जांचें

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

## चरण 5: क्रैश पॉइंट दोबारा गणना करें

इसे Node.js से चलाएं (किसी डिपेंडेंसी की ज़रूरत नहीं), चरण 3 से मिली तीनों hex स्ट्रिंग भरकर:

```js theme={null}
const { createHash } = require("node:crypto");
const sha256 = (buf) => createHash("sha256").update(buf).digest();

// ── इन्हें राउंड के ऑन-चेन इवेंट से भरें (hex, हर एक 32 बाइट) ──
const commit = Buffer.from("<commit_hash hex>", "hex"); // कमिट tx से
const blockhash = Buffer.from("<blockhash hex>", "hex"); // ब्लॉक-हैश tx से
const secret = Buffer.from("<local_e hex>", "hex"); // रिवील tx से
const edgeBps = 150n; // राउंड के समय bps में हाउस एज; देखें “शुल्क और सीमाएं”

// 1. रिवील की गई गुप्त वैल्यू कमिट से मेल खानी चाहिए
console.log("commitment ok:", sha256(secret).equals(commit));

// 2. क्रैश पॉइंट दोबारा गणना करें: वही पूर्णांक गणित जो प्रोग्राम चलाता है
const hash = sha256(Buffer.concat([blockhash, secret])); // पहले blockhash, फिर secret
const X = BigInt(hash.readUInt32BE(0)); // पहले 4 बाइट, big-endian
const TWO32 = 1n << 32n;
const cappedX = X < TWO32 - 1000n ? X : TWO32 - 1000n;
const raw = ((10000n - edgeBps) * TWO32) / (TWO32 - cappedX); // BigInt भाग नीचे की ओर पूर्णांकित होता है
const crashBps = raw > 10000n ? raw : 10000n;

console.log("crash point:", `${Number(crashBps) / 10000}x`, `(${crashBps} bps)`);
```

दोनों जांचें पास होनी चाहिए: `commitment ok: true`, और प्रिंट हुआ क्रैश पॉइंट राउंड के **क्रैश हुआ** मल्टीप्लायर (और रिवील इवेंट के `crash_point_bps`) के बराबर होना चाहिए। अगर ऐसा है, तो आपने किसी पर भरोसा किए बिना साबित कर दिया है कि इस राउंड का परिणाम शुरू होने से पहले ही तय हो चुका था और ठीक सार्वजनिक फ़ॉर्मूले से गणना किया गया था।

<h2 id="dice-and-mines">
  Dice और Mines
</h2>

इंस्टेंट गेम्स इसी तरह सत्यापित होते हैं, कम ट्रांज़ैक्शन से:

* **Dice**: हर दांव का एक ट्रांज़ैक्शन। इसके `DiceBetSettled` इवेंट में गणना का हर इनपुट (`slothash`, `user`, `nonce`) के साथ `roll` और पेआउट होता है। [Dice की निष्पक्षता](/hi/docs/provably-fair/dice) पर दिए फ़ॉर्मूले से दोबारा गणना करें।
* **Mines**: हर गेम के दो ट्रांज़ैक्शन। स्टार्ट ट्रांज़ैक्शन बोर्ड का कमिट और स्लॉट हैश प्रकाशित करता है; सेटलमेंट ट्रांज़ैक्शन सीड और पूरा बोर्ड रिवील करता है। [Mines की निष्पक्षता](/hi/docs/provably-fair/mines) पर दिए फ़ॉर्मूले से दोबारा गणना करें।

## अगर कुछ मेल न खाए

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

अगर फिर भी सचमुच मेल नहीं खाता, तो यही वह चीज़ है जिसे सामने लाने के लिए यह सिस्टम बना है: डेटा सार्वजनिक और स्थायी है, इसलिए कोई भी आपकी जांच दोबारा चला सकता है। राउंड नंबर के साथ सपोर्ट से संपर्क करें। ध्यान रखें कि कमिट या फ़ॉर्मूले के वास्तविक बेमेल की कोई ईमानदार व्याख्या नहीं हो सकती, और ठीक इसी वजह से यह योजना उन्हें छिपाना असंभव बना देती है।
