Hardhat Error – How to Fix HardhatError: HH700: Artifact for Contract Not Found

errorhardhathardhat-deploysolidity

I keep getting this error with my code, I've referred to another article about a similar issue with 'Greeter.sol' but that doesn't seem to be my problem.

This is my code for the .sol file:

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract Btc is ERC20, Ownable {
    constructor() ERC20("Dogecoin", "DOGE"){}

    function mint(address to, uint256 amount) public payable{
        _mint(to, amount);
    }

    receive() external payable{}
}

and the following is the error that I keep getting :

HardhatError: HH700: Artifact for contract "Dogecoin" not found.
at Artifacts._handleWrongArtifactForContractName (/home/muskaan/moti-milo/smart-contract/node_modules/hardhat/src/internal/artifacts.ts:478:11)
at Artifacts._getArtifactPathFromFiles (/home/muskaan/moti-milo/smart-contract/node_modules/hardhat/src/internal/artifacts.ts:593:19)
at Artifacts._getArtifactPath (/home/muskaan/moti-milo/smart-contract/node_modules/hardhat/src/internal/artifacts.ts:275:17)
at Artifacts.readArtifact (/home/muskaan/moti-milo/smart-contract/node_modules/hardhat/src/internal/artifacts.ts:58:26)
at getContractFactory (/home/muskaan/moti-milo/smart-contract/node_modules/@nomiclabs/hardhat-ethers/src/internal/helpers.ts:99:22)
at main (/home/muskaan/moti-milo/smart-contract/scripts/deploy.js:4:25)
at /home/muskaan/moti-milo/smart-contract/scripts/deploy.js:31:9

Please help, I have been stuck for a while now.

This is my deploy.js file:

const { ethers } = require('hardhat')

const main = async() => {
    const dogeFactory = await ethers.getContractFactory('Dogecoin')
    const dogeContract = await dogeFactory.deploy()
    await dogeContract.deployed()
    console.log('Dogecoin deployed to:', dogeContract.address)

    const bitcoinFactory = await ethers.getContractFactory('Btc')
    const bitcoinContract = await bitcoinFactory.deploy()
    await bitcoinContract.deployed()
    console.log('Bitcoin deployed to:', bitcoinContract.address)


    const solanaFactory = await ethers.getContractFactory('Solana')
    const solanaContract = await solanaFactory.deploy()
    await solanaContract.deployed()
    console.log('Solana deployed to:', solanaContract.address)


    const usdcFactory = await ethers.getContractFactory('Usdc')
    const usdcContract = await usdcFactory.deploy()
    await usdcContract.deployed()
    console.log('USDC deployed to:', usdcContract.address)

}


;(async ()=>{
    try{
        await main()
        process.exit(0)
    } catch(error){
        console.error(error)
        process.exit(1)
    }
})()

I deploy using $ npx hardhat run scripts/deploy.js --network rinkeby

Best Answer

since you named your contract 'Btc' the name should be sync on your getContractFactory as well.

on your Dogecoin.sol don't use:

contract Btc is ERC20, Ownable { ...

instead use:

contract Dogecoin is ERC20, Ownable { ...

then, don't change your deploy.js. then run:

npx hardhat clean
npx hardhat deploy scripts/deploy.js --network rinkeby

it should work just fine.