メタマスクethers.jsを使用してコントラクトファクトリを取得する際に、ライブラリとして追加しても「contract has no references to the following libraries」というエラーが発生する
メタマスク契約工場エラー:"ミッシングリンク"
スマート・コントラクトをデプロイするとき、特にサードパーティーのライブラリを統合するとき、デプロイの問題にしばしば遭遇します。よくある問題は、ハードハットが、コントラクト・リンカーの設定にライブラリーの依存関係を追加で含める必要があるエラーに遭遇する場合です。
この記事では、Hardhatを介したMetamaskとethers.jsの統合について詳しく説明し、"Contract is missing links "エラーが発生する原因を探り、この問題を解決するための手順を紹介します。
契約リンカーの設定について
外部ライブラリを使用してスマート・コントラクトをデプロイする場合、リンカー設定は、必要な依存関係がすべて含まれていることを保証する上で重要な役割を果たします。コントラクト・リンカーの設定は、コントラクト・バイナリにリンクされる依存関係を決定します。
メタマスクでは --ネットワーク
フラグを使用してネットワークを指定し、特定のライブラリ依存性を要求する。例えば
npx hardhat network metamask --network solana dev --proxy
「契約にはリンクが含まれていません」エラー
Metamaskが以下のエラーメッセージに遭遇した場合:
契約には以下のライブラリのリンクは含まれていません:[library1], [library2]...
これは、ハードハットがコントラクトで必要とされる依存関係を判断できないことを意味する。これは、以下のようなさまざまな理由で起こりうる:
- 契約書のリンカー構成が不完全または不正確である。
- ライブラリの依存関係が
--ネットワーク
の旗を掲げている。
- 外部ライブラリは、追加のコンパイルステップ(Webpack設定ファイルなど)を必要とします。
エラー解決
この問題を解決するには、以下の手順に従ってください:
- コントラクト・リンカーの設定を確認する:コントラクト・リンカーのコンフィギュレーションで、必要なライブラリーの依存関係がすべて正確に指定されていることを確認してください。
--ネットワーク
の旗を掲げている。
- を使用する。
--プロキシ
フラグ:各ネットワークで正しいプロキシURLを使用していることを確認してください。
構成例
以下は完全なコンフィギュレーションの例である:
const hardhatConfig = {.
// あなたのMetaMaskアカウントとネットワーク(例:solana)
のネットワークがある:{
ソラナ: {
name:「ソラナ」、
ホスト: '
// プロキシのURLは --プロキシ
フラグ
プロキシを使用します:{
// カスタムWebpack設定ファイルによるプロキシ設定例
https: (アドレス) => ${addr}.unpkg.com
,
},
},
},
};
- ライブラリの依存関係をチェックする:を使用して、すべての必要なライブラリが正しく指定されていることを確認します。
--ネットワーク
フラグを設定し、契約書のリンカー・コンフィギュレーションに含める。
その他のヒント
- を使用する。
webpack.config.js
ファイルを使用して、Webpack をプロジェクト用に設定します。
- カスタムプロキシ設定やビルドステップが正しく実装されていることを確認する。
これらのガイドラインに従うことで、"Contract is missing links "エラーを解決し、Metamaskとethers.jsを使用して外部ライブラリを使用したスマートコントラクトのデプロイを成功させることができるはずです。