메타마스크: ethers.js를 사용하여 컨트랙트 팩토리를 가져올 때 라이브러리로 추가한 후에도 "컨트랙트에 다음 라이브러리에 대한 참조가 없습니다"라는 오류가 발생합니다.
Metamask Contract Factory Error: “Missing Links”
When deploying your smart contracts, especially when integrating third-party libraries, you often encounter deployment issues. A common issue is when hardhat encounters errors that require additional library dependencies to be included in the contract linker configuration.
In this article, we’ll dive into the specifics of Metamask and ethers.js integrations via Hardhat, explore why the “Contract is missing links” error occurs, and provide steps to resolve this issue.
About Contract Linker Configuration
When deploying a smart contract with external libraries, the linker configuration plays a crucial role in ensuring that all required dependencies are included. The contract linker configuration determines which dependencies are linked into the contract binary.
In Metamask, you can use the --network
flag to specify a network and then request specific library dependencies. For example:
npx hardhat network metamask --network solana dev --proxy
“Contract does not contain links” error
When Metamask encounters the following error message:
Contract does not contain links for the following libraries: [library1], [library2]...
it means that hardhat is unable to determine which dependencies are required by the contract. This can happen for various reasons, such as:
- The contract’s linker configuration is incomplete or incorrect.
- A library dependency is not specified correctly using the
--network
flag.
- An external library requires additional compilation steps (e.g. a Webpack configuration file).
Error Resolution
To resolve this issue, follow these steps:
- Check your contract linker configuration: Verify that your contract linker configuration accurately specifies all required library dependencies using the
--network
flag.
- Use the
--proxy
flag correctly: Make sure you use the correct proxy URL for each network.
Example Configuration
Here is an example of a complete configuration:
const hardhatConfig = {
// Your MetaMask account and network (e.g. solana)
networks: {
solana: {
name: 'solana',
host: '
// Specify the proxy URL using the --proxy
flag
proxy: {
// Example proxy configuration with a custom Webpack configuration file
https: (addr) => ${addr}.unpkg.com
,
},
},
},
};
- Check your library dependencies: Make sure all required libraries are specified correctly using the
--network
flag and included in your contract’s linker configuration.
Additional tips
- Use a
webpack.config.js
file to configure Webpack for your project.
- Verify that any custom proxy configurations or build steps are implemented correctly.
By following these guidelines, you should be able to resolve the “Contract is missing links” error and successfully deploy your smart contracts with external libraries using Metamask and ethers.js.