> ## 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 adilliği

> Tahtanın ne zaman taahhüt edildiği, nasıl türetildiği ve programın sonuçlandırmada neyi yeniden kontrol ettiği.

Bir Mines tahtası, siz tek bir kare seçmeden önce sabitlenir. Açılış işlemi, rastgele bir sunucu seed'inin SHA-256 hash'ini taahhüt eder ve bir Solana slot hash'ini kaydeder; tahta bu ikisinin saf bir fonksiyonudur. Sonuçlandırmada program tahtanın tamamını zincir üstünde yeniden türetir ve onunla uyuşmayan her sonuçlandırmayı reddeder.

Bu sayfa her [Mines](/tr/docs/games/mines) tahtasının ardındaki mekanizmayı tam olarak anlatır: neyin ne zaman taahhüt edildiğini, tahtanın kesin türetilişini, programın sonuçlandırmada neyi yeniden kontrol ettiğini ve şemanın dürüst sınırlarını. Arka plan için: [Kanıtlanabilir adilliğe genel bakış](/tr/docs/provably-fair/overview).

## Ne taahhüt edilir ve ne zaman?

Bir Mines oyunu, aynı anda üç şey yapan tek bir zincir üstü işlemle (`mines_start`) başlar, **siz daha hiçbir kare seçmeden önce**:

1. **Operatörün katkısını taahhüt eder.** Backend rastgele 32 baytlık bir `server_seed` üretir ve işlem bunun SHA-256 hash'ini, yani taahhüdü saklar. Seed'in kendisi oyun bitene kadar gizli kalır.
2. **Zincirin entropisini kaydeder.** Program, Solana'nın `SlotHashes` sysvar'ından en son slot hash'ini okur ve oyuna kaydeder.
3. **Koşulları dondurur.** Kasa avantajı, ödeme tavanı ve iade zaman aşımı oyununuza anlık görüntü olarak kaydedilir; hâlihazırda oynadığınız bir tahtanın fiyatını hiçbir şey değiştiremez.

Tahta; taahhüt edilen seed'in, kaydedilen slot hash'inin, hesabınızın ve oyun sayacınızın saf bir fonksiyonudur. **Bu andan itibaren tahta sabittir**: mayınlar seçimlerinize göre yer değiştiremez. Oyun sırasında kareler zincir dışında açılır (anında açılmalarının sebebi budur); sonunda sonuçlandırma işlemi seed'i açıklar ve program **tahtanın tamamını zincir üstünde yeniden türeterek** onunla uyuşmayan her sonuçlandırmayı reddeder.

<h2 id="the-exact-board-derivation">
  Mines tahtası nasıl türetilir?
</h2>

25 kare, 5×5 ızgarada satır satır 0'dan 24'e kadar numaralandırılır (`index = row × 5 + column`). Tahta 25 bitlik bir maskedir: `t` biti 1 ise `t` karesinin altında mayın vardır.

```text theme={null}
girdiler
  server_seed  32 bayt   operatör seed'i, oyun başında sha256(server_seed) olarak taahhüt edilir
  slothash     32 bayt   başlangıç işlemi yürütüldüğündeki en son Solana slot hash'i
  user         32 bayt   zincir üstü kullanıcı hesabınızın adresi
  nonce        8 bayt    Mines oyun sayacınız, little-endian
  mines_count  1..24     seçtiğiniz mayın sayısı

rastgele akış: 4'er bayt tüketilen SHA-256 blokları
  block(k)   = sha256( server_seed ‖ slothash ‖ user ‖ nonce ‖ "mines" ‖ k )
               // "mines" = 5 ASCII bayt; k = blok sayacı 0, 1, 2, …, 8 bayt little-endian
  next_u32() = geçerli bloğun okunmamış sonraki 4 baytı, big-endian;
               bir blok tükenince block(k+1)'e geçilir

0..bound aralığında yansız çekiliş (reddetmeli örnekleme, modulo yanlılığı yok)
  draw(bound):
    zone = 4294967295 − (4294967295 mod bound)
    v = next_u32() tekrarla, ta ki v < zone olana dek
    v mod bound döndür

tahta: kısmi Fisher–Yates karıştırması
  tiles = [0, 1, …, 24]
  mine_mask = 0
  for i in 0..mines_count:
      j = i + draw(25 − i)
      tiles[i] ile tiles[j]'yi yer değiştir
      mine_mask = mine_mask OR (1 << tiles[i])
```

Kendiniz yeniden hesaplarken önemli olan ayrıntılar:

* Hash girdisinin sırası tam olarak şudur: seed, slot hash, kullanıcı hesabı adresi, nonce (**8 bayt little-endian**), ASCII etiketi `"mines"`, ardından blok sayacı (**8 bayt little-endian**, 0'dan başlar).
* Her 4 baytlık parça **big-endian** olarak okunur. Bir blok en fazla 8 çekiliş verir; gerektikçe akış bir sonraki sayaç değeriyle yeniden dolar.
* Reddetmeli örnekleme döngüsü her çekilişi tam olarak tekdüze kılar: karıştırmada tartışılacak bir yanlılık yoktur.

<h2 id="the-payout-formula">
  Program hangi ödeme formülünü uygular?
</h2>

Açtığınız her güvenli kare, kazancınızı hayatta kalma olasılığınızın tam tersiyle çarpar; kasa avantajı yalnızca bir kez uygulanır:

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

M = mayın sayısı, k = açılan güvenli kare sayısı
```

Program bunu kesin tam sayı aritmetiğiyle ve en sonda tek bir aşağı yuvarlamalı bölmeyle hesaplar (yuvarlama en fazla bir baz puandır ve kasanın lehinedir). Mevcut %1,5 avantajla:

| Tahta | Çarpan |
| - | - |
| 3 mayın, 1 açılış | 1.1193x |
| 3 mayın, 2 açılış | 1.2792x |
| 24 mayın, 1 açılış | 24.625x |
| 1 mayın, tahtanın tamamı (24 açılış) | 24.625x |

Beklenen getiri, her mayın ve açılış kombinasyonu için `1 − avantaj`'dır. Güncel değerler [Ücretler ve limitler](/tr/docs/fees-and-limits) sayfasında listelenir.

## Program sonuçlandırmada neyi uygular?

Sonuçlandırma işlemi (`mines_settle`) `server_seed`'i açıklar ve bir sonuç bildirir: açılmış bir kare kümesiyle kazanç alma ya da belirli bir karede batma. Program ardından her şeyi zincir üstünde kontrol eder:

* `sha256(server_seed)`, oyun başında saklanan taahhütle aynı olmalıdır; farklı bir seed oyunu sonuçlandıramaz.
* Tahta yukarıdaki formülle **sıfırdan yeniden türetilir**. Açılmış olarak bildirilen ama aslında mayın olan her kare reddedilir; batma karesi olarak bildirilen ama mayın olmayan bir kare reddedilir; aynı zamanda açılmış olarak da bildirilen bir batma karesi reddedilir.
* Çarpan, **anlık görüntüsü alınmış** avantaj ve gerçek açılış sayınızdan zincir üstünde hesaplanır; böylece ödeme yanlış bildirilemez.
* Sonuçlandırma olayı seed'i, slot hash'ini, mayın maskesinin tamamını, açtığınız kareleri ve sonucu kalıcı olarak yayımlar.

## Neler garanti edilir, neler edilmez?

**Program tarafından uygulananlar:**

* Tahta, taahhüt ve kaydedilen slot hash'i sayesinde ilk seçiminizden önce sabitlenir. Mayınlar oyunun ortasında yer değiştiremez.
* Sonuçlandırmada operatör tahta hakkında yalan söyleyemez: yanlış bir seed, güvenli bildirilen bir mayın ya da sahte bir batma, işlemin başarısız olmasına yol açar.
* Başladığınız koşullar (avantaj, ödeme tavanı, zaman aşımı) oyunun sonuna kadar geçerlidir.
* Bahis tutarınız asla kilitli kalamaz: operatör oyunu hiç sonuçlandırmazsa, oyunun zaman aşımından sonra iptali **herkes** çağırabilir ve bahis tutarınız iade edilir. Normal işleyişte bu noktaya hiç gelmezsiniz: terk edilmiş bir tahtada kazanç, zaman aşımından önce o anki çarpanla alınır (bkz. [Mines](/tr/docs/games/mines)); böylece yalnızca bahis tutarınızı değil, kazancınızı da korursunuz. İzin gerektirmeyen iptal, operatörün ortadan kaybolduğu durum için alttaki güvencedir.

**Dürüst uyarılar:**

* **Siz oynarken operatör tahtayı bilir.** Bu yapısaldır, bu tasarıma özgü bir kusur değildir: kareler zincir dışında anında açılır ve onları açan taraf mayınların nerede olduğunu bilmek zorundadır. Hiçbir rastgelelik şeması bunu ortadan kaldırmaz: VRF ile üretilmiş bir tahta bile, operatör ilk karenizi açtığı anda onun tarafından bilinir. Taahhüdün garanti ettiği şey, bu bilginin tahtayı *değiştirmek* ya da sonucu *yanlış bildirmek* için kullanılamayacağıdır.
* **Başlangıç zamanlaması.** Tahta, oyununuz başladığında kaydedilen slot hash'ine bağlıdır ve başlangıç işlemi backend tarafından gönderilir; bu, diğer oyunlardakiyle aynı zamanlama meselesidir. Bir tahtayı önceden bilmek ancak seçimleriniz tahmin edilebilirse işe yarar; tıkladığınız yerleri değiştirmek, zamanlamaya dayalı tahta seçimini boşa çıkarır.
* **İptaller.** Operatör devam eden bir oyunu iptal edebilir (ilke olarak kazanmakta olduğunuz bir oyunu da). İptal **bahis tutarının tamamını iade eder** (el koyma diye bir yol yoktur) ve her zaman herkese açık bir olay yayımlar; böylece iptal sıklığı herkes tarafından zincir üstünde denetlenebilir.
* Her oyun yeni bir seed kullanmalıdır: açıklanmış bir seed herkese açıktır ve yeniden kullanılması bir sonraki tahtayı herkesçe türetilebilir hâle getirir. Program art arda yeniden kullanımı zincir üstünde reddeder; backend ise genel benzersizliği sağlar.

<h2 id="verify-a-game">
  Bir Mines oyununu nasıl doğrularsınız?
</h2>

Oyununuzun son işlemindeki sonuçlandırma olayı (`MinesGameSettled`) şunları içerir: `server_seed`, `slothash`, `user`, `nonce`, `mines_count`, `mines_mask`, `revealed_mask`, `bust_tile`, `multiplier_bps` ve `is_win`. Doğrulamak için:

1. Taahhüdü kontrol edin: `sha256(server_seed)`, oyununuzun başlangıç işleminde (`MinesGameStarted` olayı) yayımlanan `commit_hash` ile aynı olmalıdır; bu, tahtanın ilk seçiminizden önce kilitlendiğini kanıtlar.
2. Mayın maskesini yukarıdaki formülle yeniden türetin ve olaydaki `mines_mask` ile karşılaştırın.
3. Sonucu maskeye göre kontrol edin: `revealed_mask`'in her biti güvenli bir kare olmalı, batma karesi ise bir mayın olmalıdır.
4. Çarpanı ödeme formülüyle kontrol edin.

Bir blok gezgininden olay verilerini okumaya dair genel ipuçları için [Bir turu doğrulayın](/tr/docs/provably-fair/verify-a-round) sayfasına bakın.

Oyunun nasıl oynandığı için [Mines oyun rehberine](/tr/docs/games/mines) bakın.
