Transaktiomaksut

Jokaisesta Solana-transaktiosta veloitetaan transaktiomaksu, joka maksetaan SOL:lla. Transaktiomaksut jakautuvat 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 sisällytettyä allekirjoitusta kohden. Tämän maksun maksaa transaktion ensimmäinen allekirjoittaja, ja se on maksettava tililtä, jonka omistaa System Program. Perusmaksu jakautuu seuraavasti:

Priorisointimaksu

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

Priorisointimaksu lasketaan seuraavasti:

Priorisointimaksu = Laskentayksikön raja × Laskentayksikön hinta

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

Prioriteetti = Priorisointimaksu ÷ Laskentayksikön raja

Laskentayksikön raja

Oletusarvoisesti jokaiselle ohjeelle on varattu 200 000 CU:ta ja jokaiselle transaktiolle 1,4 miljoonaa CU:ta. Voit muuttaa näitä oletusarvoja sisällyttämällä SetComputeUnitLimit -ohjeen transaktioosi.

Laskeaksesi sopivan CU-rajan transaktiollesi suosittelemme seuraavia vaiheita:

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

Priorisointimaksu määräytyy pyydetyn laskentayksikön rajoituksen 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ä mikro-lamporteja, joka maksetaan jokaisesta pyydetystä CU:sta. Voit ajatella CU-hintaa tipiksi, joka kannustaa validatoria priorisoimaan transaktiosi. Asettaaksesi CU-hinnan, sisällytä ComputeBudgetInstruction::set_compute_unit_price -ohje transaktioosi.

CU-hinnan oletusarvo on 0, mikä tarkoittaa, että oletusarvoinen priorisointimaksu on myös 0.

Saadaksesi apua parhaan CU-hinnan määrittämiseen transaktiollesi, katso reaaliaikainen CU-hintasuositus alla olevasta taulukosta.

Esimerkki

Alla olevat esimerkit näyttävät, miten CU-raja ja CU-hinta asetetaan transaktioon käyttäen Solana SDK:ta.

SDKLähdekoodin viite
@solana/web3.js (Typescript)ComputeBudgetProgram.setComputeUnitPrice()
solana-sdk (Rust)ComputeBudgetInstruction::set_compute_unit_limit()
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
Transaktiomaksut | Solana