> 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/canton-zk-evm/how-it-works.md).

# كيف يعمل

تتبّع كتلة Ostia واحدة من reth عبر الإثبات حتى اعتمادها في Canton.

كل تشغيل للباني ينشئ كتلة واحدة ويثبتها ويقدّمها. يقرر Canton ما إذا كانت تلك الكتلة ستصبح رأس السلسلة التالي. تُلتزم كتلة EVM والأرجل الخاصة بـ Canton التي سجّلها في المعاملة نفسها.

تصف هذه الصفحة الالتزام `a84e84e439a5cc669c0ae61facf7c8c995d9d564`. اقرأ ملف [التصميم](https://github.com/rome-protocol/canton-zk-evm/blob/a84e84e439a5cc669c0ae61facf7c8c995d9d564/docs/DESIGN.md).

```mermaid
flowchart TD
    W["معاملات EVM"] --> R["reth يبني عند الطلب"]
    R --> B["يقرأ الباني أرجل البوابة ويعثر على عقود Canton الخاصة بها"]
    B -->|"لا يمكن تسوية أحد الأرجل: استبعد معاملته وأعد البناء"| R
    B -->|"يمكن تسوية كل رجل"| P["ZisK يثبت الكتلة"]
    P --> A["تقدّم: كتلة، وإثبات، وأرجل في معاملة Canton واحدة"]
    A --> S["استدعاء خارجي: تتحقق الـ sidecars من الإثبات وحالة البوابة"]
    S --> D["يتحقق Daml من الرأس ويسوّي الأرجل"]
    D --> C["يُلتزم Canton الكتلة وأرجلها معًا"]
    C --> F["يُعلِّم reth الكتلة نهائية"]
```

## البناء على رأس Canton

ترسل المحافظ معاملات EVM إلى reth. يقوم المشغّل المزوَّد بإبقاء اكتشاف الأقران معطَّلًا. ينشئ reth كتلة عندما يطلب الباني واحدة.

يقرأ الباني أولاً العقد النشط `ZkChain` على Canton. ينقل رأس reth والكتلة الآمنة والكتلة النهائية إلى ذلك الرأس المُلتزَم. يختار المعاملات المعلَّقة بحسب السعر، مع الحفاظ على ترتيب nonce لكل مُرسِل والبقاء ضمن حد الغاز. ويطلب من reth البناء باستخدام تلك القائمة الصريحة من المعاملات.

معاملة EVM تتطلب إجراءً في Canton تستدعي البوابة. تسجّل البوابة رجلًا وتدمجه في تجزئة متراكمة للكتلة. يقرأ الباني أحداث البوابة بترتيب السجل ويعثر على عقود Canton المطلوبة لكل رجل.

إذا اختفى تخصيص، أو لم يقبل مستلم السحوبات، أو كان عقد مطلوب آخر مفقودًا، فيستبعد الباني المعاملة والمعاملات اللاحقة لذلك المُرسِل. يعيد reth إلى رأس Canton ويُعيد البناء. تحدث هذه الفحوصات قبل الإثبات. الـ [README الخاص بالمنشئ](https://github.com/rome-protocol/canton-zk-evm/blob/a84e84e439a5cc669c0ae61facf7c8c995d9d564/builder/README.md) يسرد الفحوصات الخاصة بكل رجل.

## أثبت الكتلة

يحفظ الباني الكتلة وشاهد تنفيذ reth. تجمع أداة الإدخال الكتلة والشاهد وgenesis في مدخلات المُثبِت. يشغّل ZisK الضيف، الذي يتحقق من صحة الكتلة وفق القواعد الثابتة للسلسلة.

يُرجع المُثبِت برهانًا ملفوفًا بحجم 1,344 بايت يلتزم بتجزئة الكتلة. يقدّم الباني `تقدُّم` مع الترويسة والمعاملات والبرهان والأرجل، ومع براهين الحساب والتخزين الخاصة بالبوابة عند جذر حالة الكتلة.

## التحقق والتسوية في معاملة واحدة

يشغّل كل مشارك مُصدِّق sidecar. يرسل الاستدعاء الخارجي في Canton الكتلة إلى sidecar ذلك المشارك لـ `التحقق`. يتحقق من البرهان، ومفتاح البرنامج المثبَّت وإصدار ZisK، وتجزئة الترويسة وجذر قائمة المعاملات.

يتحقق Daml من الإجابة مقابل `ZkChain`: يجب أن يكون الأصل هو الرأس الحالي، ويجب أن يكون الرقم هو التالي، ويجب أن يندرج حد الغاز والغاز المستخدم ضمن الحد الأقصى. يقارن Daml إجابات الـ sidecar؛ ولا يتحقق من برهان المعرفة الصفرية نفسه.

ثم يكتب Daml سطرًا لكل رجل من عقود Canton التي يذكرها. يأتي معرّف السحب و burner والمبلغ من الباني؛ وتربطها التجزئة المُثبتة بما سجلته الكتلة. الـ sidecar `الأرجل` تتحقق الدالة من براهين الحساب والتخزين الخاصة بالبوابة، وتجزئ تلك الأسطر بالترتيب وتقارن النتيجة بقيمة البوابة في الحالة المُثبتة. يجب أن تجتاز كتلة بلا أرجل الفحص نفسه بقائمة فارغة.

يسوّي Daml الأرجل بالترتيب وينشئ الـ `سجل الكتلة` والتالي `ZkChain`، ويلتزم Canton بهذه التغييرات معًا. إذا فشل فحص أو تسوية، فلن يُلتزم شيء. إن استهلاك عقد الحالة الوحيد في السلسلة يجعل Canton الجهة المخوَّلة بترتيب الكتل. انظر الـ [واجهة Daml](https://github.com/rome-protocol/canton-zk-evm/blob/a84e84e439a5cc669c0ae61facf7c8c995d9d564/daml/README.md) و [فحوصات sidecar](https://github.com/rome-protocol/canton-zk-evm/blob/a84e84e439a5cc669c0ae61facf7c8c995d9d564/sidecar/README.md).

## عندما يرفض Canton

بعد أن يلتزم Canton الكتلة، يعلّم الباني أنها نهائية في reth. إذا رفضها Canton، يعيد الباني reth إلى آخر كتلة التزم بها Canton ويرسل معاملات الكتلة المرفوضة إلى التجمع مرة أخرى. يتحقق التشغيل التالي من أرجلها مرة أخرى. تُستبعد الدفعة التي سُحب تخصيصها.

إذا فقد الباني ردّ الإرسال، فإنه يقرأ رأس Canton مرة أخرى لتحديد ما إذا كانت الكتلة قد التزمت. إذا فشل هذا القراءة أيضًا، فإنه يبلغ عن نتيجة غير معروفة ويترك reth كما هو. يبدأ التشغيل التالي من رأس Canton. توجد قواعد الاسترداد هذه في الـ [README الخاص بالمنشئ](https://github.com/rome-protocol/canton-zk-evm/blob/a84e84e439a5cc669c0ae61facf7c8c995d9d564/builder/README.md#what-one-run-does).


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.rome.builders/ar/canton-zk-evm/how-it-works.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
