> For the complete documentation index, see [llms.txt](https://docs.rome.builders/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rome.builders/ar/almfahym-alasasyh/constraints.md).

# القيود

الحدود والقيود المهمة عند البناء على 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 مستويات كحد أقصى إجمالًا.

```
المستوى 0: Solana Runtime → برنامج Rome EVM
المستوى 1: برنامج Rome EVM → هدف CPI الخاص بك (مثل Jupiter)
المستوى 2: Jupiter → برنامج آخر (مثل Raydium)
المستوى 3: Raydium → SPL Token (العمق الأقصى)
```

## قيود 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.

## ما التالي

* [ميزانية الحوسبة](/ar/almfahym-alasasyh/compute-budget.md) — تكاليف مفصلة لوحدات الحوسبة لكل عملية
* [التشغيل البيني للرموز](/ar/almfahym-alasasyh/token-interop.md) — نموذج الجسر بين ERC-20 ↔ SPL


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.rome.builders/ar/almfahym-alasasyh/constraints.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
