İşlem ücretleri

Her Solana işlemi, SOL cinsinden ödenen bir işlem ücreti gerektirir. İşlem ücretleri iki bölüme ayrılır: temel ücret ve önceliklendirme ücreti. Temel ücret, doğrulayıcıları işlemi işlemek için tazmin eder. Önceliklendirme ücreti, mevcut liderin işleminizi işleme şansını artırmak için isteğe bağlı bir ücrettir.

Temel ücret

Her işlem, dahil edilen imza başına 5000 lamport maliyetindedir. Bu ücret, işlemdeki ilk imzalayan tarafından ödenir. Yalnızca System Program'a ait hesaplar işlem ücreti ödeyebilir. Temel ücret aşağıdaki şekilde bölünür:

Önceliklendirme ücreti

Önceliklendirme ücreti, mevcut liderin (doğrulayıcı) işleminizi işleme şansını artırmak için kullanılan isteğe bağlı bir ücrettir. Doğrulayıcı, öncelik ücretinin %100'ünü alır. Önceliklendirme ücretleri, işlemin hesaplama birimi (CU) fiyatı ve CU limitini ayarlayarak belirlenebilir. (Önceliklendirme ücretleri hakkında daha fazla ayrıntı için Öncelik Ücretleri Nasıl Kullanılır kılavuzuna bakın.)

Önceliklendirme ücreti şu şekilde hesaplanır:

Prioritization fee formula
Prioritization fee = CU limit * CU price

Önceliklendirme ücreti, diğer işlemlere göre işleminizin önceliğini belirlemek için kullanılır. Aşağıdaki formül kullanılarak hesaplanır:

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

Hesaplama birimi limiti

Varsayılan olarak, her talimata 200.000 CU ve her işleme 1,4 milyon CU tahsis edilir. İşleminize bir SetComputeUnitLimit talimatı ekleyerek bu varsayılanları değiştirebilirsiniz.

İşleminiz için uygun CU limitini hesaplamak için aşağıdaki adımları öneriyoruz:

  1. İşlemi simüle ederek gerekli CU birimlerini tahmin edin
  2. Bu tahmine %10 güvenlik marjı ekleyin

Öncelik ücreti, işlemde talep edilen hesaplama birimi limitine göre belirlenir, kullanılan gerçek hesaplama birimi sayısına göre değil. Çok yüksek bir hesaplama birimi limiti belirlerseniz veya varsayılan miktarı kullanırsanız, kullanılmayan hesaplama birimleri için ödeme yapabilirsiniz.

Hesaplama birimi fiyatı

Hesaplama birimi fiyatı, talep edilen her CU için ödenen isteğe bağlı bir mikro-lamport miktarıdır. CU fiyatını, doğrulayıcıyı işleminize öncelik vermeye teşvik eden bir bahşiş olarak düşünebilirsiniz. CU fiyatını ayarlamak için işleminize bir SetComputeUnitPrice talimatı ekleyin.

Varsayılan CU fiyatı 0'dır, yani varsayılan önceliklendirme ücreti de 0'dır.

İşleminiz için en iyi CU fiyatını belirleme konusunda yardım almak için aşağıdaki tabloda listelenen gerçek zamanlı CU fiyat önerisine bakın.

Örnek

Aşağıdaki örnekler, Solana SDK'larını kullanarak bir işlemde CU limitinin ve CU fiyatının nasıl ayarlanacağını göstermektedir.

SDKKaynak kod referansı
@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?

İçindekiler

Sayfayı Düzenle

Yönetici

© 2026 Solana Vakfı.
Tüm hakları saklıdır.
Bağlanın