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

# Apex Bahşişleri

> Her Apex işlemi, yayınlanmış bir bahşiş hesabına tek bir SystemProgram transferi taşır. Bahşiş kuralını, 0,001 SOL standart tabanı ve bahşişlerin nasıl kullanıldığını öğrenin.

## Bahşiş Kuralı

Apex üzerinden gönderdiğiniz her işlem, aşağıdaki koşulların tümünü karşılayan **tam olarak bir** bahşiş içermelidir:

<Steps>
  <Step title="Bir SystemProgram transferi">
    Bahşiş, yayınlanmış Apex bahşiş hesaplarından birine yapılan düz bir `SystemProgram::Transfer` talimatıdır.
  </Step>

  <Step title="Üst düzey">
    Transfer, işlemin üst düzey bir talimatıdır. Programınızın içinden CPI aracılığıyla yapılan bir transfer sayılmaz.
  </Step>

  <Step title="Bir imzalayan tarafından karşılanır">
    Bahşişi ödeyen hesap işlemi imzalar. Ücret ödeyen hesap olması gerekmez.
  </Step>

  <Step title="Bahşiş hesabı statik anahtarlarda">
    Bahşiş hesabı, işlemin statik hesap anahtarlarında yer alır. Onu bir adres arama tablosu üzerinden yüklemeyin.
  </Step>

  <Step title="Katmanınızın tabanında veya üzerinde">
    Standart katman tabanı **0,001 SOL'dur (1.000.000 lamport)**. Anahtarınızın katmanı farklı bir taban belirleyebilir.
  </Step>
</Steps>

Bahşişi olmayan, birden fazla bahşişi olan veya bahşişi tabanınızın altında kalan bir işlem, herhangi bir yere gönderilmeden önce reddedilir. Ret, hangi kuralın ihlal edildiğini söyler ve taban altı mesajı tabanınızı belirtir. [Hatalar ve hız sınırları](/tr/apex/errors-and-rate-limits) sayfasına bakın.

## Yalnızca İşlem Bloğa Girince Ödersiniz

Bahşiş işleminizin içindedir. İşlem bloğa girmezse transfer hiç yürütülmez ve hiçbir şey ödemezsiniz. Reddedilen, süresi dolan veya düşürülen bir işlem size bahşişe mal olmaz.

## Bahşiş Hesaplarını Alın

Herhangi bir Apex uç noktasında JSON-RPC `getTipAccounts` yöntemini çağırın. API anahtarı gerektirmez.

<CodeGroup>
  ```bash cURL theme={null}
  curl -s http://fra.apex.orbitflare.com \
    -H "Content-Type: application/json" \
    -d '{"jsonrpc":"2.0","id":1,"method":"getTipAccounts","params":[]}'
  ```

  ```javascript JavaScript theme={null}
  const res = await fetch("http://fra.apex.orbitflare.com", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "getTipAccounts", params: [] }),
  });
  const { result: tipAccounts } = await res.json();
  const tipAccount = tipAccounts[Math.floor(Math.random() * tipAccounts.length)];
  console.log(tipAccount);
  ```

  ```python Python theme={null}
  import random
  import requests

  res = requests.post(
      "http://fra.apex.orbitflare.com",
      json={"jsonrpc": "2.0", "id": 1, "method": "getTipAccounts", "params": []},
      timeout=5,
  )
  tip_accounts = res.json()["result"]
  tip_account = random.choice(tip_accounts)
  print(tip_account)
  ```

  ```rust Rust theme={null}
  use apex_sender_client::rpc::RpcClient;
  use apex_sender_client::{tip, Region};

  #[tokio::main]
  async fn main() -> Result<(), Box<dyn std::error::Error>> {
      let api_key = std::env::var("APEX_API_KEY")?;
      let tip_accounts = RpcClient::new(Region::Frankfurt, &api_key)
          .get_tip_accounts()
          .await?;
      let tip_account = tip::pick_tip_account(&tip_accounts).ok_or("no tip accounts")?;
      println!("{tip_account}");
      Ok(())
  }
  ```
</CodeGroup>

Yanıt, base58 adreslerinden oluşan bir dizidir:

```json theme={null}
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": ["APeX2oLtjYehgTMUCA971L8htM7tGNqsXHDz5NrivhhX", "APeXAKT6spXSmU3uRv2MoEgQ7ckhAS4nexTgaxwLEfJ9", "..."]
}
```

Listeyi başlangıçta alın ve önbelleğe kaydedin. **Her işlem için rastgele** bir hesap seçin. Bahşişleri hesaplara yaymak, işlemlerinizin aynı hesap üzerindeki yazma kilidi için birbiriyle çekişmesini önler.

### Yayınlanan Hesaplar

Ana ağ bahşiş hesapları; hepsi `9ig7pd4gqe2m16ACGPbPo4HfMGD3ba38poDhXEayx7EF` bahşiş programının kasalarıdır. Yetkili liste `getTipAccounts` çıktısıdır: uç nokta yalnızca oradakileri kabul eder ve bir değişiklik önce orada görünür. Her adres `APeX` ile başlar, bu yüzden değiştirilmiş bir hesap hemen fark edilir.

```
APeX2oLtjYehgTMUCA971L8htM7tGNqsXHDz5NrivhhX
APeXAKT6spXSmU3uRv2MoEgQ7ckhAS4nexTgaxwLEfJ9
APeXB4mu1X7BSjwyPtiNUnKyhvc4wrq5SKEdmnPKWR95
APeXJTSGoxLWmwb9o1tiiEL5RXVUakazYgjLmZdDc2Ef
APeXUUaKFfPXjPxKHEdwCsJ4BfTuGg4qnVQyJE9K37PU
APeXVWXKDRAAujckMjmMsV61a4DQiXa98MPUAkL46sim
APeXW6PKFZRDz7WXBBybBMcoJaQo97UtLa5TAQnchNBY
APeXZuKaKuqouyfU8fFL1woeWvSEVFkY4EMrmkvbfhhD
APeXbYdbmrYWsastf6GurexGe3dwnuWKLD2mcsDoEuBU
APeXn29deoxpsZz6r7n63Ymmv2skBr3WhKYLB1mB2fR7
```

## Bahşiş Talimatını Ekleyin

<CodeGroup>
  ```javascript JavaScript theme={null}
  import { PublicKey, SystemProgram } from "@solana/web3.js";

  const tipInstruction = SystemProgram.transfer({
    fromPubkey: payer.publicKey,
    toPubkey: new PublicKey(tipAccount),
    lamports: 1_000_000, // 0.001 SOL, the standard tier floor
  });
  ```

  ```python Python theme={null}
  from solders.pubkey import Pubkey
  from solders.system_program import TransferParams, transfer

  tip_instruction = transfer(TransferParams(
      from_pubkey=payer.pubkey(),
      to_pubkey=Pubkey.from_string(tip_account),
      lamports=1_000_000,  # 0.001 SOL, the standard tier floor
  ))
  ```

  ```rust Rust theme={null}
  use apex_sender_client::{tip_instruction, MIN_TIP_LAMPORTS};

  let tip_ix = tip_instruction(&payer.pubkey(), &tip_account, MIN_TIP_LAMPORTS);
  ```
</CodeGroup>

Bunu, kendi talimatlarınızın yanında işlemin talimat listesine ekleyin. [Hızlı başlangıç](/tr/apex/quickstart) eksiksiz programları gösterir.

## Bahşiş Nereye Gider

Bahşiş hesapları, OrbitFlare'in zincir üstü bahşiş programının kasalarıdır. Bu hesaplardan yalnızca program para çekebilir.

İşleminizi bloğa ulaştıran yol **Jito yolu** olduğunda, bahşişten 5.000 lamport'luk temel ücret düşülerek kalan tutar, işleminizle aynı paket içinde Jito'ya teklif olarak verilir. Ayrı bir Jito bahşişi eklemezsiniz. Tek bir Apex bahşişi üç yolun hepsini kapsar.

| Bahşişiniz        | Temel ücret   | Jito yolu kazandığında Jito teklifi |
| ----------------- | ------------- | ----------------------------------- |
| 1.000.000 lamport | 5.000 lamport | 995.000 lamport                     |
| 5.000.000 lamport | 5.000 lamport | 4.995.000 lamport                   |

Dolayısıyla daha büyük bir bahşiş, Jito açık artırmasında daha büyük bir teklif anlamına gelir. İşlemi hangi yol bloğa ulaştırırsa ulaştırsın size aynı tutara mal olur, çünkü bahşiş imzaladığınız transferin kendisidir.

## Bahşiş ve Öncelik Ücreti Farklı Şeylerdir

Apex işleminizi lidere ulaştırır. Liderin zamanlayıcısı ise işlemleri yine **öncelik ücretine** göre sıralar. Bu ücret, hesaplama birimi fiyatınızın hesaplama birimi limitinizle çarpımıdır. Her işlemde ikisini de belirleyin:

* İşlemin gerçekten kullandığı miktara yakın bir **hesaplama birimi limiti**. Gereğinden büyük bir limit, birim başına etkin önceliğinizi düşürür ve blok alanını boşa harcar.
* Dokunduğunuz hesaplar için mevcut piyasaya uygun bir **hesaplama birimi fiyatı**.

<CodeGroup>
  ```javascript JavaScript theme={null}
  import { ComputeBudgetProgram } from "@solana/web3.js";

  const computeBudget = [
    ComputeBudgetProgram.setComputeUnitLimit({ units: 100_000 }),
    ComputeBudgetProgram.setComputeUnitPrice({ microLamports: 10_000 }),
  ];
  ```

  ```python Python theme={null}
  from solders.compute_budget import set_compute_unit_limit, set_compute_unit_price

  compute_budget = [
      set_compute_unit_limit(100_000),
      set_compute_unit_price(10_000),  # micro-lamports per compute unit
  ]
  ```

  ```rust Rust theme={null}
  use solana_compute_budget_interface::ComputeBudgetInstruction;

  let compute_budget = [
      ComputeBudgetInstruction::set_compute_unit_limit(100_000),
      ComputeBudgetInstruction::set_compute_unit_price(10_000), // micro-lamports per compute unit
  ];
  ```
</CodeGroup>

Bu talimatlar legacy ve v0 işlemler içindir. Bir [transaction v1](/tr/apex/transaction-v1) hesaplama bütçesini mesajın `TransactionConfig` yapısında belirler.

İkisinin de boyutlandırılmasına ilişkin rehberlik için [En iyi uygulamalar](/tr/apex/best-practices#bahşişi-alım-satıma-göre-boyutlandırın) sayfasına bakın.
