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

نشر عقود Solidity

انشر عقود Solidity الذكية على Solana باستخدام Hardhat أو Foundry — إعداد شبكة Rome، والحسابات المموّلة، والنشر خطوة بخطوة.

يشرح هذا الدليل كيفية نشر عقود Solidity الذكية على Rome EVM باستخدام Hardhat وFoundry.

المتطلبات المسبقة

  • تم تثبيت Node.js v22.13+ (Hardhat) أو Foundry

  • عنوان Rome EVM ممول (راجع البدء السريع)

  • مفتاحك الخاص مُصدَّر كمتغير بيئي

export PRIVATE_KEY="0xYOUR_PRIVATE_KEY"

إعداد الشبكة

الشبكة
عنوان URL الخاص بـ RPC
معرّف السلسلة
مستكشف

هادريان (شبكة التطوير)

https://hadrian.testnet.romeprotocol.xyz/

200010

via-hadrian.testnet.romeprotocol.xyz

مارتيوس (شبكة الاختبار)

https://martius.testnet.romeprotocol.xyz/

121214

via-martius.testnet.romeprotocol.xyz

روبيكون (الشبكة الرئيسية)

https://rubicon.mainnet.romeprotocol.xyz/

7531

via-rubicon.mainnet.romeprotocol.xyz

الغاز هو USDC على كل شبكة. على شبكات الاختبار تحصل عليه عبر جسر test USDC أو عبر تغليفه من محفظة Solana devnet (الصنابير); وعلى Rubicon عبر جسر USDC من Ethereum باستخدام جسر Rome. انشر إلى Rubicon باستخدام نفس المخرجات التي اختبرتها على Hadrian — يختلف فقط معرّف السلسلة وعناوين الغلاف.

هاردهات

الإعداد

mkdir my-rome-project && cd my-rome-project
npx hardhat --init

اقبل القيم الافتراضية (Hardhat 3، الدليل الحالي، قالب TypeScript + viem)؛ سيتم تثبيت الاعتماديات تلقائيًا.

hardhat.config.ts

configVariable("PRIVATE_KEY") يُحلّ من البيئة (أو من مخزن المفاتيح المشفّر — npx hardhat keystore set PRIVATE_KEY).

النشر

التحقق على مستكشف الكتل

يحتاج إلى إعدادات التحقق من Sourcify من التحقق من العقود في hardhat.config.ts.

فاوندري

الإعداد

النشر

استدعاء العقد المنشور

استخدام حزمة Rome Solidity SDK

بالنسبة للعقود التي تتفاعل مع برامج Solana، استخدم الواجهات من المستودع العام rome-solidity . يتم تثبيته من GitHub، وليس من npm:

العقود بخلاف interface.sol والواجهات الخاصة بالأوراكل (مثل أغلفة ERC-20 والمصنع، على سبيل المثال) تستورد OpenZeppelin. مع npm يأتي ذلك كاعتماد. ومع Foundry، شغّل أيضًا forge install OpenZeppelin/openzeppelin-contracts وأضف إعادة التعيين @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/.

مع npm، تُثبَّت الحزمة باسم @rome-protocol/rome-solidity، لذلك يتم حل الاستيراد أدناه من node_modules. مع Foundry، تجعل إعادة التعيين الاستيراد نفسه يُحلّ من lib/rome-solidity.

انقل بروتوكولًا قائمًا

يمكن نشر أي عقد Solidity على Rome دون تعديل — عقد امتثال، أو بروتوكول DeFi، أو تطبيق قائم ومحصّن. فيما يلي مثالان إنتاجيان يمكنك تفريعهما ونشرهما باستخدام نفس تدفق Hardhat / Foundry أعلاه:

  • compound-on-rome-comet — النسخة المرجعية من Compound v3 (Comet)، باستخدام Foundry القياسي.

  • rome-aave-v3 — النسخة المرجعية من Aave v3.

كلاهما يكتسب تنفيذ Solana وقابلية التركيب عبر CPI دون أي تغييرات على العقد.

قيود النشر

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

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

24 كيلوبايت

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

حد حجم المعاملة

80 كيلوبايت لكل حامل

يتم تقسيم عمليات النشر الكبيرة عبر حسابات الحامل تلقائيًا

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

~1.4 مليون وحدة حسابية (atomic)

استخدم النمط التكراري للعقود الثقيلة

إصدار Solidity

يوصى بالإصدار 0.8.28

الإصدارات الأقدم تعمل، لكن 0.8.28 يطابق SDK

الأخطاء الشائعة

الخطأ
السبب
الإصلاح

الأموال غير كافية للغاز

عنوان EVM لا يحتوي على رمز غاز

شبكات الاختبار: لفّ الغاز عبر تطبيق Rome (راجع البدء السريع؛ وعلى Rubicon: جسّر USDC باستخدام جسر Rome

nonce too low

nonce قديم في المحفظة

أعد تعيين حساب MetaMask أو حدّد nonce يدويًا

execution reverted

فشل منطق العقد

استكشف الأخطاء باستخدام eth_call أو forge test --fork-url

المعاملة منخفضة التسعير

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

زد سعر الغاز في المعاملة

ما التالي

آخر تحديث

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