Transaktiomaksut

Jokainen Solana-transaktio vaatii transaktiomaksun, joka maksetaan SOL-tokeneina. Transaktiomaksut jakautuvat kahteen osaan: perusmaksuun ja priorisointimaksuun. Perusmaksu korvaa validaattoreille transaktion käsittelystä. Priorisointimaksu on valinnainen maksu, joka lisää todennäköisyyttä, että nykyinen johtaja käsittelee transaktiosi.

Perusmaksu

Jokainen transaktio maksaa 5000 lamportia sisällytettyä allekirjoitusta kohden. Tämän maksun maksaa transaktion ensimmäinen allekirjoittaja. Vain System Programin omistamien tilien on mahdollista maksaa transaktiomaksuja. Perusmaksu jakautuu seuraavasti:

Priorisointimaksu

Priorisointimaksu on valinnainen maksu, jota käytetään lisäämään todennäköisyyttä, että nykyinen johtaja (validaattori) käsittelee transaktiosi. Validaattori saa 100 % priorisointimaksusta. Priorisointimaksut voidaan asettaa säätämällä transaktion laskentayksikön (CU) hintaa ja CU-rajaa. (Katso lisätietoja priorisointimaksuista How to Use Priority Fees -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 jokaiselle ohjeelle allokoidaan 200 000 CU:ta ja jokaiselle transaktiolle allokoidaan 1,4 miljoonaa CU:ta. Voit muuttaa näitä oletusarvoja sisällyttämällä SetComputeUnitLimit-ohjeen transaktioosi.

Laskeaksesi sopivan CU-rajan transaktiolle suosittelemme seuraavia vaiheita:

  1. Arvioi tarvittavat CU-yksiköt simuloimalla transaktio
  2. Lisää 10 % turvamarginaali tähän arvioon

Prioriteettipalkkio määräytyy pyydetyn laskentayksikön rajan mukaan transaktiossa, ei käytettyjen laskentayksiköiden todellisen määrän mukaan. Jos asetat liian korkean laskentayksikön rajan tai käytät oletusmäärää, saatat maksaa käyttämättömistä laskentayksiköistä.

Laskentayksikön hinta

Laskentayksikön hinta on valinnainen mikrolamporttien määrä, joka maksetaan jokaisesta pyydetystä CU:sta. Voit ajatella CU-hintaa tipinä, joka kannustaa validaattoria priorisoimaan transaktiosi. Asettaaksesi CU-hinnan, liitä transaktioon SetComputeUnitPrice-ohje.

Oletus CU-hinta on 0, mikä tarkoittaa, että myös oletuspriorisointipalkkio on 0.

Parhaan CU-hinnan määrittämiseksi transaktiollesi katso alla olevasta taulukosta reaaliaikainen CU-hintasuositus.

Esimerkki

Alla olevat esimerkit näyttävät, kuinka CU-raja ja CU-hinta asetetaan transaktiossa Solana SDK:iden avulla.

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.
Yhdistä