For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

تكاليف وحدات الحوسبة (CU) في Solana لعمليات Rome EVM — الميزانيات الذرّية مقابل التكرارية وكيفية تصميم عقود Solidity فعّالة في استخدام CU.

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

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

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

ذرّي (VmAt)

~1,400,000 CU

معاملة Solana واحدة

تكراري (VmIt)

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

شيفرات تشغيل/خطوة تكيفية — موزعة وفق ميزانية CU لكل معاملة

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

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

عمليات EVM

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

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

~5,000 CU

secp256k1 عبر استدعاء نظام Solana

تحويل بسيط

~50,000-100,000 CU

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

تحويل ERC-20

~100,000-150,000 CU

يشمل استدعاء precompile الخاص بـ SPL

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

~200,000-400,000 CU

يعتمد على حجم الشفرة البايتية

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

~5,000-20,000 CU

الوصول البارد مقابل الدافئ

عمليات ما قبل التجميع

ما قبل التجميع
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 (التجميع المضمّن) يمكن أن يقلل CU بشكل كبير للعمليات الحرجة:

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

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

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

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

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

كل حساب في معاملة Solana يضيف كلفة CU إضافية. قلّل عدد الحسابات عبر:

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

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

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

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

ابنِ باستخدام npx hardhat compile --build-profile production.

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

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

أو عبر ethers.js:

ما التالي

  • القيود — القائمة الكاملة للحدود والقيود

آخر تحديث

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