SOL embrulhado
Wrapped SOL (wSOL) é o SOL nativo mantido dentro de uma conta de token SPL. Os programas DeFi esperam CPIs de token SPL, então o SOL é temporariamente empacotado, usado e depois desembrulhado de volta para lamports nativos.
Busque em todas as páginas da documentação
Wrapped SOL (wSOL) é o SOL nativo mantido dentro de uma conta de token SPL. Os programas DeFi esperam CPIs de token SPL, então o SOL é temporariamente empacotado, usado e depois desembrulhado de volta para lamports nativos.
spl-token wrap 1.5
spl-token unwrap <WSOL_TOKEN_ACCOUNT>
use anchor_lang::system_program;
use anchor_spl::token::{self, sync_native, TokenAccount};
// Deposit lamports into WSOL ATA, then sync_native
Quando fazer isso:
solana balance
spl-token address --token So11111111111111111111111111111111111111112
spl-token wrap 0.5
spl-token balance So11111111111111111111111111111111111111112
spl-token unwrap <WSOL_ATA_ADDRESS>
solana balance
use anchor_lang::prelude::*;
use anchor_spl::token::{self, Token, TokenAccount, SyncNative};
pub const WSOL_MINT: Pubkey = anchor_spl::token::spl_token::native_mint::ID;
#[derive(Accounts)]
pub struct WrapSol<'info> {
#[account(mut)]
pub payer: Signer<'info>,
#[account(
mut,
constraint = wsol_ata.mint == WSOL_MINT @ ErrorCode::NotWsol,
)]
pub wsol_ata: Account<'info, TokenAccount>,
pub token_program: Program<'info, Token>,
pub system_program: Program<'info, System>,
}
pub fn wrap_sol(ctx: Context<WrapSol>, lamports: u64) -> Result<()> {
system_program::transfer(
CpiContext::new(
ctx.accounts.system_program.to_account_info(),
system_program::Transfer {
from: ctx.accounts.payer.to_account_info(),
to: ctx.accounts.wsol_ata.to_account_info(),
},
),
lamports,
)?;
token::sync_native(CpiContext::new(
ctx.accounts.token_program.to_account_info(),
SyncNative {
account: ctx.accounts.wsol_ata.to_account_info(),
},
))?;
Ok(())
}
#[error_code]
pub enum ErrorCode {
NotWsol,
}
import { createSolanaRpc, address } from "@solana/kit";
const WSOL_MINT = address("So11111111111111111111111111111111111111112");
const rpc = createSolanaRpc("https://api.devnet.solana.com");
// Many DEX SDKs auto-wrap SOL; manual flows use syncNative instruction after lamport transfer
O que isso demonstra:
sync_native atualiza o saldo SPLSo11111111111111111111111111111111111111112sync_native reconcilia campo de valor SPL| Formulário | Tipo de conta | Usado por |
|---|---|---|
| SOL nativo | Carteira de propriedade do sistema | Transferências, taxas, apostas |
| wSOL | Conta de token SPL (mesma casa da moeda) | AMMs, cofres de tokens unificados |
// Close WSOL account to unwrap - returns lamports to destination
use anchor_spl::token::CloseAccount;
// Ensure amount is 0 or use withdraw pattern per your SDK
sync_native após o depósito de lamport.native_mint::ID.| Alternativa | Usar quando | Não use quando |
|---|---|---|
| Transferência SOL nativa | Pagamentos simples | AMM exige SPL CPI |
Programa auxiliar deposit_sol | Envoltório de resumos de protocolo | Conjunto de instruções personalizado |
| wSOL ATA persistente | Comerciante frequente | Pagamento único |
SOL depositado em uma conta de token SPL para o mint nativo, fazendo com que ele se comporte como qualquer token SPL em programas.
So11111111111111111111111111111111111111112 em todos os clusters.
Os CPIs do programa SPL Token não podem mover lamports nativos de carteiras sem padrão de encapsulamento.
9, lamports correspondentes por SOL.
Sim. Lamports passam para uma conta de token WSOL (mais taxas).
Atualiza o campo de valor da conta de token para corresponder aos lamports mantidos pela conta.
Sim. Transferência padrão entre contas de token WSOL.
spl-token unwrap ou fechar/drenar WSOL ATA de acordo com os padrões do SDK.
Sim para a maioria das trocas de entrada SOL - o SDK lida com o empacotamento/desempacotamento na transação.
O Native Mint é definido por protocolo - não um lançamento típico.
Sim, em WSOL ATAs de propriedade de PDAs com sementes de signatário adequadas na transferência.
WSOL usa mint nativo clássico no programa Token, não Token-2022.
Versões Stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026