سيكون من الرائع أن تنتظر ethers.getContract ("Bar") عند تشغيله في وضع تفرع hardhat ، مما يتيح للنشر الثابت معرفة أن - يمكن أن تأخذ الشبكة الصلبة في الاعتبار أيضًا عمليات النشر / من أي شبكة تم تكوينها في forking
الرجوع إلى هذه المشكلة https://github.com/wighawag/hardhat-deploy-ethers/issues/6
تم تنفيذه في 0.7.0-beta.29
عبر hardhat node --fork ... --fork-deployments <networkName>
النسخ من محادثتنا كمرجع:
هل هي حصرية للشبكة التي تقوم بتمريرها باستخدام --Fork-النشرات؟ من الناحية المثالية بالنسبة لي ، سيفعل هذا:
بهذه الطريقة يمكن أن تمزج الاختبارات بين مثيلات العقد المتشعبة من mainnet + السخرية منها والتي قد ترغب فقط في نشرها على شبكة hardhat
يعمل عن طريق نسخ عمليات النشر من السلسلة إلى localhost
لذلك يمكن أن يقرر نص النشر الخاص بك تجاوز النشر إذا رغبوا في ذلك
آه طيب رائع. كيف تعرف الشبكة التي سيتم نسخ عمليات النشر منها؟ هل يقوم بتحليل forking.url
؟
أنا أستخدم hardhat network
in-memory forking وليس لدي مثيل hardhat node
قيد التشغيل أثناء اختباراتي. هل يعمل هذا أيضًا مع الاختبارات التي تستخدم التقسيم على شبكة صلبة في الذاكرة؟
هكتار لا ، نقطة جيدة ، هذه ليست سوى معلمة لمهمة العقدة.
يجب أن أكون قادرًا على إضافته إلى مهمة الاختبار. إعادة الفتح
إعادة 1.: الوسيطة إلى param هو اسم الشبكة للنسخ منها
في الواقع gitpusha هل لديك مثال الريبو حول كيفية إعداد هذا لأن التفكير فيه قد يحتاج إلى بعض التغييرات حول كيفية التعامل مع الأشياء.
حاليًا مع شبكة الذاكرة ، لا توجد وسيلة للحصول على معلومات العقد المنشورة مسبقًا
قد أكون قادرًا على إضافة معلمة مماثلة ولكني بحاجة إلى التفكير أكثر
في الواقع ، يجب أن تكون قادرًا على استخدام تهيئة عمليات النشر الخارجية:
شيء مثل :
hardhat.config.js
module.exports = {
...
external: {
deployments: {
hardhat: ['deployments/mainnet'],
},
},
}
في الواقع ، يجب أن تكون قادرًا على استخدام تكوين عمليات النشر الخارجية
سيكون ذلك حلو.
hardhat: ['deployments/mainnet']
هل تدرك الأداة أنه في hardhat
في يجب أن ينظر إلى كل من deployments/mainnet
وكذلك deployments/hardhat
؟ إذا كان الأمر كذلك ، فما هي عمليات النشر التي لها الأسبقية؟ أرغب في إعطاء الأسبقية لـ deployments/mainnet
إذا كان هناك تداخلات بين العقود ، لأنني قمت بتكوينها بشكل صريح.
أيضًا ، هل سيتم وضع الدليل deployments/hardhat
في الاعتبار افتراضيًا؟
هنا مثال الريبو .
لست متأكدًا من مدى فائدة هذه الميزة ، حيث يمكنك دائمًا استخدامها فقط
await hre.ethers.getContractAt(abi, address)
في forkmode
بدلاً من ذلك للوصول إلى المثيلات المنشورة من شبكة معينة.
لذا فهو حقًا مجرد شيء جميل.
لقد جربت الاقتراح الذي نشرته أعلاه ويبدو أنه يعمل بشكل جيد.
عمليات النشر المحددة في الخارج لن تكون لها الأسبقية ولكن لا ينبغي أن تكون هذه مشكلة كعقدة وفقًا لعقد إعادة التعيين الافتراضي في عمليات النشر / hardhat وما لم تقم بفرض إعادة نشر عقد تم نشره بالفعل ، فستحصل على واحد من عمليات النشر / mainnet
سأغلق المشكلة ولكن إذا كانت لديك مشكلة فلا تتردد في إعادة فتحها