> For the complete documentation index, see [llms.txt](https://docs.j.tools/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.j.tools/tr/araclar/wallets/many-to-many.md).

# Many to Many

[Many to Many Transfer](https://j.tools/tr/tools/many-to-many), SOL veya tek bir SPL token'ı eşli cüzdanlar arasında taşır. İçeri aktardığın her gönderen, kendi eşleştiği alıcıya belirli bir miktar öder ve tüm liste tek bir batch olarak çalışır. Her işlem tarayıcında imzalanır, bu yüzden gönderen anahtarları hiçbir zaman sunucuya değmez. Bunu bir matris ödemesi gibi düşün: birinci sıradaki gönderen birinci sıradaki alıcıya gider, ikinci sıra ikinciye, liste boyunca böyle devam eder. Varlık tarafına yeniysen [Sözlük](/tr/baslarken/glossary.md) SPL ve rent gibi terimleri açıklıyor.

{% hint style="warning" %}
**Ücretler hakkında.** Her işlemin iki maliyeti vardır: validator'lara ödenen Solana **ağ ücreti** ve **J Tools platform ücreti**. Platform ücreti, onaylamadan önce uygulamada her zaman görünür ve sen imzalamadan hiçbir şey tahsil edilmez. Ücretler zamanla değişebilir, bu yüzden bir kez gördüğün sayıya değil, uygulamadaki özete güven.
{% endhint %}

## Ne zaman kullanılır

* Birçok kaynak cüzdanın var ve her biri tek bir çalıştırmada kendi belirli alıcısını fonlamak zorunda.
* SOL veya tek bir SPL token'ı eşli gönderen-alıcı eşleşmeleri üzerinden dağıtıyorsun.
* Elinde halihazırda bir gönderen private key listesi ve buna karşılık gelen bir alıcı adresi listesi var.

Tek bir kaynak cüzdanın birçok alıcıya göndermesini istiyorsan [Multi Sender](/tr/araclar/wallets/multi-sender.md) kullan. Birçok cüzdanın tek bir cüzdana toplanmasını istiyorsan [Batch Collector](/tr/araclar/wallets/batch-collector.md) kullan. SPL modu için klasik SPL ile [SPL vs Token-2022](/tr/kavramlar/spl-vs-token2022.md) arasındaki farkı bilmen işe yarar, çünkü transfer yolu değişir.

## Başlamadan önce

* Operatör olarak çalışacak bağlı bir cüzdan ([nasıl bağlanılır](/tr/baslarken/quick-start.md)). Varlığı seçer ve yayınlar; içeri aktardığın gönderenler kendi transferlerini imzalar.
* İçeri aktarmaya hazır gönderen private key'lerin (base58, base64 veya byte-array). Anahtarlar yalnızca tarayıcıda kullanılır.
* Buna karşılık gelen bir alıcı public adres listesi. İki liste konuma göre eşleşir.
* SPL modu için taşımak istediğin token mint'i. Yerleşik token seçici ile seç.
* Her gönderende kendi miktarını, platform ücretini ve ağ baz ücretini karşılayacak kadar SOL. Yeni bir token hesabına ihtiyaç duyan SPL alıcılar bunun üstüne küçük bir tek seferlik rent ekler.

{% hint style="warning" %}
Eşleşme kesinlikle sıraya göredir. Birinci sıradaki gönderen birinci sıradaki alıcıyla eşleşir. İki taraftaki fazla sıralar eşleşmeden kalır ve gönderemez, o yüzden iki listeyi aynı uzunlukta ve aynı sırada tut.
{% endhint %}

## Adım adım

{% stepper %}
{% step %}

### Cüzdan kaynağını seç

Aracın üstünde operatör cüzdanını bağla ve seç. Bu cüzdan batch'i sürer; alıcılara ödeme yapmaz.
{% endstep %}

{% step %}

### Varlığı seç

Native transferler için SOL seç ya da SPL'e geçip seçiciyle bir token seç. Tüm batch tek bir varlığı taşır.
{% endstep %}

{% step %}

### Önce gönderenleri, sonra alıcıları içeri aktar

Private key'leri yapıştırmak için **Import senders**, ardından adresleri yapıştırmak için **Import recipients** kullan. Sıraya göre eşleşirler, yani sender\[i] recipient\[i]'ye öder. Her gönderen yalnızca kendi transferini imzalar.
{% endstep %}

{% step %}

### Miktarları ayarla

Her sırayı bir kerede doldurmak için toplu modu kullan: **Max** her gönderenin harcanabilir bakiyesinin tamamını gönderir, **Fixed** her sıraya tek bir miktar ayarlar ve **Percentage** her gönderenin bakiyesinin bir kısmını gönderir. Apply düğmesi yoktur; sıralar canlı dolar. Herhangi bir sırayı elle düzenleyip üzerine yazabilirsin, toplu kontrolü tekrar değiştirene kadar kilitli kalır.
{% endstep %}

{% step %}

### Önizlemeyi ve özeti incele

Pairs tablosunu (kimden, kime, her gönderenin bakiyesi, miktar ve durum) ve Summary panelini (hazır sayı için platform ücreti, tahmini ağ ücreti ve gönderilecek toplam) kontrol et. Çalıştırmadan önce işaretlenen her şeyi düzelt.
{% endstep %}

{% step %}

### Batch'i gönder

**Send** düğmesine tıkla (etiketi çift sayısını gösterir). Çalıştırıcı bakiyeleri yeniden çeker, gönderemeyecek sıraları düşürür, her gönderenin işlemini tarayıcıda oluşturup imzalar, ardından sunucu üzerinden yayınlar. Sıra bazında durumu Solscan bağlantılarıyla izle ve yalnızca geçmeyen sıraları yeniden denemek için **Keep only failed** kullan.
{% endstep %}
{% endstepper %}

[**Many to Many Transfer'i uygulamada aç →**](https://j.tools/tr/tools/many-to-many)

{% hint style="info" %}
**Cüzdan uyarıları hakkında.** Bazı araçlar tek adımda birden fazla şey imzalar, örneğin bir token ile metadata'sını birlikte oluşturmak gibi. Phantom bu çok adımlı işlemlerde bir dikkat bandı gösterebilir. Burada bu band beklenen bir şeydir, bir sorun olduğu anlamına gelmez. Ne imzaladığını oku, sonra onayla.
{% endhint %}

## Seçenekler, açıklamasıyla

| Alan                    | Ne yapar                                                                                                                                                       |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Token type              | SOL veya SPL. Tüm batch'in native SOL mı yoksa tek bir token mı taşıyacağına karar verir.                                                                      |
| Token mint              | SPL için gereklidir. Her çift için taşınan tek mint, token seçiciyle seçilir.                                                                                  |
| Sender key (from)       | O sıranın transferini tarayıcıda imzalayan private key. base58, base64 veya byte-array kabul eder.                                                             |
| Recipient (to)          | Eşleşen gönderenin ödeme yaptığı public adres.                                                                                                                 |
| Amount                  | O çift için miktar, SOL biriminde (SOL modu) veya token biriminde (SPL modu).                                                                                  |
| Bulk mode               | Her sırayı bir kerede otomatik doldurur: Max, Fixed veya Percentage. Canlı dolar, Apply düğmesi yok. Düzenlenen sıralar kontrolü değiştirene kadar kilitlenir. |
| Platform fee and wallet | Transfer başına ücret ve hedefi, her gönderenin kendi işleminin içinde on-chain tahsil edilir.                                                                 |
| RPC endpoint            | İşlemleri oluşturmak ve onaylamak için kullanılan endpoint.                                                                                                    |

{% hint style="info" %}
Platform ücreti her gönderenin kendi işleminin içinde platform cüzdanına ikinci bir transfer olarak tahsil edilir ve sunucu yayında bunu doğrular, bu yüzden çıkarılamaz. Her çift kendi imzalı işlemi olduğu için maliyet çift sayısıyla doğrusal olarak artar. Güncel tutar için araçtaki canlı ücret özetine ve [Ücret tablosu](/tr/referans/fee-schedule.md) sayfasına bak.
{% endhint %}

## Bir şeyler ters giderse

Bazı sıralar on-chain başarısız olmak yerine bilerek atlanır. Bu, çalıştırıcının fonlarını koruması demektir.

* **Rent dust atlama (`M2M_RENT_DUST`).** SOL modunda, gönderene Solana'nın rent-exempt minimumunun altında küçük bir sıfır olmayan bakiye bırakacak bir sıra başarısız olmak yerine atlanır. Max gönder ya da miktarı düşür ki gönderen ya yeterince tutsun ya da tamamen boşalsın.
* **Yeterli SOL yok (`M2M_INSUFFICIENT_SOL`).** Gönderen miktarını artı ücretleri karşılayamıyor ya da bir SPL gönderende ücret ve yeni hesap rent'i için SOL yok. O gönderene SOL ekle. Sıfır miktarlı sıralar da atlanır.
* **Eşleşmeyen sıralar.** Karşısında gönderen olmayan bir alıcı gönderemez ve alıcısı olmayan bir gönderen alıcısı eksik olarak görünür. İki listeyi aynı sırada hizala.
* **Onay zaman aşımı (`CONFIRM_TIMEOUT`).** Bir işlem zaman sınırı içinde onaylanmadı ve başarısız olarak işaretlendi. **Keep only failed** kullan ve yeniden dene.
* **Batch çok büyük.** Tek bir çalıştırma maksimum bir transfer sayısıyla sınırlıdır. Daha büyük bir listeyi birden fazla batch'e böl.

Tam liste için [Hata kodları referansı](/tr/referans/error-codes.md) sayfasına bak.

## SSS

<details>

<summary>Gönderen private key'lerim tarayıcıdan çıkıyor mu?</summary>

Hayır. Her anahtar yalnızca tarayıcında kendi transferini imzalamak için kullanılır ve hiçbir zaman bir sunucuya gönderilmez. Üstte bağladığın operatör cüzdanı, imzalı işlemleri yayınlayan taraftır.

</details>

<details>

<summary>Gönderenler alıcılarla nasıl eşleştirilir?</summary>

Konuma göre. İlk gönderen ilk alıcıya öder, ikinci ikinciye, böyle devam eder. İki listeyi aynı uzunlukta ve aynı sırada tut, yoksa artan sıralar eşleşmeden kalır ve gönderemez.

</details>

<details>

<summary>Aynı çalıştırmada hem SOL hem de bir token taşıyabilir miyim?</summary>

Hayır. Bir batch tek bir varlık taşır. Ya SOL seç ya da SPL seçip tüm çalıştırma için tek bir mint seç. Diğer varlık için ikinci bir batch çalıştır.

</details>

<details>

<summary>Bir sıra neden gönderilmek yerine atlandı?</summary>

Çalıştırıcı, başarısız olacağını veya fonları sıkışık bırakacağını bildiği sıraları atlar: gönderdikten sonra rent-exempt minimumun altında kalan gönderenler, miktar ve ücretler için SOL'u yetmeyen gönderenler, sıfır miktarlı sıralar ve eşleşmeyen sıralar. Durum sütunu her biri için nedeni gösterir.

</details>

<details>

<summary>Token-2022 token'ları işler mi?</summary>

Evet. Çalıştırıcı, mint'in klasik bir SPL token mı yoksa Token-2022 mi olduğunu mint'in sahip olduğu programdan tespit eder ve buna göre transfer eder.

</details>

## İlgili araçlar

{% content-ref url="/pages/5CRdXsLOuqFk7qLmTVkL" %}
[Multi Sender](/tr/araclar/wallets/multi-sender.md)
{% endcontent-ref %}

{% content-ref url="/pages/0yfryfw6418uNrorgkgN" %}
[Batch Collector](/tr/araclar/wallets/batch-collector.md)
{% endcontent-ref %}

{% content-ref url="/pages/GD8dFnh27GF8PxPcymD0" %}
[Relay Transfer](/tr/araclar/wallets/relay-transfer.md)
{% endcontent-ref %}

{% content-ref url="/pages/1ISkB25xnTYHsVBIA4Ab" %}
[Wallet Generator](/tr/araclar/wallets/wallet-generator.md)
{% endcontent-ref %}

{% hint style="warning" %}
**Çoklu cüzdan modu hakkında.** Bu mod, sayfaya içeri aktardığın private key'lerle çalışır. Yalnızca harcanabilir kabul edebileceğin cüzdanları kullan ve işin bittikten sonra onları değiştir. Diğer her şeyde J Tools non-custodial kalır: kendi cüzdanında imzalarsın ve anahtarını asla istemeyiz.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.j.tools/tr/araclar/wallets/many-to-many.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
