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

القيود

الحدود عند البناء على Rome EVM — حجم معاملة Solana، وميزانية CU بحوالي 1.4 مليون، وحدود الحسابات، وبنية التخزين، وكيف يتجاوز Rome كل منها.

الحدود والقيود المهمة عند البناء على Rome EVM. فهم هذه القيود يساعدك على تصميم عقود تعمل بشكل موثوق.

قيود معاملات Solana

القيد
القيمة
الأثر

حجم المعاملة

1,232 بايت

تُقسَّم معاملات EVM الكبيرة عبر حسابات الحامل (بشكل شفاف)

وحدات الحوسبة لكل معاملة

~1.4 مليون وحدة حوسبة

العمليات التي تتجاوز هذا تستخدم النمط التكراري

عدد الحسابات لكل معاملة (بدون ALT)

28

استخدم جداول البحث عن العناوين للمزيد

عدد الحسابات لكل معاملة (مع ALT)

64+

يُستخدم ALT تلقائيًا عند وجود أكثر من 28 حسابًا

الحد الأقصى لحجم الحامل

80 كيلوبايت

الحد الأقصى لحجم RLP لمعاملة EVM واحدة

قيود تنفيذ EVM

القيد
القيمة
ملاحظات

خانات تخزين العقد

256 لكل حساب تخزين

يمكن إنشاء عدة حسابات تخزين لكل عقد

العمليات البرمجية لكل تكرار

تكيُّفي

تُحزَّم ضمن ميزانية وحدات الحوسبة لكل معاملة Solana (VmIt)

مدة بقاء قفل الحساب

3-4 ثوانٍ

أثناء التنفيذ التكراري

محافظ الخزانة

64

محافظ مجمع الرسوم

حد حجم العقد

24 كيلوبايت

مثل Ethereum (EIP-170، 24,576 بايت)

قيود CPI

القيد
القيمة
ملاحظات

عمق CPI

4 مستويات كحد أقصى

حد عمق CPI في Solana

عدد الحسابات لكل استدعاء CPI

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

عمليًا حوالي 20 حسابًا لكل CPI

عمق CPI + Transfer Hook

يستخدم مستويات CPI

قد تتجاوز تحويلات الـ hooks من داخل CPI العمق

يُعد عمق CPI القيد الأكثر أهمية. يستهلك Rome EVM مستوى CPI واحدًا عندما يستدعي Solana برنامج Rome. إذا كان عقد Solidity الخاص بك يستدعي بعد ذلك برنامج Solana آخر عبر CPI، فذلك هو المستوى 2. وإذا استدعى ذلك البرنامج برنامجًا آخر، فذلك هو المستوى 3. لديك 4 مستويات كحد أقصى إجمالًا.

قيود Token-2022 Transfer Hook

القيد
الأثر

hook واحد لكل mint

يحتوي mint في Token-2022 على خانة transfer-hook واحدة

transfer_checked فقط

لا تعمل الـ hooks على transfer. تستخدم عمليات جسر Rome transfer_checked

السكّ/الحرق غير مربوطين بالـ hooks

تتم السيطرة عليهما عبر سلطة السكّ، وليس عبر الـ hooks

قيود الغاز والتسعير

القيد
ملاحظات

مصدر تسعير الغاز

مجمع Meteora DAMM، الإصدار 1 أو 2 (رمز الغاز SPL)

معامل مضاعفة سعر الغاز

قابل للتكوين لكل وكيل (gas_price_mul)

الحد الأدنى لسعر الغاز

يُحدَّد بواسطة إعدادات الوكيل

تقدير الغاز

يُجرى خارج السلسلة عبر محاكي Mollusk قبل الإرسال

قيود خاصة بالشبكة

البيئة
معرّف السلسلة
معرّف برنامج rome-evm

محلي

1001

حزمة التطوير المحلية

Hadrian (devnet)

200010

RPTWwELXAY4KC9ZPHhaxp7Sq1hHtU3HNEgLbSegCcWf

Martius (testnet)

121214

RomeTaTNPJNBxtB3Wong9geVTtkEFJfUqgktQVq3iSX

قيود الـ Precompile

العمليات المسبقة
القيد

Modexp (0x05)

معطّل — يمكن تفعيله عبر feature flag

BN254 ecPairing (0x08)

تكلفة عالية لوحدات الحوسبة — تتطلب عادةً النمط التكراري (~200 ألف وحدة حوسبة)

CPI precompile (0xFF...08)

يجب التصريح بالحسابات مسبقًا في معاملة Solana

قيود Oracle

القيد
القيمة

الحد الأقصى الافتراضي للقدم

60 ثانية

بيانات الجولات التاريخية

غير مدعوم — getRoundData(roundId) يُرجِع خطأ

Switchboard EMA

غير مدعوم — latestEMAData() يُرجِع خطأ على SwitchboardV3

إزاحات المحلل

تم التحقق منه تجريبيًا — يجب إعادة التحقق قبل إعادة النشر

توصيات التصميم

  1. اجعل عمق CPI منخفضًا. صمّم العقود لتقليل التداخل. إذا كنت تستدعي Jupiter الذي يستدعي Raydium الذي يستدعي SPL Token، فأنت عند 3 مستويات — وهذا قريب جدًا من الحد.

  2. فضّل النمط الذرّي. صمّم العمليات لتناسب حوالي 1.4 مليون وحدة حوسبة. يضيف النمط التكراري تأخيرًا (أقفال لمدة 3-4 ثوانٍ) وتعقيدًا.

  3. صرّح بالحسابات مسبقًا. يجب أن تكون جميع حسابات Solana التي تتأثر بـ CPI معروفة وقت إنشاء المعاملة. لا يمكن اكتشاف الحسابات ديناميكيًا داخل استدعاء CPI.

  4. استخدم transfer_checked. إذا كنت تبني أي شيء يتعامل مع رموز Token-2022، فاحرص دائمًا على استخدام transfer_checked لضمان عمل الـ hooks.

  5. اختبر استهلاك وحدات الحوسبة. قِس وحدات الحوسبة الحقيقية في Solana من إيصال المعاملة (computeUnitsConsumed) — EVM gasUsed ليس بديلًا دقيقًا لوحدات الحوسبة في Solana. حسّن المسارات الساخنة باستخدام Yul.

ما التالي

آخر تحديث

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