Taxas de transação

Toda transação na Solana requer uma taxa base (SOL) para compensar os validators pelo processamento da transação. Você também pode pagar uma taxa de priorização opcional para aumentar a chance de que o líder atual (validator) processe sua transação.

Pontos principais

  • A taxa base para uma transação é de 5000 lamports por assinatura na transação.
  • A taxa de priorização (opcional) é uma taxa extra que você paga ao validator para aumentar a chance de que o líder atual processe sua transação.
  • A taxa de priorização é igual a: (limite de unidades de computação * preço da unidade de computação).
  • O limite de unidades de computação é o máximo de unidades de computação que sua transação pode usar.
  • O preço da unidade de computação é o preço por unidade de computação, em micro-lamports.
  • 1.000.000 de micro lamports = 1 lamport
  • O pagador da taxa de transação deve ser uma conta pertencente ao System Program.

Taxa base de transação

A taxa base é o custo para enviar uma transação. O custo é de 5000 lamports por assinatura incluída na transação.

A taxa base sai da conta do pagador da taxa de transação, que é o primeiro signatário da transação. O pagador da taxa deve ser uma conta pertencente ao System Program.

Taxa de priorização

A taxa de priorização é uma taxa opcional paga para aumentar a chance de que o líder atual processe sua transação.

  • SIMD-0096: O validator que processa a transação recebe 100% da taxa de prioridade.

Unidades de computação e limites

Quando uma transação é processada, ela usa recursos computacionais medidos em unidades de computação (CU). Cada instrução deduz do orçamento de unidades de computação da transação.

Para mais detalhes sobre o uso de unidades de computação:

Consulte o guia Como solicitar computação ideal para mais detalhes sobre o uso de unidades de computação.

Preço da unidade de computação

O preço da unidade de computação é um valor opcional, especificado em micro-lamports, que você paga por cada unidade de computação solicitada. Este preço é usado para calcular a taxa de priorização para sua transação.

1.000.000 de micro lamports = 1 lamport

Use estes recursos para obter recomendações em tempo real sobre o preço atual da unidade de computação:

Consulte o guia Como usar taxas de prioridade para mais detalhes sobre taxas de prioridade.

Calcular taxa de priorização

A taxa de priorização é calculada como:

Taxa de priorização = Limite de unidades de computação × Preço da unidade de computação

A abordagem recomendada para definir taxas de prioridade é primeiro simular a transação para estimar as unidades de computação necessárias. Em seguida, adicione uma margem de segurança de 10% a esta estimativa e use o valor resultante como o Compute Unit Limit.

A prioridade da transação, que determina como ela é priorizada em relação a outras transações, é calculada usando a seguinte fórmula:

Prioridade = ((Limite de Unidade de Computação * Preço da Unidade de Computação) + Taxa Base) / (1 + Limite de Unidade de Computação + CUs de Assinatura + CUs de Bloqueio de Escrita)

Use estas instruções para definir o limite e o preço da unidade de computação em uma transação:

Se você não fornecer essas instruções, a transação usará o limite padrão de unidade de computação com um preço de unidade de computação de 0 (sem taxa de priorização).

A taxa de prioridade depende do limite de unidade de computação que você solicita para a transação, não das unidades de computação realmente 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.

Exemplos

Os exemplos a seguir mostram como definir o limite e o preço da unidade de computação para uma transação.

SDKReferência do Código Fonte
solana-sdk (Rust)ComputeBudgetInstruction
@solana/web3.js (Typescript)ComputeBudgetProgram
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