نشر عقود 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"إعداد الشبكة
هادريان (شبكة التطوير)
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
المعاملة منخفضة التسعير
سعر الغاز أقل من الحد الأدنى
زد سعر الغاز في المعاملة
ما التالي
افتح عقدك لمستخدمي Solana — اسمح لمستخدمي محافظ Solana باستدعاء ما نشرته للتو
استدعِ Solana من EVM — استخدم عمليات التجميع المسبقة لـ CPI للتفاعل مع برامج Solana
التحقق من العقود — انشر شفرتك المصدرية في مستكشف الكتل
آخر تحديث
هل كان هذا مفيدا؟