Tarik Lamport Berlebih

Apa yang Dilakukan Withdraw Excess Lamports?

WithdrawExcessLamports memindahkan SOL yang dipegang oleh akun Token Program di atas minimum bebas-sewanya ke akun tujuan. Saldo token dan pasokan mint tidak terpengaruh — hanya lamport surplus yang dipindahkan.

Ini memulihkan SOL yang sebelumnya terjebak: lamport yang dikirim ke token account, mint, atau multisig (semuanya dimiliki oleh Token Program) sebelumnya tidak dapat dipindahkan.

Referensi Sumber

ItemDeskripsiSumber
WithdrawExcessLamportsInstruksi (diskriminator 38).Sumber
process_withdraw_excess_lamportsLogika prosesor dan pemeriksaan otoritas.Sumber

Akun

AkunDeskripsi
sourceDapat ditulis. Token account, mint, atau multisig yang akan ditarik.
destinationDapat ditulis. Menerima lamport berlebih.
authorityMenandatangani berdasarkan tipe akun sumber (lihat di bawah).

Siapa yang Dapat Menandatangani

Penanda tangan yang diperlukan bergantung pada tipe akun source:

Akun sumberPenanda tangan
Token accountPemilik token account (atau penanda tangan multisig-nya).
Mint dengan mint authorityMint authority.
Mint tanpa mint authoritymint account itu sendiri harus menandatangani (lihat catatan di bawah).
MultisigPenanda tangan M-dari-N yang dikonfigurasi.

Kasus "mint tanpa mint authority" jarang terjadi. Bila berlaku, akun mint bertindak sebagai penanda tangan: mint yang dimiliki program (off-curve) menandatangani melalui CPI dari program pemiliknya, dan mint berupa keypair (on-curve) menandatangani dengan kuncinya.

Token account SOL asli (wrapped SOL) tidak didukung dan mengembalikan NativeNotSupported. Penarikan tidak boleh menurunkan saldo akun sumber di bawah minimum bebas sewa.

Cara Menarik Lamport Berlebih

Contoh ini menggunakan klien @solana/kit yang telah dikonfigurasi — lihat Transfer Token untuk pengaturan klien.

Withdraw excess lamports (Kit)
import { getWithdrawExcessLamportsInstruction } from "@solana-program/token";
// source/destination: addresses of the account to drain and the lamport recipient.
// authority: a TransactionSigner that signs per the source account type.
const instruction = getWithdrawExcessLamportsInstruction({
source,
destination,
authority
});
await client.sendTransaction([instruction]);

Untuk otoritas multisig, berikan co-signer dengan multiSigners.

Is this page helpful?

Daftar Isi

Edit Halaman
© 2026 Yayasan Solana. Semua hak dilindungi.