Transaktionsgebühren

Jede Solana-Transaktion erfordert eine Transaktionsgebühr, die in SOL bezahlt wird. Transaktionsgebühren werden in zwei Teile aufgeteilt: die Basisgebühr und die Priorisierungsgebühr. Die Basisgebühr entschädigt Validatoren für die Verarbeitung der Transaktion. Die Priorisierungsgebühr ist eine optionale Gebühr, um die Chance zu erhöhen, dass der aktuelle Leader Ihre Transaktion verarbeitet.

Basisgebühr

Jede Transaktion kostet 5000 Lamports pro enthaltener Signatur. Diese Gebühr wird vom ersten Signer der Transaktion bezahlt. Nur Konten, die dem System Program gehören, können Transaktionsgebühren bezahlen. Die Basisgebühr wird wie folgt aufgeteilt:

  • 50% verbrannt: Die Hälfte wird verbrannt (aus dem zirkulierenden SOL-Angebot entfernt).
  • 50% verteilt: Die Hälfte wird an den Validator gezahlt, der die Transaktion verarbeitet hat.

Priorisierungsgebühr

Eine Priorisierungsgebühr ist eine optionale Gebühr, die verwendet wird, um die Chance zu erhöhen, dass der aktuelle Leader (Validator) Ihre Transaktion verarbeitet. Der Validator erhält 100% der priority fee. Priorisierungsgebühren können durch Anpassung des Compute Unit (CU) Preises und CU-Limits der Transaktion festgelegt werden. (Siehe den How to Use Priority Fees Guide für weitere Details zu Priorisierungsgebühren.)

Die Priorisierungsgebühr wird wie folgt berechnet:

Prioritization fee formula
Prioritization fee = CU limit * CU price

Die Priorisierungsgebühr wird verwendet, um die Priorität Ihrer Transaktion im Verhältnis zu anderen Transaktionen zu bestimmen. Sie wird mit der folgenden Formel berechnet:

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

Compute Unit Limit

Standardmäßig werden jeder Instruktion 200.000 CUs und jeder Transaktion 1,4 Millionen CUs zugewiesen. Sie können diese Standardwerte ändern, indem Sie eine SetComputeUnitLimit Instruktion in Ihre Transaktion einfügen.

Um das passende CU-Limit für Ihre Transaktion zu berechnen, empfehlen wir die folgenden Schritte:

  1. Schätzen Sie die erforderlichen CU-Einheiten, indem Sie die Transaktion simulieren
  2. Fügen Sie einen Sicherheitspuffer von 10% zu dieser Schätzung hinzu

Die priority fee wird durch das angeforderte Compute-Unit-Limit der Transaktion bestimmt, nicht durch die tatsächlich verwendete Anzahl an Compute-Units. Wenn Sie ein zu hohes Compute-Unit-Limit festlegen oder den Standardwert verwenden, zahlen Sie möglicherweise für ungenutzte Compute-Units.

Compute-Unit-Preis

Der Compute-Unit-Preis ist ein optionaler Betrag in Micro-Lamports, der für jede angeforderte CU gezahlt wird. Sie können sich den CU-Preis als Trinkgeld vorstellen, um den Validator zu ermutigen, Ihre Transaktion zu priorisieren. Um den CU-Preis festzulegen, fügen Sie eine SetComputeUnitPrice-Anweisung in Ihre Transaktion ein.

Der Standard-CU-Preis beträgt 0, was bedeutet, dass auch die Standard-priority fee 0 ist.

Für Hilfe bei der Bestimmung des besten CU-Preises für Ihre Transaktion siehe die Echtzeit-CU-Preis-Empfehlung in der unten stehenden Tabelle.

Beispiel

Die folgenden Beispiele zeigen, wie Sie das CU-Limit und den CU-Preis für eine Transaktion mit Solana-SDKs festlegen.

SDKQuellcode-Referenz
@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?

Inhaltsverzeichnis

Seite bearbeiten

Verwaltet von

© 2026 Solana Foundation.
Alle Rechte vorbehalten.
Verbinden Sie sich
Transaktionsgebühren | Solana