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

البنية المعمارية

كيف تتكامل مكوّنات Rome معًا — تنفيذ EVM داخل برنامج Solana.

يُضمّن Rome مفسّرًا لشفرة EVM الثنائية داخل برنامج على السلسلة في Solana. يتواصل المستخدمون مع Rome Proxy عبر معيار Ethereum JSON-RPC، ويُرسل الوكيل معاملاتِهم مباشرةً إلى برنامج Rome EVM على Solana. لا توجد طبقة تنفيذ منفصلة للمزامنة — حالة EVM هي حالة Solana.

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

User to Rome Proxy to the Rome EVM program on Solana, with Hercules indexing back

المكوّنات

برنامج Rome EVM (على السلسلة)

جوهر Rome — برنامج Solana BPF يحتوي على مفسّر كامل لشفرة EVM الثنائية (نسخة فرعية من SputnikVM). وهو:

  • يستقبل معاملات EVM المُسلسلة كتعليمات في Solana

  • ينفّذ شيفرة Solidity الثنائية داخل بيئة تشغيل Solana

  • يُعيّن كل عنوان Ethereum ‏(H160) إلى PDA في Solana

  • يُوفّر precompiles للاتصال بـ Solana ‏(CPI، System، Helper، Withdraw) إلى جانب precompiles Ethereum القياسية

  • يخزّن حالة EVM (الأرصدة، nonce، الشفرة، التخزين) كبيانات حسابات Solana

Rome Proxy (خادم JSON-RPC)

خادم Ethereum JSON-RPC قياسي على المنفذ 9090 — نقطة الدخول للسلاسل العامة. يحوّل استدعاءات واجهة Ethereum إلى نشاط في Solana:

  • eth_sendRawTransaction → يُسلسل معاملة EVM → يرسل تعليمات إلى Solana

  • eth_call → يحاكي التنفيذ خارج السلسلة عبر محاكي Mollusk SVM

  • eth_estimateGas → يُحاكي لتقدير الغاز

  • eth_getBalance, eth_getCode, eth_getBlockByNumber، والإيصالات، والسجلات → تُقدَّم من الحالة المفهرسة

كما يوفّر امتدادات Rome: rome_emulateTx, rome_emulateRegRollup, rome_mintId, rome_buildInfo, rome_getResources، والمزيد.

Hercules (المفهرس)

يراقب برنامج Rome EVM على Solana ويُعيد بناء كتل متوافقة مع Ethereum — المعاملات، والإيصالات، والسجلات، وتغييرات الحالة — مدعومةً بـ PostgreSQL. على السلاسل العامة يعمل في وضع محاذاة الفتحة، بحيث يطابق رقم الكتلة فتحةً في Solana وتنتج الفتحة نفسها الكتلة نفسها على أي مفهرس. يقدّم الوكيل هذه الكتل إلى المحافظ ومستكشفي السلاسل.

الـ Precompiles

يُطبّق Rome الـ precompiles القياسية في Ethereum (ecrecover، SHA-256، RIPEMD-160، identity، modexp، عمليات منحنى BN254، blake2f) بدلالات مماثلة للشبكة الرئيسية، بالإضافة إلى precompiles غير EVM تصل إلى Solana: CpiProgram (0xFF…08، واستدعاء CPI عشوائي)، System (0xFF…07، اشتقاق PDA ومساعدات base58)، HelperProgram (0xFF…09، إنشاء ATA/PDA، وتحويلات SPL، والغاز ↔ lamports)، و Withdraw (0x42…16). راجع عناوين العقود للاطلاع على الجدول الكامل.

أوضاع التنفيذ

ينفّذ Rome معاملة EVM بإحدى طريقتين:

الذري (VmAt)

معاملة Solana واحدة. تُنفَّذ معاملة EVM كاملة ضمن ميزانية الحوسبة لمعاملة Solana واحدة (~1.4 مليون وحدة حوسبة). تُستخدم لمعظم العمليات — التحويلات، واستدعاءات العقود العادية، والمبادلات.

التكراري (VmIt)

للأعمال التي تتجاوز ميزانية معاملة واحدة. يُقسَّم التنفيذ عبر عدة معاملات Solana:

  1. تُنفّذ كل خطوة (معاملة Solana) أكبر عدد ممكن من تعليمات EVM مما يتّسع له مقدار الحوسبة المتاح لها — حجم الخطوة تكيفي، وليس ثابتًا

  2. تُسلسَل حالة VM بتنسيق Borsh إلى حساب StateHolder بين الخطوات

  3. تُقفل الحسابات بقفل TTL لبضع ثوانٍ أثناء التنفيذ

  4. تُستخدم للعمليات الثقيلة مثل اقتران BN254

تعيين الحسابات

يُعيَّن كل عنوان Ethereum حتمًا إلى PDA في Solana مشتق من معرّف السلسلة والعنوان تحت برنامج Rome EVM. يمتلك هذا الـ PDA رصيد الحساب (كحسابات SPL token)، وشيفرة العقد، وفتحات التخزين، والـ nonce — وكلها كبيانات حسابات Solana.

حسابات الحاوية

تُقيَّد معاملات Solana بـ 1,232 بايت، لكن معاملات EVM (وخاصة نشر العقود) يمكن أن تكون أكبر بكثير. يقوم Rome بتجهيز المعاملات الكبيرة داخل حسابات الحاوية: تُقسَّم المعاملة إلى أجزاء تُكتب بالتتابع في حاوية (حتى 80 كيلوبايت)، ثم تُجمَّع وتُنفَّذ على السلسلة. تتولى Rome SDK إدارة ذلك بشفافية.

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

لكل سلسلة رمز غاز خاص بها — أي رمز SPL. يقرأ تسعير الغاز مجمّع Meteora DAMM ‏(v1 أو v2، قابل للتهيئة) للتحويل بين رمز الغاز وSOL لرسوم معاملة Solana الأساسية.

ما التالي

آخر تحديث

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