Pagamento básico

A Solana permite transferências instantâneas e globais de tokens com taxas inferiores a $0,001. Seja você construindo remessas internacionais, desembolsos de folha de pagamento ou operações de tesouraria, um pagamento básico de stablecoin é liquidado em menos de um segundo e custa uma fração de centavo.

Como funciona

Um pagamento move stablecoins da token account do remetente para a token account do destinatário. Se o destinatário estiver recebendo este token pela primeira vez, sua token account pode ser criada como parte da mesma transação.

Consulte Como funcionam os pagamentos na Solana para conceitos fundamentais de pagamento.

O plugin token2022Program() de @solana-program/token-2022 estende o seu cliente @solana/kit com um helper client.token2022. O seu método transferToATA trata da derivação de ATA e da construção de transações automaticamente, sendo ideal para transferências de pagamento únicas.

As etapas abaixo mostram o fluxo principal. Consulte a Demonstração para código executável completo.

Criar o auxiliar de token

Adicione o plugin token2022Program() ao seu cliente com .use(token2022Program()). Isto expõe client.token2022, cujos instructions fornecem métodos para operações comuns de tokens.

Use token2022Program() para mints pertencentes ao programa Token-2022, ou tokenProgram() de @solana-program/token para mints pertencentes ao Token Program original.

Enviar o pagamento

Use transferToATA() para transferir tokens entre carteiras. O método trata de:

  • Resolução de ATA: Deriva automaticamente Associated Token Accounts (ATAs) para o remetente e o destinatário. Se a ATA do destinatário não existir, a instrução para criar a conta é adicionada automaticamente à mesma transação.
  • Valores Verificados: Passe amount em unidades base juntamente com os decimals do mint. A transferência é verificada em relação às casas decimais do mint on-chain (ex.: 250000 unidades base -> 0,25 tokens, se o mint tiver 6 casas decimais)
  • Construção de Transações: sendTransaction() constrói, assina e envia a transação, resolvendo para um resultado cujo context.signature contém a assinatura da transação

Verificar saldos

Após a conclusão da transferência, leia os saldos de tokens a partir do RPC. Derive a ATA de cada carteira com findAssociatedTokenPda(), e depois chame getTokenAccountBalance() para obter o saldo dessa conta.

Criar o auxiliar de token

Adicione o plugin token2022Program() ao seu cliente com .use(token2022Program()). Isto expõe client.token2022, cujos instructions fornecem métodos para operações comuns de tokens.

Use token2022Program() para mints pertencentes ao programa Token-2022, ou tokenProgram() de @solana-program/token para mints pertencentes ao Token Program original.

Enviar o pagamento

Use transferToATA() para transferir tokens entre carteiras. O método trata de:

  • Resolução de ATA: Deriva automaticamente Associated Token Accounts (ATAs) para o remetente e o destinatário. Se a ATA do destinatário não existir, a instrução para criar a conta é adicionada automaticamente à mesma transação.
  • Valores Verificados: Passe amount em unidades base juntamente com os decimals do mint. A transferência é verificada em relação às casas decimais do mint on-chain (ex.: 250000 unidades base -> 0,25 tokens, se o mint tiver 6 casas decimais)
  • Construção de Transações: sendTransaction() constrói, assina e envia a transação, resolvendo para um resultado cujo context.signature contém a assinatura da transação

Verificar saldos

Após a conclusão da transferência, leia os saldos de tokens a partir do RPC. Derive a ATA de cada carteira com findAssociatedTokenPda(), e depois chame getTokenAccountBalance() para obter o saldo dessa conta.

Basic Payment
const client = createClient()
.use(signer(sender))
.use(solanaLocalRpc())
.use(token2022Program());

Demonstração

Demo
// Generate signers for sender and recipient
const sender = await generateKeyPairSigner();
const recipient = await generateKeyPairSigner();
console.log("Sender Address:", sender.address);
console.log("Recipient Address:", recipient.address);
// Demo Setup: Create client, mint account, and fund the sender with initial tokens
const { client, mint } = await demoSetup(sender);
console.log("\nMint Address:", mint.address);
// =============================================================================
// Basic Token Payment Demo
// =============================================================================
// Transfer tokens from sender to recipient. The source and destination ATAs are
// derived automatically, and the recipient's ATA is created if it does not exist.
const result = await client.token2022.instructions
.transferToATA({
mint: mint.address,
authority: sender,
recipient: recipient.address,
amount: 250_000n, // 0.25 tokens (base units for a mint with 6 decimals)
decimals: 6
})
.sendTransaction();
console.log("\n=== Token Payment Complete ===");
console.log("Transaction Signature:", result.context.signature);
// Derive the sender and recipient ATAs to read their balances
const [senderAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: sender.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
const [recipientAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: recipient.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
// Fetch final token account balances via RPC
const senderBalance = await client.rpc.getTokenAccountBalance(senderAta).send();
const recipientBalance = await client.rpc
.getTokenAccountBalance(recipientAta)
.send();
console.log(
"\nSender Token Account Balance:",
senderBalance.value.uiAmountString
);
console.log(
"Recipient Token Account Balance:",
recipientBalance.value.uiAmountString
);
// =============================================================================
// Demo Setup Helper Function
// =============================================================================
Console
Click to execute the code.

Is this page helpful?

Índice

Editar Página
© 2026 Fundação Solana. Todos os direitos reservados.