ميزانية الحوسبة

كل معاملة على سولانا لديها ميزانية حوسبة تُقاس بوحدات الحوسبة (CU). يساعدك فهم تكاليف CU على تصميم عقود Rome بكفاءة.

نظرة عامة على الميزانية

الوضع
الحد الأقصى لـ CU
ملاحظات

ذري (VmAt)

~1,400,000 CU

معاملة سولانا واحدة

تكراري (VmIt)

غير محدود (متعدد المعاملات)

حوالي ~500 opcode لكل خطوة تكرار

كل معاملة على سولانا لديها ميزانية افتراضية قدرها 200,000 CU، قابلة للتمديد إلى حوالي 1.4 مليون CU عبر تعليمات ميزانية الحوسبة (تُضاف تلقائيًا بواسطة Rome SDK).

تقديرات تكلفة CU

عمليات EVM

العملية
CU التقريبية
ملاحظات

التحقق من التوقيع (ecrecover)

~5,000 CU

secp256k1 عبر نداء نظام سولانا

تحويل بسيط

~50,000-100,000 CU

تحديثات الرصيد فقط

تحويل ERC-20

~100,000-150,000 CU

يتضمن استدعاء precompile لـ SPL

نشر عقد (صغير)

~200,000-400,000 CU

يعتمد على حجم bytecode

كتابة التخزين (SSTORE)

~5,000-20,000 CU

وصول بارد مقابل وصول ساخن

عمليات CPI

العملية
CU التقريبية
ملاحظات

الحد الأدنى للتحميل الزائد لخطاف التحويل

100,000 CU

لكل تحويل

خطاف فرعي أصلي

50,000 CU

لكل خطاف سولانا أصلي

خطاف فرعي EVM

200,000 CU

لكل خطاف EVM

تحويل EVM موصى به مع الخطافات

800,000 CU

ميزانية آمنة للتحويلات المزودة بخطافات

عمليات Precompile

Precompile
CU التقريبية

ecrecover

~3,000-5,000 CU

SHA-256

~1,000 CU

BN254 ecAdd

~10,000 CU

BN254 ecMul

~40,000 CU

BN254 ecPairing

~200,000+ CU

تقنيات التحسين

1. استخدم Yul للمسارات الساخنة

يُنتج محسّن Solidity شيفرة معقولة، لكن Yul (الـ assembly المضمّن) يمكن أن يقلل CU بشكل ملحوظ للعمليات الحرجة:

2. خزّن اشتقاقات PDA مؤقتًا

اشتقاق PDA عبر find_program_address مكلف. خزّن PDAs المشتقة في تخزين العقد بدلًا من حسابها في كل استدعاء:

3. ثبّت معرّفات البرامج المعروفة

لا تقم بتحميل معرّفات البرامج من التخزين — استخدم ثوابت:

4. قلّل عدد الحسابات

كل حساب في معاملة على سولانا يضيف عبئًا إضافيًا على CU. قلّل عدد الحسابات عبر:

  • تجميع العمليات التي تشترك في الحسابات

  • استخدام عدد أقل من الحسابات الوسيطة

  • تجنب عمليات التحقق المكررة من إنشاء ATA

5. استخدم إعدادات المُحسّن

قياس استهلاك CU

استخدم eth_estimateGas لقياس CU قبل الإرسال:

أو عبر ethers.js:

ما التالي

آخر تحديث

هل كان هذا مفيدا؟