استخدم هذه الصفحة لتحديد الرسم على المعاملة، ولتقدير كلفة النشر أو الاستدعاء، ولفهم ما يتقاضاه المدقِّق. الرسوم حدود دنيا بوحدة RAND. كل إجراء عدا الاستدعاء يدفع رسمًا ثابتًا. أما الاستدعاء على السلسلة 20 فيدفع ثمن حد الغاز الذي يعلنه إثباته وثمن بايتاته، بأسعار تتحرك مع امتلاء الكتل وتتوقف عند سقف.
الحدود الدنيا
الرسوم بوحدات 10⁻⁹ RAND. الثوابت معرّفة في randprotocol_core::gas:
| المعاملة | الحد الأدنى | اليوم |
|---|---|---|
أي حزمة: تحويل RAND أو أي رمز RPL، أو ربط (bond)، أو إيداع عبر الجسر (BridgeAttest، يدفعه مُرحِّله)، أو TokenMint، أو SetAuthority، أو TokenBurn، أو ListBacking | BUNDLE_BASE = 1,000,000 وحدة | 0.001 RAND |
| النشر | BUNDLE_BASE + DEPLOY_PER_WORD (100,000) × (كلمات البرنامج + الكلمات العامة) | برنامج من 256 كلمة: 0.0266 RAND؛ برنامج من 4,096 كلمة: 0.4106 RAND؛ صورة SPL Token من 65,096 كلمة مع مدخلها العام البالغ 27,151 كلمة: 9.2257 RAND (نُشرت على السلسلة 13 بتاريخ 2026-09-19). منذ السلسلة 16 (hardening_v6، ومنها السلسلة 20) يُرفض أي نشر لا يستطيع أي استدعاء احتواءه، بوصفه ProgramUncallable: أكثر من 8,180 كلمة لبرنامج بلا مدخل عام، وأقل من ذلك إلى جانب مدخل عام. وستُرفض تلك الصورة على السلسلة 20 |
| الاستدعاء | على سلسلة يتضمن genesis فيها قسم gas (السلسلة 20، مثل السلسلتين 18 و19): BUNDLE_BASE + gas_price × حد الغاز الذي يعلنه إثبات الاستدعاء + byte_price × كل KiB (ويُحتسب الجزء الناقص من KiB كاملًا) من إثبات الاستدعاء مع غلاف المدخلات، من البايت 0. انظر الغاز على السلسلة 18. على سلسلة بلا هذا القسم: BUNDLE_BASE + call_fee(tier)، حيث call_fee = CALL_BASE (1,000,000) + 100,000 لكل مستويين فوق 10، مضافًا إليها 1,000 وحدة لكل KiB (ويُحتسب الجزء الناقص من KiB كاملًا) من إثبات الاستدعاء مع غلاف المدخلات فوق الحد المجاني البالغ 2,097,152 + 18,432 بايت | السلسلة 20، بالأسعار الابتدائية 100 و800 وحدة: استدعاء من المستوى 14 يعلن سقف المستوى البالغ 20,479 غاز، مع 1,350,000 بايت من الإثبات والغلاف، حدّه الأدنى 0.0041 RAND؛ والقيمة الافتراضية في المحفظة تدفع أكثر (أدناه). بلا قسم gas، كما في السلسلة 15: المستوى 10: 0.002؛ المستوى 14: 0.0022 RAND، دون الحد المجاني. منذ v0.5.6 يُرفض أي استدعاء فوق المستوى 14 مهما دفع (MAX_CALL_TIER). أما استدعاء ERC-20 approve الذي أُجري على السلسلة 13 بتاريخ 2026-09-19 (المستوى 16، إثبات من 3,412,405 بايت) فقد دفع 0.00357 RAND، وكان سيُرفض على أي سلسلة منذ v0.5.6 |
| Invoke (RPL-2، السلسلة 20) | الحد الأدنى للاستدعاء، مضافًا إليه program_state.cell_fee من genesis عن كل خلية ينشئها الانتقال (خلية تُكتب بقيمة غير صفرية حيث لم يكن مخزَّنًا شيء)؛ أما إعادة كتابة خلية أو حذفها فلا تضيف شيئًا | cell_fee في السلسلة 20 هو 0.01 RAND: الاستدعاء من المستوى 14 أعلاه، إذا أنشأ خليتين، حدّه الأدنى 0.0241 RAND |
| BridgeBurn | BRIDGE_BURN_FEE = 10 × BUNDLE_BASE: الأساس مضافًا إليه رسم الجسر نفسه، ويُدفعان معًا من الحزمة الواحدة التي يحملها الحرق | 0.01 RAND؛ وعلى السلسلة 20 يحتفظ الجسر أيضًا بـ 10 نقاط أساس من zUSD المحروق (أدناه) |
| RegisterToken، RegisterBridgedToken | BUNDLE_BASE + registration_fee في سجل الرموز (معامل في genesis) | السلسلة 20: 0.001 + 1 RAND = 1.001 RAND، يُحرق منها 1 RAND |
| Mint (الصنبور)، Unbond | 0؛ بلا حزمة، يوقّعه المدقِّق | — |
| PauseMints، UnpauseMints | 0؛ بلا حزمة، يخوّلها مفتاح الإيقاف أو نصاب من حرّاس ما بعد الكم (PQ)، فيعمل الإيقاف من محفظة لا تحتوي أي RAND | — |
| Withdraw | 0 على السلك؛ وتُقتطع القاعدة البالغة 0.001 RAND من المبلغ المسحوب | سحب 1,000 RAND ينشئ ملاحظة قيمتها 999.999 |
الرسم كلمة عامة في الحزمة، وهو دائمًا بوحدة RAND. يربطه دليل الحزمة للأصول المخفية بعلاقة التوازن الخاصة بمجموعة RAND، in₂ + in₃ = out₂ + out₃ + fee + burn_r (الخانتان 2–3)، فيُدفع من ملاحظات مخفية دون الكشف عن أيّها؛ ويتحرك الرمز عبر الخانتين 0–1 من الحزمة نفسها وفق علاقته الخاصة، in₀ + in₁ = out₀ + out₁ + burn_a. وهكذا ينقل إثبات واحد رمزًا ويدفع رسم RAND الخاص به، وتُرفض قبل الإثبات أي محفظة تحمل رمزًا دون RAND قابل للإنفاق.
يقع رسم الجسر على الحرق لأنه المعاملة الوحيدة في الجسر التي يضمن أن مرسلها يملك RAND؛ أما الإيداع فيدفع الأساس فقط، لأن المودِع لا يملك RAND بعد. ورسم التسجيل حقيقة في دفتر الأستاذ لا جزء من fee_floor، لذلك يُفحص بقواعد الإجراء نفسه (RegistrationFeeTooLow)، على نحو ما يُحتسب جزء الغاز أو المستوى في الاستدعاء بعد فك إثباته. ويُفحص الحد الأدنى للاستدعاء مرتين، لأن ما يعلنه لا يُوثَق به إلا بعد التحقق من إثباته. على السلسلة 20 يسعّر الفحص الأول، قبل أي تحقق، بايتات الاستدعاء وحدًّا معلنًا قيمته 1 (ويستحق Invoke هناك رسم خلاياه أيضًا)؛ ويسعّر الفحص الثاني الحد الذي يعلنه الإثبات بعد التحقق منه. وعلى سلسلة بلا قسم gas يكون الفحصان BUNDLE_BASE + CALL_BASE والحد الأدنى الدقيق للمستوى.
اسأل العقدة بدل التخمين:
rand fee bundle # 0.001 RAND
rand fee deploy 256 # 0.0266 RAND
rand fee call 14 --gas 20479 --bytes 1350000 # 0.0041 RAND at chain 20's starting prices
→ {"method":"rand_estimateFee","params":[{"kind":"call","tier":14,"gas":20479,"bytes":1350000}]}
← "4103100"
ذلك الجواب هو 1,000,000 + 100 × 20,479 + 800 × 1,319 بالأسعار الابتدائية؛ وتسعّر العقدة بأسعار رأس السلسلة وقت السؤال. على السلسلة 20 يكون الحقل gas في مواصفة الاستدعاء مطلوبًا عبر JSON-RPC (-32602 من دونه). الأمر rand fee call <tier> بلا --gas يرسل سقف المستوى، وبلا --bytes لا يسعّر أي بايتات. ويُسعَّر invoke بالطريقة نفسها، مع "kind":"invoke" و"created_cells": c اللذين يضيفان c من رسوم الخلايا (24103100 للمثال أعلاه بخليتين، سُئلت عنه السلسلة 20 بتاريخ 2026-10-01). وعلى السلسلة 15، التي لم يكن فيها قسم gas، أجاب rand fee call 14 بـ 0.0022 RAND.
القيم الافتراضية في المحفظة هي الحدود الدنيا تمامًا، عدا الاستدعاء على السلسلة 20 الذي يضيف افتراضيها هامشًا (أدناه)؛ ويرفعها rand send --fee <RAND> والخيار --fee في bond وcall وbridge-mint وbridge-burn (الافتراضي 0.01) والأوامر الفرعية لـ token. وأي مبلغ فوق الحد الأدنى يُعدّ إكرامية.
الغاز على السلسلة 18
كانت السلسلة 18، الحيّة من 2026-09-29 إلى 2026-10-01، أول سلسلة تقيس الغاز، وحملت السلسلة 19، وهي إعادة genesis لها على البناء نفسه، قسم gas ذاته. وتُبقي السلسلة 20 (v0.6.8) كل قاعدة في هذا القسم وتضيف سقفين للسعر وحملًا للبايتات يُحتسب على البايتات التي تدفع وحدها (أدناه). أما السلسلة بلا قسم gas فتحتفظ بجدول المستويات في الجدول أعلاه.
ما الذي يُحتسب. الغاز الواحد هو صف واحد من جدول cpu في zkVM، فتكلّف التعليمة العادية 1. ولا تكلفة أخرى سوى استدعاءات النظام (syscalls):
| العملية | الغاز |
|---|---|
أي تعليمة، HALT، WRITE_OUTPUT، READ_INPUT، READ_PUBLIC | 1 |
POSEIDON2 على n كلمة | 3 + 3 × ⌈n/4⌉ (يكلّف كل صف امتصاص 3) |
SHA256، ضغطة واحدة | 64 |
KECCAK، تبديل واحد | 192 |
الحد المعلَن. يحمل إثبات الاستدعاء قيمة عامة واحدة زائدة عمّا كان، هي GAS_LIMIT، وتثبت الدارة (مجموعة القيود 8) أن غاز التشغيل لا يتجاوزها. ويبقى الغاز الفعلي سريًّا. ويُرفض أي حد يفوق سقف رأس الإثبات نفسه قبل بناء أي مفتاح تحقق:
gas_max = (2ᵗ − 1) + 2^(t−2) + 191 × (keccak rows / 32) + 63 × (sha256 rows / 64)
وذلك 1,279 في المستوى 10، و5,119 في المستوى 12، و20,479 في المستوى 14 لاستدعاء لا يستخدم أيًّا من جدولَي التجزئة.
الحد الأدنى. يحتسب دفتر الأستاذ الحد المعلَن والبايتات، بالأسعار السارية عند بدء الكتلة:
fee ≥ BUNDLE_BASE + gas_price × gas_limit + byte_price × ⌈bytes / 1024⌉
bytes هي إثبات الاستدعاء مع غلاف المدخلات. ولا يسري جدول المستويات ولا حدّه المجاني على سلسلة كهذه. وتطلب المجموعة المعلّقة (pool) ما تطلبه الكتلة تمامًا، وترفض الاستدعاء الأرخص بوصفه FeeTooLow.
الحزم وإثبات التفويض تعلن حدودًا مثبّتة. يجب أن يعلن كل إثبات حزمة بالضبط قيمة bundle_gas_limit في genesis، وهي 20,479 (سقف المستوى 14)، وإلا رُفضت المعاملة بوصفها BundleGasLimit. وتعمل السلسلة 20، كما كل سلسلة منذ 17، بالتفويض المنفصل، فتحمل كل حزمة إثبات تفويض من المستوى 10 يجب أن يعلن 1,279 (AuthGasLimit). ولا يمثّل أيٌّ منهما رسمًا: فالتحويل أو الربط أو النشر ما زال يدفع حدّه الثابت من الجدول أعلاه. وتعلن المحفظة القيمتين بنفسها.
الأسعار تتحرك. في قسم gas للسلسلة 20 متحكّم dynamic، فيكون gas_price وbyte_price حالةً في دفتر الأستاذ، مُلتزَمًا بها في جذر الحالة. وفي كل كتلة، مرة واحدة بعد معاملاتها، يتحرك كل منهما بمقدار امتلاء الكتلة قياسًا إلى هدف:
price' = min(max_price, max(min_price, price + ⌊price × adjust_bps × (used − target) / (10,000 × target)⌋))
يُقيَّد used بضعف الهدف، فيكون adjust_bps أكبر حركة تستطيعها كتلة واحدة في أي من الاتجاهين. وmax_price هو سقف genesis؛ ولم يكن للسلسلتين 18 و19 سقف. ويتبع byte_price البايتات الدافعة في الكتلة (أدناه)؛ ويتبع gas_price مجموع الحدود المعلنة لاستدعاءاتها وinvokes فيها مضافًا إليه 20,479 عن كل حزمة.
قسم gas في chain 20 | القيمة |
|---|---|
gas_price وbyte_price عند التكوين الأولي (genesis) | 100 وحدة لكل غاز؛ 800 وحدة لكل KiB |
min_gas_price وmin_byte_price | 100؛ 800، فالأسعار الابتدائية هي نفسها الحدود الدنيا |
max_gas_price وmax_byte_price | 10,000؛ 80,000: الحدود القصوى، أي 100 ضعف الحدود الدنيا (جديد في chain 20) |
byte_load | paying (جديد في chain 20) |
target_block_bytes | 10,485,760، أي نصف السقف البالغ 20 MiB للكتلة |
target_block_gas | 262,144 |
adjust_bps | 1,250: بحد أقصى 12.5% في الكتلة الواحدة |
bundle_gas_limit | 20,479 |
metering | circuit |
الكتلة التي تقل عن أهدافها تخفض الأسعار، ولذلك تستقر الأسعار عند حدودها الدنيا في سلسلة هادئة. تعرض rand_getLimits قيمتي gas_price وbyte_price الحاليتين عند رأس السلسلة مع gas_metering: "circuit" وbundle_gas_limit وadjust_bps، ومنذ v0.6.8 أيضًا max_gas_price وmax_byte_price وbyte_load (تكون القيمة null في سلسلة لا تحتوي عليها)؛ أما rand_status فتعرض السعرين نفسيهما باسم gas_prices.
الحدود القصوى وحمل البايتات الدافع
كلاهما حقلان في التكوين الأولي ضمن gas.dynamic، وهما جديدان في v0.6.8 (التدقيق v6، POOL-2)، وchain 20 أول سلسلة تضبطهما. وهما يعالجان خللًا كان في السلسلتين 18 و19. ففيهما كان byte_price يتحرك مع الطول المرمَّز لكل معاملة، بينما لا يدفعه إلا الاستدعاء (call). سبع تحويلات (نحو 2.85 MB لكل منها، برسم ثابت) تملأ الكتلة إلى نحو 1.9 ضعف هدف البايتات وترفع السعر نحو 11% في كل كتلة، دون أي سقف: فنحو 65 كتلة من هذا النوع تبلغ به 1,000 ضعف سعره الابتدائي، ويصبح الاستدعاء حينئذ بنحو 1 RAND بدلًا من نحو 0.004.
- الحدود القصوى.
max_gas_priceوmax_byte_priceسعران لا يرفع المتحكم السعر فوقهما. تُحسب الخطوة بالطريقة نفسها ثم تُقيَّد (gas::next_price_capped)، فيبقى السعر عند سقفه خلال أي سلسلة من الكتل الممتلئة، وينخفض عند أول كتلة دون الهدف. ويجب أن يضبط التكوين الأولي كلًّا منهما عند سعره الابتدائي أو فوقه. وعند الحدود القصوى في chain 20، يكون للاستدعاء من المستوى 14 المذكور أعلاه، وهو 20,479 غازًا و1,319 KiB، حد أدنى قدره 0.3113 RAND، وهو أعلى ما يبلغه حده الأدنى. - حمل البايتات الدافع. في ظل
byte_load: "paying"لا تحتسبbytes_usedللكتلة إلا البايتات التي يُفرض عليها سعر البايت: إثبات كلCallوInvokeمع مغلف مدخلاته (gas::call_bytes)، ولا شيء من التحويل أو الربط (bond) أو الحرق (burn). فكتلة من التحويلات لا تحرك سعر البايت. وتحسبLedger::block_usageهذه القيمة لكل من المقترِح والنسخة المكررة (replica)، فيتفقان.
وفي ظل الحمل الدافع، فإن كتلة ممتلئة بالتحويلات لا تعطي الاستدعاء أي إشارة سعرية، ولذلك يحجز المقترِح الأمين أيضًا مساحة للاستدعاءات. هذه سياسة للعقدة وليست قاعدة صلاحية: ما دام استدعاء أو invoke في المجمّع (pool) ويدفع حده الأدنى الحالي، فإن المعاملات ذات الرسم الثابت لا تأخذ في المرحلة الأولى أكثر من ثلاثة أرباع بايتات الكتلة، ثم يُملأ ما تتركه الاستدعاءات من الربع الأخير بالتحويلات المؤجلة (Mempool).
ما تدفعه المحفظة مقابل الاستدعاء
يشغّل rand call البرنامج أولًا في المحاكي ويطبع gas: <exact> (declaring <limit>, tier <t>). وبشكل افتراضي يصرّح بالغاز الدقيق مقرَّبًا إلى الأعلى إلى مضاعف لـ 2^(tier − 2)؛ ويصرّح --gas-limit N بقيمة دقيقة، ويصرّح --gas-limit max بسقف الترويسة.
أمران يجعلان الرسم الافتراضي أعلى من الحد الأدنى:
- الإثبات يُسعَّر عند السقف. منذ chain 16 (
hardening_v6، وتشمل chain 20) أصبح إثبات الاستدعاء مرتبطًا بمعاملته نفسها، فيُحدَّد الرسم قبل وجود الإثبات. وتُسعِّر المحفظة سقف الإثبات في السلسلة، وهو 4 MiB، بدلًا من حجم الإثبات الفعلي (wallet::hardened_call_quote_bytes). وهذا لا يمكن أن يؤدي إلا إلى دفع زائد. - خطوتان سعريتان كهامش. تعرض
rand_getLimitsأسعار الرأس المثبَّت، ويستقر الاستدعاء بعد كتلتين أو ثلاث، ولذلك يضرب الافتراضي الحد الأدنى في(1 + adjust_bps / 10,000)²، أي 1.125² في chain 20.
وقد قيس في chain 18 بتاريخ 2026-09-30 أن أربعة استدعاءات كلفت بين 0.0057 و0.0075 RAND لكل منها بهذه الإعدادات الافتراضية (Example programs). ويتجاوز --fee القيمة الافتراضية؛ وتعيد المحفظة تسعير الإثبات الفعلي قبل الإرسال وترفض أي رسم دون حدها الأدنى.
أين يذهب الرسم
كله، الحد الأدنى والبقشيش (tip) معًا، يُقيَّد في rewards الخاصة بمقترِح الكتلة في سجل المدقِّقين، وهو المكان الوحيد في هذه السلسلة الذي يخزن مبلغًا بشكل مكشوف، مع استثناء واحد. ففي تكوين أولي يحتوي على tokens.burn_registration_fee (chain 20، كما في كل سلسلة منذ 15)، يُحرق registration_fee الخاص بـ RegisterToken أو RegisterBridgedToken ويحتفظ المقترِح بـ fee − registration_fee؛ وتحتسبه rand_getSupply ضمن registration_fees_burned. أما في chain 14، التي لم تكن تحتوي على هذا العلم، فكان المقترِح يحتفظ بالرسم كاملًا. ولا يُحرق شيء غير ذلك ولا يوجد أي تقسيم. ويحوّل المدقِّق المكافآت المتراكمة إلى مذكرة بالأمر rand-node withdraw (Staking). ورسم الخلية في invoke جزء من رسم حزمته (bundle) ويذهب إلى المقترِح مع بقية الرسم. ولا توجد مكافآت كتل ولا تضخم في chain 20: فالرسوم هي كامل دخل المدقِّق.
ثمة رسم واحد في chain 20 ليس بعملة RAND ولا يذهب إلى أي مدقِّق. فبموجب bridge.fees في التكوين الأولي (جديد في v0.6.8) يحتفظ الجسر بـ 10 bps من كل إيداع zUSD ومن كل حرق zUSD، مقرَّبة إلى الأسفل إلى وحدة إصدار كاملة من الضمان، في صورة مذكرة zUSD إلى عنوان خزينة يسميه التكوين الأولي. ويُقيَّد للمودِع المبلغ الإجمالي مطروحًا منه الرسم؛ ويُصدر الحرق amount − fee على السلسلة المصدر. وتبقى مذكرة الرسم مُصدَرة ومضمونة. انظر Bridge وRPL tokens.
يرتّب المجمّع (mempool) المرشحين بحسب ما يدفعونه فوق حدهم الأدنى لكل KiB، ثم بحسب الرسم (Mempool)، ولذلك لا يهم الرسم الأعلى إلا عند الازدحام. والتحويل نحو 2.85 MB (مقاسة في chain 18): إثبات حزمة بحجم 1.49 MB وإثبات تفويض بحجم 1.36 MB، فيتسع نحو سبعة منها لكتلة chain 20 البالغة 20 MiB. وكانت ملاحظة العقدة الكاملة نفسها أن سوق رسوم على البايتات، لا على رموز العمليات (opcodes)، هي ما ينبغي أن يصير إليه الحد الأدنى قبل mainnet-beta. وسعر البايت في chain 20 هو تلك السوق للاستدعاءات، ولا يتحرك إلا بالبايتات التي تدفع الاستدعاءات ثمنها؛ أما الحد الأدنى للتحويل فما زال ثابتًا.
لماذا الغاز سعر هنا لا حدّ
تقيس Ethereum كل رمز عملية لأن كل عقدة تنفّذ كل معاملة والتنفيذ مفتوح النهاية. أما في Rand فلا تنفّذ أي عقدة شيئًا: يشغّل المرسل البرنامج مرة واحدة خارج السلسلة ويسلّم السلسلة إثباتًا. وعمل العقدة في كل معاملة تسلسل ثابت: فك ترميز الحقول العامة، وتشغيل الفحوص المجانية، والتحقق من STARK واحد، وهذا التحقق يستغرق نحو 16 ms مع مفتاح متحقِّق (verifier key) دافئ مهما فعل البرنامج. وهكذا تتفكك وظائف الغاز الثلاث:
- الإنهاء يفرضه المستوى (tier): فالتشغيل الذي لا يتوقف خلال
2ᵗ − 1دورة لا يمكن إثباته أصلًا، ويتحمل المُثبِت (prover) الفشل. - تسعير العمل هو ما يفعله الحد الأدنى للغاز، منذ chain 18. فتكلفة الشبكة لكل تعليمة قريبة من الصفر، لكن عمل الإثبات لدى المرسل حقيقي، وكان حد أدنى ثابت يسعّر استدعاءً من مليون دورة كما يسعّر استدعاءً من ألف دورة. وحتى chain 18 كان الحد الأدنى ثابتًا لكل مستوى.
- تحجيم الكتلة ميزانية بايتات (
MAX_BLOCK_BYTES= 4 MiB افتراضيًا، وmax_block_bytesفي التكوين الأولي خلاف ذلك) وعدد معاملات (2,000).
تحفظان تذكرهما العقدة الكاملة بصراحة: البايتات تتفاوت فعلًا (فالإثبات يزيد على ميغابايت، فمساحة الكتلة، لا الحوسبة، هي المورد الشحيح)، ونمو الحالة، أي الشجرة ومجموعة المبطِلات (nullifiers) وبايتات البرامج المنشورة، لا يُسعَّر إلا برسم النشر لكل كلمة وبالأساس الثابت، وهذا كافٍ لـ testnet ويستحق المراجعة حين يصبح حجم الحالة مهمًا.
ما يدفعه المرسل بدلًا من ذلك: الإثبات
التكلفة المتغيرة الوحيدة هي إنتاج إثبات STARK، ولا يدفعها إلا جهاز المرسل. بحسب الأثر:
- المستوى (tier)
t ∈ {10, 12, 14, 16, 18, 20}(الاستدعاء فوق 14 مرفوض في السلسلة منذ v0.5.6؛ والحزمة (bundle) مثبَّتة على 14، ومنذ chain 17 تحمل بجانبها إثبات تفويض من المستوى 10، أي نحو 7 s إضافية): يُحشى جدول cpu إلى2ᵗصفًّا وتضاعف كل خطوة الأثر المحشو أربع مرات تقريبًا. وبالقياس على حاسوب التطوير المحمول:private_paymentعند المستوى 10 في نحو 7 s؛ وبرنامج حزمة الأصل المخفي (hidden-asset) الضيف عند المستوى 14 في نحو 100 s، أيًّا كان الأصل الذي ينقله. - الدورات المنفَّذة، لأنها تحدد المستوى: التعليمات التي شُغِّلت لا التي كُتبت.
- حجم البرنامج، بأثر ضعيف: صف ملخص (digest) واحد لكل أربع كلمات في بداية الأثر.
- حجم المدخل الخاص، على النحو نفسه.
- أي الجداول موجودة: جدول keccak أو sha256 لا يكلف حصة أعمدته إلا إذا استخدمه البرنامج الضيف.
- ملف FRI: 80 استعلامًا بدلًا من 27 يضاعف حجم الإثبات ثلاث مرات لكنه بالكاد يغيّر زمن الإثبات.
لا يعتمد الإثبات على المبالغ ولا على عدد المذكرات التي يملكها المرسل ولا على حجم السلسلة: فالعضوية تُثبت مقابل شجرة ذات عمق ثابت، ولذلك يكلف التحويل الشيء نفسه عند الكتلة العاشرة وعند الكتلة العشرة ملايين.
المرجع
| الثابت | القيمة |
|---|---|
BUNDLE_BASE | 1,000,000 وحدة |
BRIDGE_BURN_FEE | 10,000,000 وحدة (10 × BUNDLE_BASE) |
registration_fee (قسم tokens في genesis) | 1,000,000,000 وحدة على السلسلة 20، تُحرق (burn_registration_fee) |
DEPLOY_PER_WORD | 100,000 وحدة |
CALL_BASE, CALL_PER_TIER_STEP | 1,000,000؛ 100,000 وحدة؛ جدول المستويات لسلسلة لا تتضمن قسم gas |
GAS_PRICE_DEFAULT, BYTE_PRICE_DEFAULT | 100 وحدة لكل وحدة غاز؛ 800 وحدة لكل KiB. الأسعار الابتدائية للسلسلة 20 وحدّا السعر الأدنى فيها |
KECCAK_GAS, SHA256_GAS, POSEIDON2_ABSORB_GAS | 192؛ 64؛ 3 وحدات غاز لكل صف |
max_gas_price, max_byte_price (قسم gas.dynamic في genesis) | 10,000 وحدة لكل وحدة غاز؛ 80,000 وحدة لكل KiB على السلسلة 20؛ لا سقف عند غيابه (السلسلتان 18 و19) |
byte_load (قسم gas.dynamic في genesis) | paying على السلسلة 20: لا يحرّك byte_price إلا بايتات إثباتات الاستدعاء والاستدعاء المباشر (invoke) وبايتات المغلّفات؛ وعند غيابه، بايتات كل معاملة |
cell_fee (قسم program_state في genesis) | 10,000,000 وحدة (0.01 RAND) لكل خلية تُنشأ على السلسلة 20؛ بحد أقصى 1,000 RAND |
bundle_gas_limit (قسم gas في genesis) | 20,479 على السلسلة 20، gas_max(14, 0, 0)؛ ويعلن إثبات التفويض 1,279، gas_max(10, 0, 0) |
adjust_bps (قسم gas.dynamic في genesis) | 1,250 على السلسلة 20؛ ويجوز أن يحدد genesis قيمة من 1 إلى 5,000 |
MAX_PROGRAM_WORDS | 4,096، ما لم يحدد genesis القيمة max_program_words (بحد أقصى 65,535؛ وتحدد السلسلة 20 القيمة 65,535، ويرفض hardening_v6 أي برنامج يتجاوز 8,180 كلمة لا يستطيع أي استدعاء استيعابه) |
MAX_PROOF_BYTES | 2 MiB، ما لم يحدد genesis القيمة max_proof_bytes (4 MiB على السلسلة 20؛ و8 MiB على السلاسل من 13 إلى 15) |
MAX_BLOCK_BYTES, MAX_BLOCK_TXS | 4 MiB (ما لم يحدد genesis القيمة max_block_bytes؛ و20 MiB على السلسلة 20)، 2,000 |
| المستويات | 10، 12، 14، 16، 18، 20؛ الدورات ≤ 2ᵗ − 1 |
MAX_CALL_TIER | 14: يُرفض إثبات الاستدعاء الذي يتجاوزه عند القبول وفي الكتلة (منذ v0.5.6) |