تتطلب كل معاملة على سولانا رسوم معاملة، تُدفع بعملة SOL. تنقسم رسوم المعاملات إلى جزأين: الرسوم الأساسية ورسوم الأولوية. تعوض الرسوم الأساسية المدققين عن معالجة المعاملة. رسوم الأولوية هي رسوم اختيارية، لزيادة فرصة قيام القائد الحالي بمعالجة معاملتك.
الرسوم الأساسية
تكلف كل معاملة 5000 لامبورت لكل توقيع مضمن. يتم دفع هذه الرسوم من قبل الموقع الأول على المعاملة. يمكن فقط للحسابات المملوكة من قبل System Program دفع رسوم المعاملات. يتم تقسيم الرسوم الأساسية على النحو التالي:
- 50% يتم حرقها: يتم حرق النصف (إزالته من المعروض المتداول من SOL).
- 50% يتم توزيعها: يتم دفع النصف إلى المدقق الذي عالج المعاملة.
رسوم الأولوية
رسوم الأولوية هي رسوم اختيارية تُستخدم لزيادة فرصة قيام القائد الحالي (المدقق) بمعالجة معاملتك. يحصل المدقق على 100% من رسوم الأولوية. يمكن تعيين رسوم الأولوية عن طريق تعديل سعر وحدة الحوسبة (CU) وحد وحدة الحوسبة للمعاملة. (راجع دليل كيفية استخدام رسوم الأولوية لمزيد من التفاصيل حول رسوم الأولوية.)
يتم حساب رسوم الأولوية على النحو التالي:
Prioritization fee = CU limit * CU price
تُستخدم رسوم الأولوية لتحديد أولوية معاملتك، بالنسبة للمعاملات الأخرى. يتم حسابها باستخدام الصيغة التالية:
Priority = (Prioritization fee + Base fee) / (1 + CU limit + Signature CUs + Write lock CUs)
حد وحدة الحوسبة
افتراضياً،
يتم تخصيص
200,000 وحدة حوسبة
لكل تعليمة ويتم تخصيص
1.4 مليون وحدة حوسبة
لكل معاملة. يمكنك تغيير هذه الإعدادات الافتراضية عن طريق تضمين تعليمة
SetComputeUnitLimit
في معاملتك.
لحساب حد وحدات الحوسبة المناسب لمعاملتك، نوصي بالخطوات التالية:
- قدّر وحدات الحوسبة المطلوبة عن طريق محاكاة المعاملة
- أضف هامش أمان بنسبة 10% إلى هذا التقدير
يتم تحديد رسوم الأولوية بناءً على حد وحدات الحوسبة المطلوب في المعاملة، وليس العدد الفعلي لوحدات الحوسبة المستخدمة. إذا قمت بتعيين حد وحدات حوسبة مرتفع جداً أو استخدمت المقدار الافتراضي، فقد تدفع مقابل وحدات حوسبة غير مستخدمة.
سعر وحدة الحوسبة
سعر وحدة الحوسبة هو مبلغ اختياري من
المايكرو-لامبورت يُدفع مقابل كل
وحدة حوسبة مطلوبة. يمكنك اعتبار سعر وحدة الحوسبة بمثابة إكرامية لتشجيع المدقق
على إعطاء الأولوية لمعاملتك. لتعيين سعر وحدة الحوسبة، قم بتضمين تعليمة
SetComputeUnitPrice
في معاملتك.
سعر وحدة الحوسبة الافتراضي هو 0، مما يعني أن رسوم الأولوية الافتراضية هي أيضاً 0.
للمساعدة في تحديد أفضل سعر لوحدة الحوسبة لمعاملتك، راجع توصية سعر وحدة الحوسبة في الوقت الفعلي المدرجة في الجدول أدناه.
مثال
توضح الأمثلة أدناه كيفية تعيين حد وحدات الحوسبة وسعر وحدة الحوسبة على معاملة باستخدام مجموعات تطوير سولانا.
| مجموعة التطوير | مرجع الكود المصدري |
|---|---|
@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 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?