O Que Faz o Desempacotamento de Lamports?
UnwrapLamports move SOL para fora de um token account nativo (SOL
empacotado) para uma conta de destino como lamports. Você pode desempacotar o
saldo completo ou um valor específico, e o token account permanece aberto.
Isso é mais flexível do que fechar um token account de SOL empacotado: um desempacotamento parcial permite retirar algum SOL enquanto mantém a conta financiada para uso posterior.
Referência de Código-Fonte
| Item | Descrição | Fonte |
|---|---|---|
UnwrapLamports | A instrução (discriminador 45). | Fonte |
process_unwrap_lamports | Lógica do processador. | Fonte |
Contas
| Conta | Descrição |
|---|---|
source | Gravável. O token account nativo (SOL empacotado) a ser desempacotado. |
destination | Gravável. Recebe os lamports desempacotados. |
authority | O proprietário da conta ou um delegado (ou signatários multisig). |
A origem deve ser um token account nativo; outros token accounts retornam
NonNativeNotSupported. Um delegado pode desempacotar até o valor delegado
a ele.
Como Desempacotar Lamports
Omita amount para desempacotar o saldo completo, ou defina-o para
desempacotar um número específico de lamports. O exemplo usa um cliente
@solana/kit configurado —
consulte Transferir Tokens para
configuração do cliente.
import { getUnwrapLamportsInstruction } from "@solana-program/token";// source: the native (wrapped SOL) token account to unwrap.// destination: address that receives the unwrapped lamports.// authority: a TransactionSigner (the account owner or a delegate).// Unwrap a specific number of lamports.const unwrapSome = getUnwrapLamportsInstruction({source,destination,authority,amount: 500_000_000n});// Or omit `amount` to unwrap the entire balance.const unwrapAll = getUnwrapLamportsInstruction({source,destination,authority});// Send whichever instruction you need.await client.sendTransaction([unwrapSome]);
Para uma autoridade multisig, passe os co-signatários com multiSigners.
Is this page helpful?