Langsung ke konten utama

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
AMM adalah target yang menggiurkan bagi kode yang merugikan: dana LP berada di pool yang sepenuhnya terlihat; setiap swap mengubah harga secara deterministik. Halaman ini mengkatalogkan kelas serangan yang telah didemonstrasikan terhadap AMM di mana pun, bagaimana serangan tersebut berlaku pada Raydium secara spesifik, dan apa yang Raydium (dan integrator) lakukan untuk mempertahankan diri.

1. Serangan sandwich / MEV

Serangan

Bot mengawasi mempool / aliran gossip, melihat swap pengguna, front-run dengan pembelian searah yang sama (mendorong harga), membiarkan tx pengguna dieksekusi pada harga yang lebih buruk, kemudian back-run dengan penjualan berlawanan. Bot untung dari spread tersebut.

Paparan

  • Paling terpapar: pool CPMM TVL-rendah dan pool AMM v4 — bahkan perdagangan kecil menggerakkan harga secara berarti.
  • Kurang terpapar: pool CLMM yang dalam — perdagangan dalam-tick tidak menggerakkan harga.
  • Tidak terpapar: panen farm, deposit LP (rasio dipaksakan, bukan peka-harga dengan cara yang sama).

Pertahanan

  • Bundle Jito (integration-guides/routing-and-mev) menyembunyikan tx dari mempool publik.
  • Slippage ketat — minimum-out yang lebih dekat ke yang diharapkan membuat sandwich tidak menguntungkan. Di bawah ~0,3%, sebagian besar sandwich mengalami kerugian.
  • Ukuran perdagangan lebih kecil — bagi swap $100k menjadi 10× $10k; setiap pergerakan menekan harga lebih sedikit.

Postur Raydium

Program inti Raydium tidak memberlakukan perlindungan anti-MEV — mereka netral di tingkat program. Perlindungan terjadi di lapisan pengajuan (Jito, perlindungan bawaan dompet). UI default slippage ke 0,5% yang masuk akal untuk sebagian besar pool.

2. Manipulasi harga

Serangan

Pedagang besar sementara menggerakkan harga pool (melalui flash loan atau modal self-funded), memicu beberapa tindakan hilir yang bergantung pada harga (likuidasi, pinjaman turunan-oracle, pembayaran derivatif), kemudian mengembalikan harga ke normal.

Paparan

  • Operasi Raydium native: tidak terpapar. Swap spot masuk-keluar hanya dikenai biaya round-trip; pedagang kehilangan uang.
  • Program terintegrasikan: terpapar jika membaca harga pool Raydium secara naif.

Pertahanan

  • Gunakan TWAP, bukan spot price, untuk komposabilitas (lihat security/oracle-and-token-risks).
  • CLMM ObservationState memberikan TWAP jendela-pendek yang tidak dapat dimanipulasi tanpa komitmen modal berkelanjutan.
  • Konsensus multi-oracle: jika program Anda membaca Raydium dan Pyth dan Jupiter dan hanya bertindak ketika mereka setuju dalam 1%, manipulasi flash-loan dari sumber mana pun tidak cukup.

Postur Raydium

CLMM mengirim dukungan TWAP ObservationState; integrator yang mengabaikannya dan menggunakan spot price ada pada diri mereka sendiri. Frontend Raydium menggunakan beberapa sumber harga untuk tampilan USD.

3. Serangan donasi / inflasi

Serangan

LP pertama di pool baru menyetor jumlah kecil (misalnya, 1 token dari masing-masing 6-mint desimal → 1 unit LP diterbitkan). Kemudian penyerang “menyumbangkan” 1.000.000 token langsung ke vault pool melalui transfer SPL Token. Sekarang 1 unit LP mewakili 500.000 dari setiap mint. LP subsekuensi yang mendeposito kurang dari itu dibulatkan menjadi 0 unit LP dan kehilangan deposit mereka.

Paparan

  • CPMM / AMM v4: berpotensi terpapar pada pool yang baru dibuat dan berguna rendah.
  • CLMM: tidak terpapar (tidak ada mint LP bersama; setiap posisi adalah NFT-nya sendiri dengan nilai likuiditas eksplisit).

Pertahanan

Instruksi initialize CPMM mengunci jumlah LP minimum ke pool (terinspirasi oleh pola MINIMUM_LIQUIDITY Uniswap V2). Ini berarti LP pertama menerima sqrt(x × y) - MINIMUM_LIQUIDITY, dengan MINIMUM_LIQUIDITY (1000 unit) dibakar ke null. Serangan donasi memerlukan penyerang untuk menyumbangkan >> deposit awal, yang menjadi tidak ekonomis. Selain itu, SDK Raydium memperingatkan keras ketika deposit awal sangat kecil dan memandu pengguna menuju jumlah yang wajar.

Postur Raydium

Penguncian MINIMUM_LIQUIDITY dikirim di CPMM; AMM v4 memiliki mekanisme serupa. Pengguna yang membuat pool harus disemai dengan setidaknya 10.000+ unit dari setiap mint untuk membuat serangan donasi tidak ekonomis dalam hal apa pun.

4. Penyalahgunaan hook transfer Token-2022

Serangan

Hook transfer mint dapat ditingkatkan. Penyerang menerapkan hook yang tidak bersalah pada peluncuran mint, mendapat daftar di Raydium, mengumpulkan LP dari pengguna. Kemudian, meningkatkan hook untuk memblokir semua transfer (efektif soft-rug — pengguna tidak bisa penarikan). Penyerang membuat pool dapat diperdagangkan hanya ke satu arah, membeli LP murah, membuka hook, menang.

Paparan

Pool yang mencakup mint dengan hook transfer.

Pertahanan

  • Tingkat program: program Raydium menjalankan hook selama swap; jika hook memblokir, swap kembali. Ini tidak mencegah serangan secara mekanis.
  • Tingkat UI: Raydium menandai pool dengan mint transfer-hook.
  • Tingkat integrator: agregator harus melewati mint transfer-hook secara default dan hanya whitelist hook yang diverifikasi.

Postur Raydium

Raydium tidak melarang pool transfer-hook (hook yang sah ada), tetapi menandainya dengan jelas. Agregator memfilter pada tags.includes("TRANSFER_HOOK") dapat dikecualikan jika diinginkan.

5. Eksploit komposabilitas / CPI

Serangan

Program mengkomposisi Raydium melalui CPI dan memperkenalkan bug: misalnya, melewatkan observation_state yang salah, array tick yang salah untuk swap CLMM, atau double-spend akun. Penyerang mengidentifikasi komposisi buggy dan mengeksploitasi.

Paparan

  • Integrator buggy — biasanya sumber bug.
  • Raydium — hanya jika bug memicu perilaku yang tidak disengaja di program Raydium itu sendiri.

Contoh historis

Tidak ada program Raydium yang telah dieksploitasi melalui CPI — validator akun Raydium menangkap akun yang tidak berbentuk dan kembali. Eksploit di ekosistem yang lebih luas telah terjadi melalui bug program kustom yang dikomposisi dengan AMM tetapi tidak berasal dari AMM.

Pertahanan

  • Program pemanggil harus menggunakan helper CPI Anchor (bukan instruksi yang dibangun tangan) jika memungkinkan — keamanan tipe menangkap sebagian besar penyalahgunaan.
  • Tes integrasi terhadap status mainnet-forked mencakup kasus komposisi.

6. Kompromi admin / kunci

Serangan

Kunci admin (otoritas upgrade, admin AmmConfig, klaim biaya protokol) dikompromikan. Penyerang menggunakan upgrade berbahaya yang menguras pool, atau memodifikasi AmmConfig untuk mengarahkan biaya ke dompet penyerang, atau menguras biaya protokol.

Paparan

Semua peran yang didokumentasikan dalam security/admin-and-multisig.

Pertahanan

  • Multisig 3/4 pada otoritas upgrade memerlukan kompromi 4 penandatangan independen.
  • Timelock 24 jam pada upgrade memberi pengguna waktu untuk bersih-bersih sebelum upgrade berbahaya diaktifkan.
  • Pemantauan operasional — peringatan pada aktivitas multisig apa pun melalui antrian publik Squads.

Insiden historis

Kunci otoritas pool AMM v4 dikompromikan pada Desember 2022 (pra-multisig). Perbaikan: memindahkan semua otoritas ke multisig Squads. Pasca-perbaikan, tidak ada insiden.

7. Serangan ekonomi pada matematika tick CLMM

Serangan

Penyerang canggih mengeksploitasi pembulatan atau edge case akuntansi biaya dalam matematika tick CLMM. Contoh yang telah ditemukan di implementasi CLMM lain (bukan Raydium):
  • Akuntansi pertumbuhan biaya yang pembulatan melawan pengguna, mengumpulkan debu.
  • Penyeberangan tick yang mengkredit/mendebet delta fee_growth yang salah.
  • Integer overflow dalam produk sqrtPrice * liquidity.

Paparan

Matematika custom yang kompleks. Audit dan fuzzing adalah pertahanan utama.

Postur Raydium

CLMM telah menjalani dua audit independen (OtterSec + MadShield) ditambah fuzzing berbasis properti yang berkelanjutan. Tidak ada bug yang berdampak produksi ditemukan hingga saat ini. Aritmatika sqrt_price_x64 Q64.64 menggunakan matematika 128-bit yang jenuh dengan pengujian unit mencakup tick batas.

8. Kebingungan posisi-NFT

Serangan

Pengguna ditipu untuk menandatangani transaksi yang mentransfer NFT posisi CLMM mereka ke penyerang. Penyerang sekarang memiliki likuiditas posisi.

Paparan

Setiap pemegang posisi NFT.

Pertahanan

  • UI dompet harus mengenali NFT posisi Raydium dan menampilkannya secara khas (bukan sebagai NFT generik untuk “mengirim”).
  • Pengguna harus waspada menandatangani transaksi yang mentransfer NFT.

Postur Raydium

NFT posisi mengimplementasikan standar metadata Metaplex; aplikasi dompet yang memahami posisi CLMM menampilkannya sebagai posisi likuiditas daripada NFT yang dapat diperdagangkan. Sebagian besar dompet Solana utama memunculkannya secara khusus sejak 2026.

9. Manipulasi aliran reward farm

Serangan

Pembuat farm mendanai vault reward, menarik staker, kemudian memanggil restartRewards dengan parameter yang membuat komputasi reward tertunda canggung, mencuri nilai panen.

Paparan

Farm dengan pembuat berbahaya. Farm v6 membatasi kekuatan pembuat dengan ketat; serangan ini tidak berfungsi.

Pertahanan

Instruksi admin Farm v6 (setRewards, restartRewards, addReward) mempertahankan hak pro-rata — reward_per_share disesuaikan pada saat perubahan, sehingga tidak ada akrual pra-perubahan yang secara retroaktif rusak.

Postur Raydium

Audit farm OtterSec secara khusus menguji skenario restart-rewards; tidak ada eksploit ditemukan.

10. Divergensi simulasi-vs-eksekusi

Serangan

Penyerang membangun transaksi yang mensimulasikan dengan sukses tetapi kembali pada eksekusi (atau sebaliknya). Digunakan untuk menggelisahkan dompet yang mengandalkan simulasi untuk tampilan.

Paparan

Dompet menampilkan “Anda akan menerima X” berdasarkan simulasi.

Pertahanan

  • Gunakan simulateTransaction dengan blockhash yang sama seperti pengajuan nyata.
  • Tampilkan hasil yang diharapkan sebagai ”≈” (kira-kira) bukan tepat.
  • Re-simulasikan segera sebelum pengajuan.

Postur Raydium

Simulasi CLMM deterministik mengingat keadaan pool saat ini; divergensi hanya terjadi jika keadaan berubah antara simulasi dan eksekusi (kasus normal, ditangani melalui batas slippage).

Tabel ringkasan

VektorSpesifik RaydiumDipertahankan diRisiko sisa untuk pengguna
Sandwich / MEVYaLapisan pengajuan (Jito, slippage)Rendah jika Jito digunakan
Manipulasi hargaHanya komposabilitasGunakan TWAPRendah jika TWAP dikonsumsi
Serangan donasiCPMMMINIMUM_LIQUIDITYRendah
Penyalahgunaan transfer-hookPool Token-2022Bendera UISedang untuk hook yang tidak diverifikasi
Eksploit CPIBug integratorValidator Raydium kembaliRendah (bug tetap di integrator)
Kompromi adminSemua programMultisig + timelockRendah (24h untuk bereaksi)
Matematika tick CLMMCLMMAudit + fuzzingRendah
Kebingungan NFT posisiCLMMUX dompetRendah dengan dompet modern
Manipulasi farmFarm v6Kekuatan pembuat terbatasRendah
Divergensi simulasiApa punUX dompetRendah

Apa yang bisa dilakukan pengguna

  • Default ke slippage ketat; naikkan hanya saat diperlukan.
  • Gunakan wallet / alur swap yang diaktifkan Jito.
  • Verifikasi ekstensi mint sebelum LP.
  • Pantau multisig Squads untuk upgrade tertunda.
  • Diversifikasi di seluruh pool; jangan konsentrasikan semua LP Anda di satu pool peluncuran baru.

Apa yang bisa dilakukan integrator

  • Gunakan TWAP ObservationState untuk penetapan harga derivatif.
  • Validasi batasan akun saat mengomposisi melalui CPI.
  • Filter pool menurut bidang tags (lewati scam, honeypot, transfer-hook yang tidak diverifikasi).
  • Tetapkan batas slippage yang masuk akal; jangan terima slippage 0 dari input pengguna.
  • Gunakan simulateTransaction dengan hati-hati — dokumentasikan ini adalah perkiraan.

Petunjuk

Sumber: