Transaktiomaksut

Jokaisesta Solana-transaktiosta veloitetaan transaktiomaksu, joka maksetaan SOL:lla. Transaktiomaksut jaetaan kahteen osaan: perusmaksuun ja priorisointimaksuun. Perusmaksu korvaa validaattoreille transaktion käsittelyn. Priorisointimaksu on valinnainen maksu, joka lisää mahdollisuutta, että nykyinen johtaja käsittelee transaktiosi.

Perusmaksu

Jokainen transaktio maksaa 5000 lamportia per sisällytetty allekirjoitus. Tämän maksun maksaa transaktion ensimmäinen allekirjoittaja. Vain System Program -ohjelman omistamat tilit voivat maksaa transaktiomaksuja. Perusmaksu jaetaan seuraavasti:

Priorisointimaksu

Priorisointimaksu on valinnainen maksu, jota käytetään lisäämään mahdollisuutta, että nykyinen johtaja (validaattori) käsittelee transaktiosi. Validaattori saa 100% priorisointimaksusta. Priorisointimaksuja voidaan asettaa säätämällä transaktion laskentayksikön (CU) hintaa ja CU-rajaa. (Katso lisätietoja priorisointimaksuista Priorisointimaksujen käyttöoppaasta).

Priorisointimaksu lasketaan seuraavasti:

Prioritization fee formula
Prioritization fee = CU limit * CU price

Priorisointimaksua käytetään määrittämään transaktiosi prioriteetti suhteessa muihin transaktioihin. Se lasketaan seuraavalla kaavalla:

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

Laskentayksikön raja

Oletusarvoisesti kullekin käskylle allokoidaan 200 000 CU:ta ja kullekin transaktialle allokoidaan 1,4 miljoonaa CU:ta. Voit muuttaa näitä oletusarvoja sisällyttämällä SetComputeUnitLimit -käskyn transaktioosi.

Laskeaksesi sopivan laskentayksikön rajan transaktiolle, suosittelemme seuraavia vaiheita:

  1. Arvioi tarvittavien laskentayksiköiden määrä simuloimalla transaktio
  2. Lisää 10% turvamarginaali tähän arvioon

Priorisointimaksu määräytyy pyydetyn laskentayksikön rajan perusteella, ei todellisen käytettyjen laskentayksiköiden määrän mukaan. Jos asetat laskentayksikön rajan liian korkeaksi tai käytät oletusarvoa, saatat maksaa käyttämättömistä laskentayksiköistä.

Laskentayksikön hinta

Laskentayksikön hinta on valinnainen määrä mikrolamportteja, joka maksetaan jokaisesta pyydetystä CU:sta. Voit ajatella CU-hintaa juomarahana, joka kannustaa validaattoria priorisoimaan transaktiosi. Asettaaksesi CU-hinnan, sisällytä SetComputeUnitPrice -käsky transaktioosi.

Laskentayksikön oletushinta on 0, mikä tarkoittaa että myös oletusarvoinen priorisointimaksu on 0.

Saadaksesi apua parhaan laskentayksikön hinnan määrittämiseen transaktiollesi, katso reaaliaikainen laskentayksikön hintasuositus alla olevasta taulukosta.

Esimerkki

Alla olevat esimerkit näyttävät, miten laskentayksikön raja ja hinta asetetaan transaktiossa käyttäen Solana SDK:ta.

SDKLähdekoodiviite
@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?

Sisällysluettelo

Muokkaa sivua

Hallinnoi

© 2026 Solana Foundation.
Kaikki oikeudet pidätetään.