hardhat forkingモードで実行されたときにethers.getContract( "Bar")を待機すると、hardhat-deployに、-networkhardhatが実際にデプロイメントを考慮に入れることができることを通知するのはクールです/フォークで構成されているネットワークから
この問題を参照するhttps://github.com/wighawag/hardhat-deploy-ethers/issues/6
0.7.0-beta.29で実装
hardhat node --fork ... --fork-deployments <networkName>
経由
参考のためにチャットからコピー:
--fork-deploymentsで渡すネットワーク専用ですか? 私にとって理想的にはこれを行うでしょう:
このようにして、テストでは、メインネットからフォークされたコントラクトインスタンスと、ハードハットネットワークにのみデプロイしたいモックされたコントラクトインスタンスを混在させることができます。
デプロイメントをチェーンからlocalhost
コピーすることで機能します
したがって、デプロイスクリプトは、必要に応じてデプロイをオーバーライドすることを決定できます。
ああ、かっこいい。 展開をコピーするネットワークをどのように知るのですか? forking.url
解析しますか?
hardhat network
のメモリ内フォークを使用していますが、テスト中にhardhat node
インスタンスを実行していません。 これは、メモリ内のヘルメットネットワークでフォークを使用するテストでも機能しますか?
いいえ、良い点です。これはノードタスクのパラメータにすぎません。
テストタスクに追加できるはずです。 再開
re 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
、特定のネットワークからデプロイされたインスタンスにアクセスします。
だから、それは本当に持っているだけでいいです。
上に投稿した提案を試してみましたが、うまくいくようです。
外部で指定されたデプロイメントは優先されませんが、デフォルトではデプロイメント/ハードハットの契約をリセットするため、ノードとして問題になることはありません。したがって、すでにデプロイされたコントラクトの再デプロイメントを強制しない限り、デプロイメント/メインネットから取得します。
問題をクローズしますが、問題が発生した場合は、お気軽に再開してください