Transactiekosten

Elke Solana-transactie vereist transactiekosten, betaald in SOL. Transactiekosten zijn opgesplitst in twee delen: de basiskosten en de prioriteringskosten. De basiskosten compenseren validators voor het verwerken van de transactie. De prioriteringskosten zijn optionele kosten om de kans te vergroten dat de huidige leider je transactie zal verwerken.

Basiskosten

Elke transactie kost 5000 lamports per opgenomen handtekening. Deze kosten worden betaald door de eerste ondertekenaar van de transactie. Alleen accounts die eigendom zijn van het System Program kunnen transactiekosten betalen. De basiskosten worden als volgt verdeeld:

  • 50% verbrand: De helft wordt verbrand (uit de circulerende SOL-voorraad gehaald).
  • 50% gedistribueerd: De helft wordt betaald aan de validator die de transactie heeft verwerkt.

Prioriteringskosten

Een prioriteringskosten zijn optionele kosten die worden gebruikt om de kans te vergroten dat de huidige leider (validator) je transactie zal verwerken. De validator ontvangt 100% van de prioriteringskosten. Prioriteringskosten kunnen worden ingesteld door de computation unit (CU) prijs en CU-limiet van de transactie aan te passen. (Zie de How to Use Priority Fees guide voor meer details over prioriteringskosten.)

De prioriteringskosten worden als volgt berekend:

Prioritization fee formula
Prioritization fee = CU limit * CU price

De prioriteringskosten worden gebruikt om de prioriteit van je transactie te bepalen, ten opzichte van andere transacties. Deze wordt berekend met de volgende formule:

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

Compute unit-limiet

Standaard krijgt elke instructie 200.000 CU's toegewezen en elke transactie krijgt 1,4 miljoen CU's toegewezen. Je kunt deze standaardwaarden wijzigen door een SetComputeUnitLimit instructie in je transactie op te nemen.

Om de juiste CU-limiet voor je transactie te berekenen, raden we de volgende stappen aan:

  1. Schat de benodigde CU-eenheden door de transactie te simuleren
  2. Voeg een veiligheidsmarge van 10% toe aan deze schatting

De prioriteitsvergoeding wordt bepaald door de aangevraagde compute unit-limiet van de transactie, niet door het werkelijke aantal gebruikte compute units. Als je een compute unit-limiet instelt die te hoog is of het standaardbedrag gebruikt, betaal je mogelijk voor ongebruikte compute units.

Compute unit-prijs

De compute unit-prijs is een optioneel bedrag aan micro-lamports dat wordt betaald voor elke aangevraagde CU. Je kunt de CU-prijs zien als een fooi om de validator aan te moedigen je transactie te prioriteren. Om de CU-prijs in te stellen, voeg je een SetComputeUnitPrice instructie toe aan je transactie.

De standaard CU-prijs is 0, wat betekent dat de standaard prioriteringsvergoeding ook 0 is.

Voor hulp bij het bepalen van de beste CU-prijs voor je transactie, zie de realtime CU-prijsaanbeveling in de onderstaande tabel.

Voorbeeld

De onderstaande voorbeelden laten zien hoe je de CU-limiet en CU-prijs instelt op een transactie met behulp van Solana SDK's.

SDKBroncodeverwijzing
@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?

Inhoudsopgave

Pagina Bewerken

Beheerd door

© 2026 Solana Foundation.
Alle rechten voorbehouden.
Blijf Verbonden