Skip to main content
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 bersifat adversarial: 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 penerapannya 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 (mendorong harga), membiarkan tx pengguna dieksekusi dengan harga yang lebih buruk, kemudian back-run dengan penjualan berlawanan arah. Bot mendapat keuntungan dari spread.

Eksposur

  • Paling terekspos: pool CPMM TVL rendah dan pool AMM v4 — bahkan perdagangan kecil menggerakkan harga secara bermakna.
  • Kurang terekspos: pool CLMM dalam — perdagangan dalam-tick tidak menggerakkan harga.
  • Tidak terekspos: pemanenan farm, deposit LP (rasio ditegakkan, tidak sensitif harga dengan cara yang sama).

Pertahanan

  • Jito bundles (integration-guides/routing-and-mev) menyembunyikan tx dari mempool publik.
  • Slippage ketat — minimum-out yang lebih dekat dengan yang diharapkan membuat sandwich tidak menguntungkan. Di bawah ~0,3%, sebagian besar sandwich kehilangan uang.
  • Ukuran perdagangan lebih kecil — pisahkan swap $100k menjadi 10× $10k; masing-masing menggerakkan harga lebih sedikit.

Postur Raydium

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

2. Manipulasi harga

Serangan

Pedagang besar secara sementara menggerakkan harga pool (melalui flash loan atau whale yang didanai sendiri), memicu beberapa tindakan hilir yang bergantung pada harga (likuidasi, pinjaman yang diturunkan dari oracle, pembayaran derivatif), kemudian mengembalikan harga ke normal.

Eksposur

  • Operasi Raydium asli: tidak terekspos. Swap spot masuk dan keluar hanya menimbulkan biaya round-trip; pedagang kehilangan uang.
  • Program terintegrasi: terekspos jika mereka membaca harga pool Raydium secara naif.

Pertahanan

  • Gunakan TWAP, bukan harga spot, 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 mengirimkan dukungan TWAP ObservationState; integrator yang mengabaikannya dan menggunakan harga spot adalah tanggung jawab mereka sendiri. Frontend Raydium menggunakan beberapa sumber harga untuk tampilan USD.

3. Serangan donation / inflasi

Serangan

LP pertama di pool baru menyetor jumlah kecil (misalnya, 1 token masing-masing dari 6-decimal mints → 1 unit LP dikeluarkan). 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. Setiap LP berikutnya yang menyetor kurang dari itu dibulatkan menjadi 0 unit LP dan kehilangan deposit mereka.

Eksposur

  • CPMM / AMM v4: berpotensi terekspos pada pool yang baru dibuat dengan likuiditas rendah.
  • CLMM: tidak terekspos (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) terbakar ke null. Serangan donation memerlukan penyerang untuk menyumbangkan >> deposit awal, yang menjadi tidak ekonomis. Selain itu, SDK Raydium memperingatkan dengan keras ketika deposit awal sangat kecil dan memandu pengguna menuju jumlah yang masuk akal.

Postur Raydium

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

4. Penyalahgunaan transfer-hook Token-2022

Serangan

Hook transfer mint dapat ditingkatkan. Penyerang menerapkan hook yang tidak bersalah saat peluncuran mint, mendapatkan listing di Raydium, mengumpulkan LP dari pengguna. Kemudian, meningkatkan hook untuk memblokir semua transfer (secara efektif soft-rug — pengguna tidak dapat menarik). Penyerang membuat pool dapat diperdagangkan hanya dalam satu arah, membeli LP murah, membuka kunci hook, menang.

Eksposur

Pool yang mencakup mint dengan transfer-hook.

Pertahanan

  • Tingkat program: Program Raydium memanggil 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 allow-list hook yang diverifikasi.

Postur Raydium

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

5. Eksploitasi 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 yang buggy dan mengeksploitasi.

Eksposur

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

Contoh historis

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

Pertahanan

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

6. Kompromi admin / kunci

Serangan

Kunci admin (upgrade authority, AmmConfig admin, protocol fee claim) dikompromikan. Penyerang menerapkan upgrade berbahaya yang menguras pool, atau memodifikasi AmmConfigs untuk mengarahkan biaya ke dompet penyerang, atau menguras biaya protokol.

Eksposur

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

Pertahanan

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

Insiden historis

Kunci pool authority AMM v4 dikompromikan pada Desember 2022 (pre-multisig). Perbaikan: memindahkan semua authority 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 dibulatkan terhadap pengguna, mengumpulkan debu.
  • Tick crossing yang mengkredit/mendebit delta fee_growth yang salah.
  • Integer overflow dalam produk sqrtPrice * liquidity.

Eksposur

Matematika bespoke 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 yang ditemukan hingga saat ini. Aritmatika sqrt_price_x64 Q64.64 menggunakan matematika 128-bit yang jenuh dengan unit test yang mencakup tick batas.

8. Kebingungan position-NFT

Serangan

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

Eksposur

Setiap pemegang position NFT.

Pertahanan

  • UI dompet harus mengenali NFT posisi Raydium dan menampilkannya secara berbeda (bukan sebagai NFT generik untuk “dikirim”).
  • Pengguna harus waspada terhadap penandatanganan transaksi yang mentransfer NFT.
  • Posisi baru dibekukan hanya ketika menggunakan jalur open V2 dan freeze authority mint vault yang mendasar cocok dengan daftar restricted-issuer CLMM. Posisi yang cocok itu tidak dapat ditransfer atau memiliki pemilik token-account yang diubah; semua posisi baru lainnya tetap dapat ditransfer.

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 menampilkannya secara khusus sejak 2026. Pembekuan restricted-issuer ditargetkan dan tidak melindungi posisi yang dapat ditransfer biasa.

9. Manipulasi aliran reward farm

Serangan

Pembuat farm mendanai vault reward, menarik staker, kemudian memanggil restartRewards dengan parameter yang membuat komputasi pending-reward kacau, mencuri nilai harvest.

Eksposur

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 pre-change yang secara retroaktif rusak.

Postur Raydium

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

10. Divergensi simulasi-vs-eksekusi

Serangan

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

Eksposur

Dompet menampilkan “Anda akan menerima X” berdasarkan simulasi.

Pertahanan

  • Gunakan simulateTransaction dengan blockhash yang sama dengan submission nyata.
  • Tampilkan output yang diharapkan sebagai ”≈” (kira-kira) bukan tepat.
  • Re-simulasi segera sebelum submission.

Postur Raydium

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

Tabel ringkasan

Apa yang dapat dilakukan pengguna

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

Apa yang dapat dilakukan integrator

  • Gunakan TWAP ObservationState untuk penetapan harga derivatif.
  • Validasi batasan akun saat mengkomposisi melalui CPI.
  • Filter pool berdasarkan 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 bahwa itu adalah perkiraan.

Penunjuk

Sumber: