Taxas de transação

Cada 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 probabilidade de o líder atual processar a 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 probabilidade de o líder atual (validador) processar a 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 (CU) e o limite de CU da transação. (Consulte o guia 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, relativamente 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 unidades de computação

Por predefinição, cada instrução recebe 200.000 CUs e cada transação recebe 1,4 milhão de CUs. Pode alterar estas predefinições incluindo uma instrução SetComputeUnitLimit na sua transação.

Para calcular o limite de CU apropriado para a 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 unidades de computação solicitado na transação, não pelo número real de unidades de computação utilizadas. Se definir um limite de unidades de computação demasiado elevado ou utilizar o valor predefinido, 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 é um valor opcional de micro-lamports pago por cada CU solicitada. Pode pensar no preço da CU como uma gorjeta para incentivar o validator a priorizar a sua transação. Para definir o preço da CU, inclua uma instrução SetComputeUnitPrice na sua transação.

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

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

Exemplo

Os exemplos abaixo mostram como definir o limite de CU e o preço de CU numa transação utilizando 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

© 2026 Fundação Solana.
Todos os direitos reservados.
Conecte-se
  • Blog