Akan keren jika menunggu eters.getContract("Bar") ketika dijalankan dalam mode hardhat forking akan membuat hardhat-deploy tahu bahwa --network hardhat sebenarnya juga dapat mempertimbangkan penerapan/ dari jaringan apa pun yang dikonfigurasi dalam forking
Merujuk masalah ini https://github.com/wighawag/hardhat-deploy-ethers/issues/6
diimplementasikan di 0.7.0-beta.29
melalui hardhat node --fork ... --fork-deployments <networkName>
Menyalin dari obrolan kami untuk referensi:
Apakah ini eksklusif untuk jaringan yang Anda lewati --fork-deployments ? Idealnya bagi saya itu akan melakukan ini:
Dengan cara ini pengujian dapat menggabungkan instance kontrak bercabang dari mainnet + yang diejek yang mungkin hanya ingin Anda terapkan ke jaringan hardhat
ia bekerja dengan menyalin penerapan dari rantai ke localhost
jadi skrip penerapan Anda dapat memutuskan untuk mengganti penerapan jika diinginkan
ah oke keren. bagaimana cara mengetahui dari jaringan mana untuk menyalin penyebaran? Apakah itu mengurai forking.url
?
Saya menggunakan hardhat network
dalam memori forking dan saya tidak memiliki instance hardhat node
berjalan selama pengujian saya. Apakah ini juga berfungsi untuk pengujian menggunakan forking pada jaringan hardhat dalam memori?
ha tidak, poin bagus, ini hanya param untuk tugas simpul.
Saya harus dapat menambahkannya ke tugas pengujian. pembukaan kembali
re 1. : argumen ke param adalah nama jaringan yang akan disalin
Sebenarnya @gitpusha apakah Anda memiliki contoh repo tentang bagaimana ini diatur karena memikirkannya mungkin perlu beberapa perubahan tentang cara menanganinya.
saat ini dengan jaringan memori, tidak ada fasilitas untuk memiliki info kontrak yang telah digunakan sebelumnya
Saya mungkin dapat menambahkan param serupa tetapi perlu berpikir lebih banyak
sebenarnya Anda harus dapat menggunakan konfigurasi penyebaran eksternal:
sesuatu seperti :
hardhat.config.js
module.exports = {
...
external: {
deployments: {
hardhat: ['deployments/mainnet'],
},
},
}
sebenarnya Anda harus dapat menggunakan konfigurasi penyebaran eksternal
Itu akan manis.
hardhat: ['deployments/mainnet']
Apakah alat memahami bahwa pada hardhat
in maka harus melihat keduanya ke deployments/mainnet
serta deployments/hardhat
? Jika demikian, penerapan mana yang didahulukan? Saya ingin deployments/mainnet
didahulukan jika ada tumpang tindih antar kontrak, karena saya mengonfigurasinya secara eksplisit.
Juga, apakah direktori deployments/hardhat
akan diperhitungkan secara default ?
Berikut ini adalah contoh repo .
Saya tidak yakin seberapa berguna fitur ini, karena Anda selalu dapat menggunakan
await hre.ethers.getContractAt(abi, address)
di forkmode
sebagai gantinya untuk mengakses instance yang diterapkan dari jaringan tertentu.
Jadi itu benar-benar hanya bagus untuk dimiliki.
Saya mencoba saran yang saya posting di atas dan tampaknya berfungsi dengan baik.
Deployment yang ditentukan di eksternal tidak akan didahulukan tetapi itu seharusnya tidak menjadi masalah karena node secara default mengatur ulang kontrak di deployment/hardhat dan jadi kecuali jika Anda memaksa pemindahan kontrak yang sudah dikerahkan, Anda akan mendapatkannya dari deployment/mainnet
Saya akan menutup masalah tetapi jika Anda memiliki masalah jangan ragu untuk membuka kembali