Semua artikel
Panduan

Apa Itu Flash Loan Solana dan Bagaimana Cara Kerjanya?

Flash loan Solana meminjamkan token tanpa kolateral dan dilunasi di transaksi yang sama. Cara pemberi pinjaman mengeceknya, biayanya, dan batasnya.

8 menit baca J Tools Editorial
Panel “Cara kerjanya” Flash Volume menunjukkan flash loan Solana: pinjam 100 SOL, beli, jual, lalu lunasi dalam satu transaksi, sementara dompet tetap 2,41 SOL

Flash loan Solana meminjamkan token tanpa kolateral dan tanpa pengecekan kredit, dengan satu syarat: uangnya kembali sebelum transaksi selesai. Kalau pelunasan tidak ada atau gagal, jaringan menolak seluruh transaksi dan pinjaman itu tidak pernah ada. Tidak ada utang yang tersisa, dan itu sebabnya protokol pinjaman berani menawarkannya ke dompet mana pun.

Kedengarannya seperti celah. Sebenarnya ini dua aturan biasa yang bekerja bersama: satu transaksi berlaku semua atau tidak sama sekali, dan sebuah program bisa membaca instruksi lain di transaksi tempat ia berjalan. Semua yang dilakukan flash loan Solana, termasuk cara ia gagal, berasal dari dua fakta itu.

Cara kerja flash loan Solana di dalam satu transaksi

Solana menjalankan transaksi sebagai daftar instruksi yang berurutan. Dokumentasi Solana tentang transaksi menyebut aturannya dengan lugas: kalau satu instruksi saja gagal, seluruh transaksi gagal dan setiap perubahan state dibatalkan. Flash loan adalah daftar yang disusun di sekitar aturan itu.

  1. Pinjam. Program pinjaman memindahkan token dari vault-nya ke akun token milikmu.
  2. Pakai. Instruksimu sendiri membelanjakannya: swap, likuidasi, atau deposit di tempat lain.
  3. Lunasi. Program pinjaman menarik kembali jumlah yang sama, ditambah biayanya kalau ia memungut biaya.

Kalau langkah ketiga tidak bisa berjalan, misalnya karena swap menghasilkan lebih sedikit dari rencana, langkah pertama ikut dibatalkan bersama semua yang lain dan vault kembali seperti semula. Alasan yang sama membuat kolateral tidak diperlukan: pinjaman biasa butuh kolateral karena ada jeda waktu antara meminjam dan melunasi, sedangkan di sini jeda itu tidak ada.

Flash Volume saat transaksi dibuka: baru langkah pinjam 100 SOL yang tercentang, harga J Token masih datar, dan dompet berisi 2,41 SOL

Bagaimana pemberi pinjaman tahu pelunasan akan datang

Instruksi pinjam berjalan lebih dulu, jadi ia harus memutuskan sebelum pelunasan terjadi. Caranya dengan membaca ke depan: Solana membuka setiap instruksi tingkat atas dari transaksi yang sedang berjalan lewat akun khusus bernama sysvar instruksi, dan panduan Solana tentang introspeksi instruksi menyebut persis kegunaan ini: memastikan instruksi tertentu ada di transaksi yang sama.

Kamino Lend memublikasikan kode sumber programnya, dan pengecekannya terlihat di sana. Instruksi flash borrow-nya menelusuri setiap instruksi sesudahnya dan menolak meminjamkan kecuali menemukan tepat satu pelunasan yang cocok:

  • pelunasan menyebut jumlah yang sama;
  • daftar akunnya sama, dengan urutan yang sama;
  • ia menunjuk balik ke posisi instruksi pinjam;
  • tidak ada flash borrow kedua sesudahnya.

Seperti dua pemberi pinjaman lain di tabel bawah, Kamino menolak pinjaman yang dipanggil dari dalam program lain, karena sysvar hanya mencantumkan instruksi tingkat atas. marginfi membingkai pinjamannya dengan cara lain: instruksi pembuka memastikan ada instruksi penutup di bagian belakang transaksi, dan instruksi penutup itu menjalankan pengecekan kesehatan akun.

Detail itu penting. Pelunasan Kamino membawa posisi instruksi pinjam sebagai angka, jadi dompet yang menyisipkan instruksi pengaman sendiri sebelum instruksi pinjam membuat pelunasan menunjuk ke instruksi yang salah, dan pinjaman ditolak. Pelunasan Jupiter Lend tidak membawa posisi, dan itu salah satu alasan alat Flash Volume meminjam di sana.

Pemberi pinjaman Solana mana yang menawarkan flash loan

Tiga protokol pinjaman mendokumentasikan flash loan di Solana dalam dokumentasi developer mereka sendiri.

Pemberi pinjaman Biaya pemberi pinjaman
Jupiter Lend Tidak ada menurut dokumentasinya, meski admin memegang pengaturan biaya
Kamino Lend Diatur per reserve; satu reserve bisa mematikan flash loan
marginfi (dokumentasinya kini memakai nama Project 0) Tidak ada menurut dokumentasinya

Untuk apa flash loan dipakai

Setiap pekerjaan di sini butuh jumlah besar untuk beberapa instruksi saja, lalu tidak butuh apa-apa lagi.

  • Arbitrase. Beli di tempat token murah, jual di tempat yang mahal, lunasi. Kalau selisihnya sudah tertutup, hasil jual tidak menutup pelunasan dan transaksi dibatalkan.
  • Likuidasi. Pinjaman melunasi utang peminjam yang posisinya tidak sehat; kolateral yang diterima dengan diskon ditukar balik dan dipakai melunasi pinjaman.
  • Tukar kolateral dan refinancing. Lunasi pinjaman dengan token pinjaman, tarik kolateral, tukar atau pindahkan ke pemberi pinjaman lain, pinjam lagi, lalu lunasi.
  • Likuidasi mandiri. Membayar utang dengan kolateral sendiri menghemat premi yang akan diambil likuidator. Alur repay with collateral di Kamino melakukan ini.
  • Looping. Pinjam, tukar ke aset kolateral, setor, pinjam lagi dengan aset itu sebagai kolateral, lalu lunasi. Multiply dari Kamino berjalan dengan cara ini.
  • Volume trading. Beli token lalu jual kembali di pool yang sama; dompet hanya menanggung ongkos pulang-perginya.

Kasus terakhir itulah yang dikerjakan alat Flash Volume: ia meminjam SOL dari Jupiter Lend, membeli tokenmu di satu pool PumpSwap, Raydium, Orca, atau Meteora, menjualnya kembali, melunasi pinjaman, dan membayar biayanya dengan satu tanda tangan, dengan harga penuh transaksi ditampilkan sebelum dompetmu terbuka. Siapa pun yang membaca transaksinya melihat pinjaman, pembelian, dan penjualan dari satu dompet. Kalau ingin menyimpan tokennya, pakai swap token lewat rute Jupiter saja.

Berapa biaya flash loan Solana

Pokok pinjaman bukan biaya; ia kembali di dalam transaksi yang sama. Yang kamu bayar adalah semua hal di sekitarnya.

Biaya pemberi pinjaman. Jupiter Lend dan marginfi mendokumentasikan flash loan tanpa biaya, sedangkan Kamino mengatur biaya per reserve. Admin Jupiter Lend tetap bisa mengubah pengaturan biayanya, jadi Flash Volume membacanya sebelum setiap pinjaman dan menolak menyusun transaksi kecuali nilainya nol.

Biaya swap dan price impact. Setiap swap di dalam pinjaman membayar biaya pool-nya, dan jumlah besar di pool yang tipis menggeser harga melawanmu dua kali, saat masuk dan saat keluar, seperti dijelaskan cara kedalaman pool likuiditas bekerja. Pasang output minimum di setiap swap, karena pelunasan yang kurang akan menggagalkan semuanya; cara memilih nilai slippage membahas timbal baliknya.

Biaya jaringan. Base fee-nya 5.000 lamport per tanda tangan, ditambah priority fee yang dihargai per compute unit yang kamu minta, dan flash loan meminta compute jauh lebih banyak daripada transfer biasa. Cara menentukan besaran priority fee menjelaskan cara mengukurnya.

Flash loan yang gagal itu murah, bukan gratis: transaksi yang sudah masuk blok lalu dibatalkan tetap membayar biaya jaringannya, seperti disebut dokumentasi Solana dan panduan flash loan Jupiter. Transaksi yang gagal di simulasi dan tidak pernah dikirim tidak memakan biaya.

Sebelum apa pun terjadi, Flash Volume menampilkan dompet berisi 2,41 SOL, harga J Token yang datar, dan tombol beli lalu jual 100 SOL

Simulasikan sebelum menandatangani. Flash loan yang akan gagal muncul sebagai simulasi yang gagal, dan saat itu kamu belum mengeluarkan biaya sepeser pun.

Batas: ukuran transaksi, compute, dan isi vault pemberi pinjaman

Flash loan tidak bisa tumbuh melebihi satu transaksi: transaksi v0 yang dipakai pinjaman ini paling banyak membawa 1.232 byte dan 1.400.000 compute unit. Instruksi pinjam, pelunasan, swap, dan akun-akunnya harus muat semua, itulah sebabnya para pembuatnya mengandalkan address lookup table.

Flash loan juga tidak bisa melintasi dua transaksi. Sysvar hanya mencantumkan transaksi yang sedang berjalan, jadi pelunasan di transaksi kedua tidak terlihat oleh instruksi pinjam, bahkan di dalam satu Jito bundle. Apa yang dijamin Jito bundle adalah soal lain.

Lalu ada soal isi vault pemberi pinjaman. Pinjaman diambil dari vault itu, sebagian pemberi pinjaman menambah batas per pinjaman, dan peminjaman bisa dijeda, jadi ukuran maksimum adalah hasil bacaan saat itu, bukan angka tetap. Kamino dan marginfi juga hanya mengizinkan satu flash loan per transaksi.

Risiko: peringatan dompet dan serangan oracle

Bersiaplah melihat peringatan dompet. Phantom memberi peringatan saat tidak bisa menyimulasikan transaksi dengan bersih, dan di antara penyebabnya ia menyebut ukuran yang mendekati batas serta transaksi yang gagal. Flash loan itu besar dan memanggil pemberi pinjaman sekaligus DEX. Kalau harga sudah bergerak terlalu jauh, simulasinya gagal, dan itu cara dompet memberitahumu bahwa pinjaman tidak akan terlunasi.

Setiap flash loan juga publik. Siapa pun bisa membuka transaksinya di explorer, dan analisis dompet massal Wallet Scope menampilkan transaksi dan PnL dompet-dompet di baliknya.

Sejarah kelamnya milik protokol lain. Serangan flash loan membengkokkan harga di dalam satu transaksi: ukuran pinjaman mendorong pool yang tipis, dan protokol yang membaca pool itu sebagai sumber harga bertindak berdasarkan angka yang sudah terdistorsi. Dokumentasi Kamino menyebut harga rata-rata tertimbang waktu dan pita harga sebagai pertahanannya. Output minimum milikmu sendiri juga membatasi serangan sandwich di sekitar swap besar.

Flash loan vs pinjaman biasa vs margin

Flash loan Pinjaman berkolateral Margin
Kolateral Tidak ada Nilainya di atas pinjaman Depositmu ditambah posisinya
Berlaku Satu transaksi Sampai kamu melunasi Selama akun tetap sehat
Jika tidak dibayar Transaksi dibatalkan Kolateral dilikuidasi Posisi dilikuidasi
Yang kamu bayar Biaya pemberi pinjaman bila ada, biaya swap dan jaringan Bunga selama masih terbuka Bunga ditambah biaya trading

Pinjaman berkolateral dan margin membawa risiko seiring waktu, karena harga bergerak selama posisinya terbuka. Flash loan Solana tidak punya "selama": yang bisa hilang adalah biaya transaksi yang dibatalkan, ditambah kerugian trading apa pun yang ditanggung saldomu sendiri.

Artikel ini menjelaskan cara kerja flash loan dan bukan nasihat keuangan, investasi, hukum, atau pajak. Transaksi di dalam pinjaman bisa merugi, dan pemberi pinjaman bisa mengubah ketentuan atau menjeda peminjaman.

Pertanyaan umum seputar flash loan Solana

Apakah flash loan Solana gratis?

Pinjamannya sendiri bisa gratis: Jupiter Lend dan marginfi mendokumentasikan flash loan tanpa biaya, sedangkan Kamino mengatur biaya per reserve. Kamu tetap membayar biaya swap, biaya jaringan, dan biaya alat yang kamu pakai, kalau ada.

Apakah perlu kolateral atau pengecekan kredit?

Tidak. Pelunasannya cukup berada di transaksi yang sama dan berhasil. Dompetmu tetap butuh SOL untuk biaya jaringan dan untuk menutup kekurangan yang ditinggalkan transaksinya.

Apa yang terjadi kalau pinjaman tidak bisa dilunasi?

Seluruh transaksi ditolak dan setiap perubahan di dalamnya dibatalkan, termasuk instruksi pinjam. Transaksi yang sudah masuk blok tetap membayar biaya jaringan; transaksi yang gagal di simulasi dan tidak pernah dikirim tidak membayar apa pun.

Bisakah flash loan melintasi dua transaksi atau satu Jito bundle?

Tidak. Pemberi pinjaman menemukan pelunasan lewat sysvar instruksi, yang hanya mencantumkan transaksi yang sedang berjalan, jadi pelunasan di tempat lain tidak dihitung, bahkan di bundle yang sama.

Kenapa flash loan sering muncul di laporan eksploit?

Karena flash loan membuat siapa pun bisa menguasai jumlah besar selama satu transaksi. Eksploitnya menimpa protokol yang memercayai harga spot dari pool tipis yang bisa digeser oleh ukuran pinjaman itu. Harga rata-rata berbasis waktu membuat serangan seperti itu jauh lebih sulit.

J
Penulis
J Tools Editorial

Artikel dari tim J Tools.

Lihat semua artikel J Tools Editorial →

Artikel terkait