Taxas de transação

Toda transação na Solana requer uma taxa de transação, paga em SOL. As taxas de transação são divididas em duas partes: a taxa base e a taxa de priorização. A taxa base compensa os validadores pelo processamento da transação. A taxa de priorização é uma taxa opcional, para aumentar a chance de que o líder atual processe sua transação.

Taxa base

Cada transação custa 5000 lamports por assinatura incluída. Esta taxa é paga pelo primeiro signatário da transação. Apenas contas pertencentes ao System Program podem pagar taxas de transação. A taxa base é dividida da seguinte forma:

  • 50% queimados: Metade é queimada (retirada da oferta circulante de SOL).
  • 50% distribuídos: Metade é paga ao validador que processou a transação.

Taxa de priorização

Uma taxa de priorização é uma taxa opcional usada para aumentar a chance de que o líder atual (validador) processe sua transação. O validador recebe 100% da taxa de prioridade. As taxas de priorização podem ser definidas ajustando o preço da unidade de computação (computation unit) (CU) e o limite de CU da transação. (Veja o Guia de como usar taxas de prioridade para mais detalhes sobre taxas de priorização.)

A taxa de priorização é calculada da seguinte forma:

Prioritization fee formula
Prioritization fee = CU limit * CU price

A taxa de priorização é usada para determinar a prioridade da sua transação, em relação a outras transações. É calculada usando a seguinte fórmula:

Transaction priority formula
Priority = (Prioritization fee + Base fee) / (1 + CU limit + Signature CUs + Write lock CUs)

Limite de unidade de computação

Por padrão, cada instrução recebe 200.000 CUs e cada transação recebe 1,4 milhão de CUs. Você pode alterar esses padrões incluindo uma instrução SetComputeUnitLimit em sua transação.

Para calcular o limite de CU apropriado para sua transação, recomendamos os seguintes passos:

  1. Estime as unidades de CU necessárias simulando a transação
  2. Adicione uma margem de segurança de 10% a esta estimativa

A taxa de prioridade é determinada pelo limite de unidade de computação solicitado na transação, não pelo número real de unidades de computação utilizadas. Se você definir um limite de unidade de computação muito alto ou usar a quantidade padrão, poderá pagar por unidades de computação não utilizadas.

Preço da unidade de computação

O preço da unidade de computação é uma quantidade opcional de micro-lamports paga por cada CU solicitada. Você pode pensar no preço de CU como uma gorjeta para incentivar o validator a priorizar sua transação. Para definir o preço de CU, inclua uma instrução SetComputeUnitPrice em sua transação.

O preço padrão de CU é 0, o que significa que a taxa de priorização padrão também é 0.

Para ajuda na determinação do melhor preço de CU para sua transação, consulte a recomendação de preço de CU em tempo real listada na tabela abaixo.

Exemplo

Os exemplos abaixo mostram como definir o limite de CU e o preço de CU em uma transação usando os SDKs da Solana.

SDKReferência do Código Fonte
@solana/web3.js (Typescript)ComputeBudgetProgram
solana-sdk (Rust)ComputeBudgetInstruction
const limitInstruction = ComputeBudgetProgram.setComputeUnitLimit({
units: 300_000
});
const priceInstruction = ComputeBudgetProgram.setComputeUnitPrice({
microLamports: 1
});
import {
LAMPORTS_PER_SOL,
SystemProgram,
Transaction,
Keypair,
Connection,
ComputeBudgetProgram,
sendAndConfirmTransaction
} from "@solana/web3.js";
const connection = new Connection("http://localhost:8899", "confirmed");
const sender = Keypair.generate();
const recipient = new Keypair();
const airdropSignature = await connection.requestAirdrop(
sender.publicKey,
LAMPORTS_PER_SOL
);
await connection.confirmTransaction(airdropSignature, "confirmed");
// Create compute budget instructions
const limitInstruction = ComputeBudgetProgram.setComputeUnitLimit({
units: 300_000
});
const priceInstruction = ComputeBudgetProgram.setComputeUnitPrice({
microLamports: 1
});
const transferInstruction = SystemProgram.transfer({
fromPubkey: sender.publicKey,
toPubkey: recipient.publicKey,
lamports: 0.01 * LAMPORTS_PER_SOL
});
// Add the compute budget and transfer instructions to a new transaction
const transaction = new Transaction()
.add(limitInstruction)
.add(priceInstruction)
.add(transferInstruction);
const signature = await sendAndConfirmTransaction(connection, transaction, [
sender
]);
console.log("Transaction Signature:", signature);
Console
Click to execute the code.

Is this page helpful?

Índice

Editar Página

Gerenciado por

© 2025 Fundação Solana.
Todos os direitos reservados.