MEV-suojaus Jito DontFrontilla

MEV-suojaus Jito DontFrontilla

Maximal Extractable Value (MEV) tarkoittaa arvoa, jota voidaan kaapata järjestelemällä, sisällyttämällä tai jättämällä pois transaktioita lohkosta. MEV ei ole minkään yksittäisen ketjun erityispiirre – se on perustavanlaatuinen ominaisuus jokaisessa lohkoketjussa, jossa lohkon tuottajat hallitsevat transaktioiden järjestystä. Jotkut MEV:n muodot, kuten arbitraasi, auttavat pitämään markkinat tehokkaina korjaamalla hintaeroja DEX-pörssien välillä. Toiset, kuten sandwich-hyökkäykset, kaappaavat arvoa suoraan käyttäjiltä. DeFi-sovelluksia rakentaville kehittäjille tämä voi tarkoittaa heikompaa kaupankäyntisuorituskykyä ja menetettyä voittoa.

Tämä opas keskittyy sandwich-hyökkäyksiin, yleiseen haitallisen MEV:n muotoon, ja niiden lieventämiseen Jiton dontfront-ominaisuuden avulla.

Suositellut esitiedot: Jito Bundles

MEV Solanassa

Solanan arkkitehtuuri pienentää jo valmiiksi MEV:n vaikutusaluetta verrattuna julkisen mempoolin ketjuihin. Transaktiot välitetään suoraan tulevalle lohkojohtajalle sen sijaan, että ne odottaisivat jaetussa mempoolissa, ja käsittelemättömät transaktiot vanhenevat noin 150 lohkon (~1 minuutin) jälkeen. Tämä kaventaa merkittävästi hakijoiden aikaikkuna havaita ja reagoida vireillä oleviin transaktioihin.

MEV-kaappaus tapahtuu kuitenkin edelleen. Hakijat, joilla on optimoitu infrastruktuuri ja suorat validator-yhteydet, voivat tarkkailla transaktiovirtaa ja reagoida siihen. Suuri osa Solanan MEV-toiminnasta on atomista arbitraasia: botteja, jotka korjaavat hintaerot DEX-pörssien välillä yhdellä transaktiolla. Tämäntyyppiinen MEV on yleisesti ottaen hyödyllistä, sillä se parantaa hintojen yhdenmukaisuutta markkinoilla.

Haitallinen muoto, sandwich-hyökkäykset, on se, mitä kehittäjien tulisi aktiivisesti suojautua vastaan.

Mikä on sandwich-hyökkäys?

Sandwich-hyökkäys tapahtuu, kun hakija havaitsee vireillä olevan vaihtotransaktiosi ja hyödyntää transaktioiden järjestystä:

  1. Front-run: hakija ostaa tokenin ennen kauppaasi, nostaen hintaa
  2. Kauppasi suoritetaan odotettua huonommalla hinnalla
  3. Back-run: hakija myy tokenin kauppasi jälkeen ja taskuttaa erotuksen

Solanassa tämä voi tapahtua Jito-bundlejen kautta. Hakija lähettää bundlen, jossa on transaktioita kuten: [frontrun_tx, your_tx, backrun_tx], ja lohkomoottori suorittaa ne atomisesti järjestyksessä. Uhri saa huonomman suoritushinnan, kun taas hakija hyötyy hintaerosta.

DontFrontin toimintaperiaate

DontFront on Jito-lohkomoottorin ominaisuus, joka estää hakijoita sijoittamasta transaktioita sinun transaktiosi eteen bundlessa.

Mekanismi: lisää mikä tahansa kelvollinen Solana-julkinen avain, joka alkaa jitodontfront-etuliitteellä, mihin tahansa transaktiosi käskyyn. Lohkomoottori tunnistaa tämän etuliitteen ja pakottaa säännön: mikä tahansa transaktiosi sisältävä bundle pitää sijoittaa se indeksiin 0.

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

Vaihe vaiheelta

  1. Valitse kelvollinen osoite, joka alkaa jitodontfront-etuliitteellä (esim. jitodontfront111111111111111111111111111111). Tilin ei tarvitse olla olemassa onchainissä; sitä ei koskaan lueta eikä kirjoiteta. Voit tarkistaa, onko merkkijono kelvollinen osoite, käyttämällä assertIsAddress -funktiota @solana/kit-paketista, tai voit syöttää osoitteen Solana Exploreriin nähdäksesi, ratkeaako se. Tässä on esimerkki virheellisestä osoitteesta.

  2. Lisää se vain luku -tilassa olevana, ei-allekirjoittajana mihin tahansa transaktiosi käskyyn. Merkitse se vain luku -tilaan optimaalisen laskeutumisnopeuden saavuttamiseksi. Useimmat ohjelmat (mukaan lukien System Program) jättävät huomiotta ylimääräiset tilit, joita ne eivät odota.

  3. Lähetä Jito-lohkomoottorin kautta:

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

    Dokumentaatio: sendTransaction ja sendBundle

  4. Lohkomoottori tunnistaa jitodontfront-etuliitteen ja pakottaa järjestyyssäännöt.

Mitä tapahtuu lohkomoottorissa

Kun lohkomoottori havaitsee transaktion, joka sisältää jitodontfront-tilin:

  • Via sendTransaction: transaktio on suojattu. Mikään bundle ei voi sijoittaa toista transaktiota sen eteen
  • Via sendBundle: transaktion on esiinnyttävä indeksissä 0, muuten koko bundle hylätään

Transaktiot ja bundlet, jotka eivät sisällä jitodontfront-tiliä, eivät ole vaikutuksen alaisia.

Bundle-järjestyyssäännöt

Nämä säännöt pätevät, kun jitodontfront-transaktio esiintyy bundlessa.

Sallitut mallit

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

Useita DontFront-transaktioita yhdessä bundlessa

Useita dontfront-transaktioita yhdessä bundlessa sallitaan, kun molemmat ehdot täyttyvät:

  1. Kaikki dontfront-transaktiot ovat peräkkäin bundlen alussa
  2. Jokaisella dontfront-transaktiolla on vähintään yksi yhteinen allekirjoittaja ensimmäisen dontfront-transaktion kanssa
✅ [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)

Hylätyt mallit

❌ [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

Integrointiesimerkit

Nopean koodireseptin löydät MEV-suojaus-cookbook-merkinnästä.

TypeScript (@solana/kit)

Ydinajatus on apufunktio, joka liittää dontfront-tilin mihin tahansa käskyyn:

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 }
]
};
}

Lähetä sitten allekirjoitettu transaktio Jito-lohkomoottorille tavallisen RPC-noden sijaan. Käytä aina base64-koodausta. Base58 on poistettu käytöstä Jiton API:ssa.

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" }]
})
}
);

Parhaat käytännöt

DontFront on yksi suojaustaso. Kattava MEV-lieventämisstrategia yhdistää useita lähestymistapoja:

Transaktiotason suojaus

  • Aseta tiukat slippage-toleranssit. Tehokkain yksittäinen puolustus sandwich-hyökkäyksiä vastaan on hyväksyttävän slippagen rajoittaminen vaihtoissa. Pienempi slippage-ikkuna pienentää hyökkääjille saatavilla olevaa voittomarginaalia, tehden transaktiostasi vähemmän houkuttelevan sandwich-kohteen.

  • Aseta sopivat tipit ja prioriteettipalkkiot. Ruuhkautumisen aikana korkeammat tipit ja prioriteettipalkkiot lisäävät todennäköisyyttä, että transaktiosi/bundlesi laskeutuu nopeasti, pienentäen hakijoiden toimintaikkunaa. Katso Jiton dokumentaatio Tip-määristä saadaksesi lisätietoja sopivien tippien asettamisesta.

  • Optimoi laskentayksikköjen käyttö. Jokaisella lohkolla on rajoitettu määrä laskentayksiköitä käytettävissä (ja tileillä on rajoitettu määrä laskentayksiköitä käytettävissä per lohko). Varmistaaksesi, että transaktiosi/bundlesi sisällyttämisen todennäköisyys lohkoon on maksimoitu, sinun tulisi optimoida laskentayksikköjen käyttösi. Katso Kuinka optimoida laskentayksikköjen käyttö Solanassa -opas yksityiskohtia varten.

DontFront-kohtaiset suositukset

  1. Merkitse dontfront-tili vain luku -tilaan. Kirjoitettava merkintä toimii, mutta vain luku -tila optimoi laskeutumisnopeuden.

  2. Käytä yksilöllistä dontfront-pubkey-avainta per sovellus. Mikä tahansa jitodontfront-etuliitteellä alkava pubkey toimii. Yksilöllisen variantin käyttö (esim. jitodontfront111111111111111111111111111123) antaa sinulle mahdollisuuden erottaa käyttö sovelluskohtaisesti onchain-dataa tarkastellessa.

  3. DontFront tukee Address Lookup Tableja. Dontfront-tili voidaan sisällyttää ALT:n kautta. Älä kuitenkaan käytä ALT:eja tip-tileille.

Rajoitukset

  • Vain lohkomoottori. DontFront on Jito-lohkomoottorin pakottama. Suoraan validatoreille lähetetyt transaktiot (Jiton ohittaen) eivät ole suojattuja.

  • Ei takuu. Jiton dokumentaatiosta: "Tämä ominaisuus voi auttaa vähentämään sandwich-hyökkäyksiä, mutta ei takaa sitä, eikä se ole ratkaisu kaikkiin transaktioiden järjestyksen vaihteluihin, mukaan lukien kolmansien osapuolten suorittama järjestely."

  • Vain Mainnet/Testnet. Tämä on Jito-lohkomoottorin ominaisuus. Se ei toimi devnetissä tai localhostissa.

Viitteet

Is this page helpful?

© 2026 Solana Foundation. Kaikki oikeudet pidätetään.