Jito DontFront ile MEV Koruması

Jito DontFront ile MEV Koruması

Maksimum Çıkarılabilir Değer (MEV), bir blok içindeki işlemlerin yeniden sıralanması, dahil edilmesi veya hariç tutulması yoluyla elde edilebilecek değeri ifade eder. MEV, yalnızca belirli bir zincire özgü değildir; blok üreticilerinin işlem sıralamasını kontrol ettiği her blok zincirinin temel bir özelliğidir. Arbitraj gibi bazı MEV biçimleri, DEX'ler arasındaki fiyat farklılıklarını düzelterek piyasaların verimli kalmasına yardımcı olur. Sandwich saldırıları gibi diğerleri ise değeri doğrudan kullanıcılardan alır. DeFi uygulamaları geliştiren geliştiriciler için bu durum, daha kötü işlem gerçekleştirmesi ve kayıp kârlar anlamına gelebilir.

Bu kılavuz, zararlı MEV'nin yaygın bir biçimi olan sandwich saldırılarına ve Jito'nun dontfront özelliğini kullanarak bunların nasıl azaltılabileceğine odaklanmaktadır.

Önerilen ön okuma: Jito Paketleri

Solana'da MEV

Solana'nın mimarisi, genel mempool'lara sahip zincirlere kıyasla MEV yüzey alanını zaten azaltmaktadır. İşlemler, ortak bir mempool'da beklemek yerine doğrudan yaklaşan blok liderine iletilir ve işlenmeyen işlemler yaklaşık 150 blok (~1 dakika) sonra sona erer. Bu durum, araştırmacıların bekleyen işlemleri gözlemleyip üzerlerine hareket etme penceresini önemli ölçüde daraltır.

Bununla birlikte MEV çıkarımı hâlâ gerçekleşmektedir. Optimize edilmiş altyapıya ve doğrudan validator bağlantılarına sahip araştırmacılar, işlem akışını gözlemleyip buna yanıt verebilir. Solana'daki MEV etkinliğinin büyük bölümü atomik arbitrajdır: DEX'ler arasındaki fiyat farklılıklarını tek bir işlemde düzelten botlar. Bu MEV türü, piyasalar arasında fiyat tutarlılığını artırdığı için genellikle faydalıdır.

Zararlı çeşidi olan sandwich saldırıları, geliştiricilerin aktif olarak korunması gereken şeydir.

Sandwich Saldırısı Nedir?

Bir araştırmacı bekleyen takas işleminizi tespit edip işlem sıralamasını istismar ettiğinde sandwich saldırısı gerçekleşir:

  1. Ön çalıştırma: araştırmacı, işleminizden önce token'ı satın alarak fiyatı yukarı iter
  2. İşleminiz, beklenenden daha kötü bir fiyatta gerçekleşir
  3. Arka çalıştırma: araştırmacı, işleminizden sonra token'ı satarak farkı cebine atar

Solana'da bu durum Jito paketleri aracılığıyla gerçekleşebilir. Bir araştırmacı şunun gibi bir işlem paketi gönderir: [frontrun_tx, your_tx, backrun_tx] ve blok motoru bunları sırayla atomik olarak çalıştırır. Mağdur daha kötü bir gerçekleştirme fiyatı alırken araştırmacı spread'den kâr eder.

DontFront Nasıl Çalışır?

DontFront, araştırmacıların bir pakette işleminizin önüne işlem yerleştirmesini engelleyen Jito blok motorunun bir özelliğidir.

Mekanizma: işleminizdeki herhangi bir talimata jitodontfront ile başlayan geçerli bir Solana public key ekleyin. Blok motoru bu ön eki tanır ve bir kural uygular: işleminizi içeren herhangi bir paket, onu 0. indekse yerleştirmek zorundadır.

Without dontfront: [frontrun_tx, your_tx, backrun_tx] ← sandwich possible
With dontfront: [your_tx, ...] ← your tx must be first

Adım Adım

  1. jitodontfront ile başlayan geçerli bir adres seçin (örn. jitodontfront111111111111111111111111111111). Hesabın zincir üzerinde mevcut olması gerekmez; asla okunmaz veya yazılmaz. Bir dizenin geçerli bir adres olup olmadığını @solana/kit'ten assertIsAddress işlevini kullanarak doğrulayabilir ya da adresi Solana Explorer'a girerek çözümlenip çözümlenmediğini görebilirsiniz. İşte geçersiz bir adres örneği.

  2. Herhangi bir talimattaki işleminize salt okunur, imzasız bir hesap olarak ekleyin. Optimum yerleşim hızı için salt okunur olarak işaretleyin. Çoğu program (System Program dahil) beklentileri dışındaki ek hesapları görmezden gelir.

  3. Jito blok motoru aracılığıyla gönderin:

    • sendTransaction: https://mainnet.block-engine.jito.wtf/api/v1/transactions
    • sendBundle: https://mainnet.block-engine.jito.wtf/api/v1/bundles

    Belgeler: sendTransaction ve sendBundle

  4. Blok motoru jitodontfront ön ekini algılar ve sıralama kurallarını uygular.

Blok Motorunda Neler Olur?

Blok motoru bir jitodontfront hesabı içeren bir işlem gördüğünde:

  • sendTransaction aracılığıyla: işlem korunur. Hiçbir paket onun önüne başka bir işlem yerleştiremez
  • sendBundle aracılığıyla: işlem 0. indekste görünmek zorundadır, aksi takdirde paketin tamamı reddedilir

jitodontfront hesabı içermeyen işlemler ve paketler etkilenmez.

Paket Sıralama Kuralları

Bu kurallar, bir pakette jitodontfront işlemi göründüğünde geçerlidir.

İzin Verilen Desenler

[tx_with_dontfront, tip]
[tx_with_dontfront, arbitrage, tip]
[tx_with_dontfront_signer1, tx_with_dontfront_signer1_and_signer2, tip]

Bir Pakette Birden Fazla DontFront İşlemi

Tek bir pakette birden fazla dontfront işlemine, her iki koşul da sağlandığında izin verilir:

  1. Tüm dontfront işlemleri paketin ön kısmında bitişik olarak yer alır
  2. Her dontfront işlemi, ilk dontfront işlemiyle en az bir imzalayıcıyı paylaşır
✅ [txA_df, txB_df, txC_df, arbitrage, tip]
(contiguous at front, overlapping signers)
✅ [txA_df_signer1_signer2, txB_df_signer1_signer3, txC_df_signer2_signer4]
(each shares a signer with txA)

Reddedilen Desenler

❌ [tip, tx_with_dontfront]
→ dontfront tx is not at index 0
❌ [txA_df_signer1, txB_df_signer2]
→ no overlapping signer between txA and txB
❌ [trade, tx_with_dontfront, arbitrage, tip]
→ dontfront tx is not at the front

Entegrasyon Örnekleri

Hızlı bir kod tarifi için MEV Koruması kılavuz girişine bakın.

TypeScript (@solana/kit)

Temel fikir, dontfront hesabını herhangi bir talimata ekleyen bir yardımcıdır:

import {
address,
AccountRole,
type Instruction,
type Address
} from "@solana/kit";
const DONT_FRONT: Address = address(
"jitodontfront111111111111111111111111111111"
);
function withDontFront(ix: Instruction): Instruction {
return {
...ix,
accounts: [
...(ix.accounts ?? []),
{ address: DONT_FRONT, role: AccountRole.READONLY }
]
};
}

Ardından imzalanmış işlemi standart bir RPC düğümü yerine Jito blok motoruna gönderin. Her zaman base64 kodlaması kullanın. Base58, Jito'nun API'sinde kullanımdan kaldırılmıştır.

const response = await fetch(
"https://mainnet.block-engine.jito.wtf/api/v1/transactions",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "sendTransaction",
params: [base64Tx, { encoding: "base64" }]
})
}
);

En İyi Uygulamalar

DontFront, koruma katmanlarından yalnızca biridir. Sağlam bir MEV azaltma stratejisi birden fazla yaklaşımı bir arada kullanır:

İşlem Düzeyinde Koruma

  • Sıkı kayma toleransları belirleyin. Sandwich saldırılarına karşı en etkili tek savunma, takaslarda kabul edilebilir kaymayı sınırlandırmaktır. Daha küçük bir kayma penceresi, saldırganların kullanabileceği kâr marjını azaltarak işleminizi sandwich açısından daha az cazip hâle getirir.

  • Uygun bahşişler ve öncelik ücretleri belirleyin. Yoğunluk dönemlerinde daha yüksek bahşişler ve öncelik ücretleri, işleminizin/paketinizin hızlıca yerleşme olasılığını artırarak araştırmacıların hareket etme penceresini daraltır. Uygun bahşişlerin nasıl ayarlanacağına ilişkin daha fazla ayrıntı için Jito'nun Bahşiş Miktarları belgelerine bakın.

  • Hesaplama birimi kullanımını optimize edin. Her blokta sınırlı sayıda hesaplama birimi bulunur (ve hesapların blok başına kullanabileceği sınırlı sayıda hesaplama birimi vardır). İşleminizin/paketinizin bir bloğa dahil edilme olasılığını en üst düzeye çıkarmak için hesaplama birimi kullanımınızı optimize etmelisiniz. Ayrıntılar için Solana'da Hesaplama Kullanımı Nasıl Optimize Edilir kılavuzuna bakın.

DontFront'a Özgü

  1. Dontfront hesabını salt okunur olarak işaretleyin. Yazılabilir işaretleme çalışır ancak salt okunur yerleşim hızını optimize eder.

  2. Uygulama başına benzersiz bir dontfront pubkey kullanın. jitodontfront ile başlayan herhangi bir pubkey işe yarar. Benzersiz bir varyant kullanmak (örn. jitodontfront111111111111111111111111111123), zincir üzeri verileri incelerken uygulama başına kullanımı ayırt etmenizi sağlar.

  3. DontFront, Adres Arama Tablolarını destekler. Dontfront hesabı bir ALT aracılığıyla dahil edilebilir. Ancak bahşiş hesapları için ALT kullanmayın.

Sınırlamalar

  • Yalnızca blok motoru. DontFront, Jito blok motoru tarafından uygulanır. Doğrudan validator'lara gönderilen işlemler (Jito atlanarak) korunmaz.

  • Garanti değildir. Jito'nun belgelerinden: "Bu özellik sandwich saldırılarını azaltmaya yardımcı olabilir ancak bunu garanti etmez ve üçüncü tarafların gerçekleştirdiği sıralama dahil olmak üzere işlem sıralamasındaki tüm değişkenler için bir çözüm değildir."

  • Yalnızca Mainnet/Testnet. Bu bir Jito blok motoru özelliğidir. Devnet veya localhost üzerinde çalışmaz.

Kaynaklar

Is this page helpful?

© 2026 Solana Vakfı. Tüm hakları saklıdır.