İş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.
- %50 Yakılır: Temel ücretin yarısı yakılır.
- %50 Dağıtım: Yarısı işlemi işleyen validatore ödenir.
Ö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.
Mevcut hesaplama birimi fiyatı hakkında gerçek zamanlı öneriler almak için bu kaynakları kullanın:
Sağlayıcı | Öncelik Ücreti API'si |
---|---|
Helius | Dokümantasyon |
Triton | Dokü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:
- Belirli bir birim sınırı ayarlamak için
SetComputeUnitLimit
. - Hesaplama birimi başına fiyatı tanımlamak için
SetComputeUnitPrice
.
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.
SDK | Kaynak 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 instructionsconst 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 transactionconst transaction = new Transaction().add(limitInstruction).add(priceInstruction).add(transferInstruction);const signature = await sendAndConfirmTransaction(connection, transaction, [sender]);console.log("Transaction Signature:", signature);
Is this page helpful?