Skip to main content
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Rent adalah deposit yang dapat dikembalikan, bukan biaya. SIMD-0437 menurunkan deposit yang harus dipegang setiap akun, dalam lima langkah yang gated secara independen. Akun yang dibuat sebelum suatu langkah mempertahankan saldo yang mereka didanai, jadi setiap langkah meninggalkan mereka dengan pendanaan berlebih. Program SPL Token dan Token-2022 dapat mengembalikan perbedaan itu melalui WithdrawExcessLamports tanpa menutup akun atau menyentuh saldo token-nya. Tidak ada yang kedaluwarsa — kelebihan itu tetap berada di akun Anda sendiri sampai Anda memilih untuk memindahkannya.
Baca Account model terlebih dahulu jika Anda baru mengenal cara akun Solana didanai.

Apa itu rent sebenarnya

Setiap akun di Solana menyimpan deposit SOL yang diukur berdasarkan ruang yang ditempatinya. Itu tidak dihabiskan — itu dikembalikan sepenuhnya ketika akun ditutup. Rumusnya adalah:
ACCOUNT_STORAGE_OVERHEAD adalah 128 byte tetap yang setiap akun bayar terlepas dari muatannya. lamports_per_byte adalah konstanta jaringan-lebar yang SIMD-0437 ubah. Akun SPL token standar 165-byte oleh karena itu selalu berharga (128 + 165) × 6,960 = 2,039,280 lamports — ~0.00203928 SOL yang Anda lihat dipotong setiap kali dompet membuka akun token terkait.

Apa yang SIMD-0437 ubah

SIMD-0437 mengurangi lamports_per_byte dari 6,960 menjadi 696 — pengurangan 90% — diluncurkan melalui lima feature gate terpisah sehingga validator dapat menyerap efek pertumbuhan state satu langkah pada satu waktu. Langkah 1 diaktifkan di mainnet pada 3 September 2026. Langkah 2 mencapai testnet hari yang sama dan diharapkan di mainnet pertengahan September 2026; langkah 3–5 ditahan untuk Agave 4.4, diharapkan sekitar November 2026. Perlakukan jadwal sebagai dapat berubah — Foundation telah mengatakan akan menghentikan peluncuran jika pertumbuhan state berperilaku buruk — dan baca nilai langsung dari cluster daripada hardcoding-nya.
SIMD-0437 bergantung pada SIMD-0194, yang menghapuskan ambang rent exemption “untuk menghindari matematika floating point yang tidak perlu saat menetapkan parameter rent pada aktivasi fitur”. Dalam praktiknya Rent sysvar sekarang membawa lamports_per_byte_year = 6,333 dengan exemption_threshold = 1.0, daripada pembagian 3,480 × 2 lama yang menghasilkan 6,960. Jangan kalikan kedua field itu sendiri — panggil getMinimumBalanceForRentExemption dan biarkan cluster menjawab.

Mengapa akun yang ada menyimpan terlalu banyak

Menurunkan konstanta mengubah apa yang akun butuhkan. Itu tidak mengubah apa yang akun miliki. Akun yang didanai pada 6,960 lamports per byte mempertahankan saldo itu setelah langkah 1 diaktifkan, jadi itu didanai berlebih oleh:
Untuk akun SPL token 165-byte setelah langkah 1 itu adalah 293 × (6,960 − 6,333) = 183,711 lamports, atau ~0.000184 SOL per akun. Akun Token-2022 yang membawa ekstensi lebih besar, jadi itu menyimpan lebih banyak secara proporsional — akun 182-byte didanai berlebih oleh 310 × 627 = 194,370 lamports. Secara individual itu adalah debu. Dompet yang telah berinteraksi dengan beberapa ratus token selama bertahun-tahun menyimpan kelipatan bermakna darinya, dan pada langkah 5 setiap akun 165-byte memiliki 1,835,352 lamports (~0.00184 SOL) yang duduk di atas minimumnya.

Akun mana yang dapat mengembalikannya

Lamports berlebih dalam akun yang dimiliki program hanya dapat dipindahkan oleh program itu. Apakah Anda dapat mengklaim kembali rent tanpa menutup akun oleh karena itu sepenuhnya bergantung pada program mana yang memilikinya.

SPL Token dan Token-2022

Keduanya mengekspos WithdrawExcessLamports. Akun tetap terbuka, mempertahankan saldo token-nya, dan hanya turun ke minimum saat ini.

Semuanya yang lain

Tidak ada instruksi setara. Rent hanya dirilis ketika akun ditutup — operasi destruktif dengan prasyarat-nya sendiri, bukan sweep rent.
Secara konkret, untuk tipe akun yang dipegang pengguna Raydium: Akun SOL terbungkus adalah satu pengecualian program token: saldo lamport mereka adalah saldo token mereka, jadi kedua program menolaknya dengan TokenError::NativeNotSupported. Kedua program malah mengekspos UnwrapLamports (discriminant 45) untuk kasus itu — itu ada di spl-token-interface bersama WithdrawExcessLamports, jadi program legacy memilikinya juga, bukan hanya Token-2022 — dan @solana/spl-token mengirimkan createUnwrapLamportsInstruction untuk itu sejak 0.4.15. Lewati akun native dalam sweep rent biasa dan tangani mereka dengan sengaja; pola untuk melakukannya dengan aman adalah yang digunakan program Raydium sendiri, di bawah.

Instruksi WithdrawExcessLamports

Discriminant 38 dalam enum instruksi kedua program token. Dari spl-token-interface:
Tiga properti membuatnya aman untuk menjalankan terhadap setiap akun dalam dompet:
  • Itu tidak mengambil jumlah. Program menghitung source.lamports − rent.minimum_balance(source.data_len()) sendiri, jadi itu tidak pernah dapat membawa akun di bawah minimum saat ini, dan itu tetap benar saat langkah-langkah kemudian diaktifkan.
  • Itu tidak menutup apa pun. Akun mempertahankan data, pemilik, dan saldo token-nya.
  • Itu idempoten. Menjalankannya terhadap akun yang sudah di minimum memindahkan nol lamports dan berhasil.
Akun token yang dibekukan masih memenuhi syarat: pembekuan membatasi pergerakan token, bukan lamports.

Membangun instruksi

@solana/spl-token tidak mengekspor builder untuk itu. Sejak 0.4.15 entri enum masih dikomentari — dan perhatikan upstream mengeja identifier WithdrawalExcessLamports, dengan “al” tambahan, jadi grep untuk itu:
Enkode langsung. Muatan adalah byte discriminant tunggal:
Lewati programId setiap akun sendiri. Instruksi SPL Token dan Token-2022 dapat berbagi transaksi, tetapi masing-masing harus ditujukan ke program yang memiliki akun sumbernya. Diukur di mainnet, instruksi biaya 270 compute unit pada program SPL Token dan 1,414 pada Token-2022 — dapat diabaikan kedua-duanya. Batasan nyata adalah ukuran transaksi, bukan compute.

Menemukan akun yang dapat diklaim kembali

Jangan turunkan kelebihan dari tingkat hardcoded. Tanyakan cluster apa yang setiap akun butuhkan sekarang, jadi kode yang sama terus bekerja melalui semua lima langkah:
getMinimumBalanceForRentExemption(0) adalah side-channel yang berguna: itu mengembalikan tepat 128 × lamports_per_byte, jadi membagi dengan 128 memberi tahu Anda langkah peluncuran mana yang cluster aktifkan tanpa mengurai Rent sysvar.

Batching: berapa banyak yang muat dalam satu transaksi

Setiap instruksi WithdrawExcessLamports berkontribusi satu kunci akun writable unik — 32 byte dalam pesan terkompilasi — ditambah sekitar 7 byte pengkodean instruksi. Destination, authority dan fee payer semuanya dompet yang sama, jadi mereka biaya satu kunci di antara mereka. Terhadap batas transaksi 1,232-byte, kira-kira 25 instruksi muat setelah instruksi compute-budget dan blockhash dihitung. Dua puluh per transaksi adalah angka kerja yang aman, dan itu adalah apa yang implementasi Raydium sendiri gunakan. Dompet dengan 116 akun yang dapat diklaim kembali oleh karena itu sweep dalam enam transaksi, pada satu biaya dasar 5,000-lamport masing-masing. Catat ekonominya: biaya dikenakan per transaksi, bukan per akun. Mengklaim lebih sedikit akun tidak biaya lebih sedikit, itulah mengapa sweep parsial jarang layak untuk round trip tambahan.

Mengklaim melalui Raydium

Halaman raydium.io/reclaim-rent memindai akun SPL Token dan Token-2022 dompet yang terhubung, menunjukkan total yang dibagi berdasarkan program, dan sweep semuanya dalam transaksi batch. Pemindaian adalah read-only — tidak ada signature sampai Anda menekan Reclaim all rent. Halaman dengan sengaja mencakup akun token saja. Tipe akun yang dapat melepaskan rent hanya dengan menutup dikecualikan daripada terdaftar sebagai tidak tersedia, karena menutup akun adalah tindakan berbeda yang destruktif.

Mengklaim dari demo SDK

Banner versi. Demo ini menargetkan @raydium-io/raydium-sdk-v2@0.2.64-alpha terhadap Solana mainnet-beta, diverifikasi 2026-09; repo raydium-sdk-V2-demo itu sendiri saat ini memasang 0.2.62-alpha, dan keduanya dapat dipertukarkan di sini. WithdrawExcessLamports dikodekan dengan tangan dan independen dari versi SDK — SDK digunakan hanya untuk pembuatan transaksi dan batching.
Dua skrip di raydium-sdk-V2-demo/src/rent:
reclaimRent.ts batch pada 20 akun per transaksi dan menandatangani semua batch dalam satu pass:
Simulasikan sebelum Anda mengirim. simulateTransaction dengan accounts.addresses mengembalikan saldo lamport pasca-eksekusi, yang merupakan cara termurah untuk mengkonfirmasi aritmatika cocok dengan apa yang cluster benar-benar lakukan.

Apa yang program Raydium sweep di sisi mereka sendiri

Dompet Anda bukan satu-satunya tempat pengurangan membebaskan lamports. Setiap pool menyimpan rent juga — vault, LP mint, dan akun state yang dimiliki program yang semuanya didanai pada tingkat lama. Rent itu milik protokol, bukan LP: itu dibayar oleh siapa pun yang membuat akun, itu bukan bagian dari cadangan pool mana pun, dan itu tidak pernah memasuki kurva. Tiga program mendapatkan instruksi admin pada 2026-09-09 untuk mengembalikannya, dan CLMM diikuti pada 2026-09-30: Alamat ada di reference/program-addresses. Stable AMM tidak memiliki setara. Tidak ada yang di sini mempengaruhi LP atau trader. Instruksi ini memindahkan lamports dan hanya lamports. Saldo token, data akun, pemilik, status pool, pasokan LP, penghitung biaya dan kurva semuanya tidak tersentuh, dan tidak ada satupun yang dapat menutup akun. Kutipan pool dari swap identik sebelum dan sesudah sweep. Tidak ada tindakan pengguna, tidak ada opt-in, dan tidak ada deadline.

Tiga bentuk akun yang setiap program tangani

Keempat mengikuti dispatch yang sama, pada pemilik akun sumber:
  • Akun token atau mint yang dimiliki PDA otoritas program: program CPI program token WithdrawExcessLamports (discriminant 38), menandatangani sebagai PDA itu. Di CLMM PDA itu adalah PoolState itu sendiri, jadi satu panggilan mencakup vault satu pool.
  • Vault SOL terbungkus — WithdrawExcessLamports menolak akun native, jadi program SyncNative terlebih dahulu (yang melipat kelebihan yang disumbangkan ke amount terbungkus), mengukur tepat berapa banyak jumlah terbungkus tumbuh, UnwrapLamports untuk delta itu, dan kemudian menegaskan saldo terbungkus kembali ke nilai pra-sync-nya. Jika pemeriksaan itu gagal seluruh instruksi kembali dengan LamportsCalculateError. Ini adalah mengapa vault pool sisi SOL mempertahankan likuiditas penuhnya melalui sweep.
  • Akun state yang dimiliki program — AmmInfo, PoolState, AmmConfig, ObservationState, PlatformConfig, CLMM TickArrayState, dan sebagainya. Program dapat mendebit akun-nya sendiri secara langsung, jadi itu memindahkan saldo turun ke rent.minimum_balance(data_len) tanpa CPI sama sekali.
Akun yang dimiliki apa pun yang lain dilewati diam-diam, jadi melewati akun yang tidak terkait adalah tidak berbahaya daripada fatal. Urutan SOL terbungkus layak disalin jika Anda menyimpan akun native Anda sendiri: itu adalah satu-satunya cara untuk mengambil kelebihan dari akun wSOL tanpa mengubah apa yang akun laporkan sebagai saldo token-nya.
Path ini bergantung pada program token yang digunakan, bukan pada versi crate. Keempat program hand-encode instruksi token — byte 38 tunggal untuk WithdrawExcessLamports, 45 ditambah COption<u64> untuk UnwrapLamports — dan mengirimnya ke program token mana pun yang memiliki akun sumber. Kedua instruksi ada di program SPL Token dan Token-2022 mainnet saat ini. Validator lokal atau test harness yang menjalankan build SPL Token bundel yang lebih lama tidak mengimplementasikannya, dan sweep terhadapnya gagal pada discriminator yang tidak dikenal daripada apa pun di program Raydium. Uji path ini terhadap program token yang dikloning mainnet.

Apa yang masih tidak dapat diklaim di tempat

Anda masih tidak dapat mengklaim rent posisi CLMM di tempat sendiri. Itu kembali ketika posisi ditutup, seperti tabel di atas katakan. CollectExcessLamports CLMM sendiri tidak memeriksa siapa yang mendanai akun, jadi itu dapat mengambil kelebihan dari PersonalPositionState atau LimitOrderState. Akun tetap di minimum rent-nya, dan itu adalah minimum yang close refund. Sama untuk mint dasar LaunchLab: instruksi initialize mencabut MintTokens dalam panggilan yang sama yang mencetak pasokan, jadi tidak ada kunci yang dapat menandatangani WithdrawExcessLamports untuk mint itu dan rent-nya terjebak oleh desain.

Haruskah Anda mengklaim sekarang atau menunggu?

Keduanya baik-baik saja, dan perbedaannya kecil kedua-duanya:
  • Kelebihan tidak akan pergi ke mana pun. Itu duduk di akun Anda sendiri. Tidak ada yang kedaluwarsa, tidak ada yang disapu, tidak ada deadline yang berlaku.
  • Menunggu compound. Setiap langkah melepaskan lebih banyak dari akun yang sama, dan satu sweep setelah langkah 5 biaya sama dalam biaya seperti satu sweep hari ini.
  • Mengklaim sekarang tidak mengorbankan langkah-langkah kemudian. Akun yang Anda sweep hari ini hanya di minimum saat ini; langkah berikutnya membuatnya didanai berlebih lagi dan Anda dapat menyapu-nya lagi.
Satu-satunya biaya nyata mengklaim awal adalah biaya dasar, dan satu-satunya biaya nyata menunggu adalah lamports tetap immobile sedikit lebih lama.

Bacaan lebih lanjut

SIMD-0437

Proposal itu sendiri — lima feature gate dan alasan untuk melangkah pengurangan.

Reduced rent

Halaman peluncuran Solana: langkah saat ini, jadwal, dan apa yang berubah untuk akun baru.

Rent reduction: a data-backed analysis

Ekonomi, dan risiko pertumbuhan state yang peluncuran bertahap dirancang untuk kelola.

Account model

Bagaimana akun Solana didanai, dimiliki, dan ditutup — latar belakang untuk semuanya di atas.