İşlem Ücretleri

Her Solana işlemi, validatorlere işlemi işlemeleri karşılığında ödenen bir temel ücret (SOL) gerektirir. Ayrıca, mevcut liderin (validator) işleminizi işleme olasılığını artırmak için isteğe bağlı bir önceliklendirme ücreti de ödeyebilirsiniz.

Önemli Noktalar

  • İşlem için temel ücret, işlemdeki imza başına 5000 lamport'tur.
  • Önceliklendirme ücreti (isteğe bağlı), mevcut liderin işleminizi işleme olasılığını artırmak için validatore ödediğiniz ek bir ücrettir.
  • Önceliklendirme ücreti şuna eşittir: (hesaplama birimi limiti * hesaplama birimi fiyatı).
  • Hesaplama birimi limiti, işleminizin kullanabileceği maksimum hesaplama birimidir.
  • Hesaplama birimi fiyatı, mikro-lamport cinsinden hesaplama birimi başına fiyattır.
  • 1.000.000 mikro lamport = 1 lamport
  • İşlem ücreti ödeyicisi, System Program tarafından sahiplenilen bir hesap olmalıdır.

Temel İşlem Ücreti

Temel ücret, bir işlem göndermenin maliyetidir. Maliyet, işleme dahil edilen imza başına 5000 lamport'tur.

Temel ücret, işlemdeki ilk imzalayan olan işlem ücreti ödeyicisinin hesabından çıkar. Ücret ödeyicisi, System Program tarafından sahiplenilen bir hesap olmalıdır.

Önceliklendirme Ücreti

Önceliklendirme ücreti, mevcut liderin işleminizi işleme olasılığını artırmak için ödenen isteğe bağlı bir ücrettir.

  • SIMD-0096: İşlemi işleyen validator, öncelik ücretinin %100'ünü alır.

Hesaplama Birimleri ve Sınırları

Bir işlem işlendiğinde, hesaplama birimleri (CU) olarak ölçülen hesaplama kaynakları kullanır. Her talimat, işlemin hesaplama birimi bütçesinden düşülür.

  • Maksimum Sınır: Bir işlem en fazla 1.4 milyon hesaplama birimi kullanabilir.
  • Varsayılan Sınır: Varsayılan olarak, her talimat en fazla 200.000 hesaplama birimi kullanabilir.
  • Özel Sınır: İşleminize bir SetComputeUnitLimit talimatı ekleyerek belirli bir hesaplama birimi sınırı talep edebilirsiniz.

Hesaplama birimi kullanımı hakkında daha fazla ayrıntı için:

Hesaplama birimi kullanımı hakkında daha fazla ayrıntı için Optimal Hesaplama Nasıl Talep Edilir kılavuzuna bakın.

Hesaplama Birimi Fiyatı

Hesaplama birimi fiyatı, talep edilen her hesaplama birimi için ödediğiniz, mikro-lamport cinsinden belirtilen isteğe bağlı bir miktardır. Bu fiyat, işleminizin önceliklendirme ücretini hesaplamak için kullanılır.

1.000.000 mikro lamport = 1 lamport

Mevcut hesaplama birimi fiyatı hakkında gerçek zamanlı öneriler almak için bu kaynakları kullanın:

SağlayıcıÖncelik Ücreti API'si
HeliusDokümantasyon
TritonDokümantasyon

Öncelik ücretleri hakkında daha fazla ayrıntı için Öncelik Ücretleri Nasıl Kullanılır kılavuzuna bakın.

Önceliklendirme Ücreti Hesaplama

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

Önceliklendirme Ücreti = Hesaplama Birimi Sınırı × Hesaplama Birimi Fiyatı

Bir işlemde hesaplama birimi sınırını ve fiyatını ayarlamak için bu talimatları kullanın:

Bu talimatları sağlamazsanız, işlem varsayılan hesaplama birimi sınırını 0 hesaplama birimi fiyatıyla (önceliklendirme ücreti olmadan) kullanır.

Öncelik ücreti, işlem için talep ettiğiniz hesaplama birimi limitine bağlıdır, gerçekte kullanılan hesaplama birimlerine değil. Eğer çok yüksek bir hesaplama birimi limiti belirlerseniz veya varsayılan miktarı kullanırsanız, kullanılmayan hesaplama birimleri için ödeme yapabilirsiniz.

Örnekler

Aşağıdaki örnekler, bir işlem için hesaplama birimi limitini ve fiyatını nasıl ayarlayacağınızı göstermektedir.

SDKKaynak Kod Referansı
solana-sdk (Rust)ComputeBudgetInstruction
@solana/web3.js (Typescript)ComputeBudgetProgram
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);
Click to execute the code.

Is this page helpful?

İçindekiler

Sayfayı Düzenle