Below is my smart contract (already deployed). When i try and verify it to submit the code to Etherscan I am getting the error below and I really don't know why. Please can someone advise?
npx hardhat verify --network ropsten 0xE9abA803d6a801fce021d0074ae71256C9F24Da4
Error Message:
Error in plugin @nomiclabs/hardhat-etherscan: More than one contract was found to match the deployed bytecode.
Please use the contract parameter with one of the following contracts:
* @openzeppelin/contracts/finance/PaymentSplitter.sol:PaymentSplitter
* contracts/MyNFTContract.sol: MyNFTContract
For example:
hardhat verify --contract contracts/Example.sol:ExampleContract <other args>
If you are running the verify subtask from within Hardhat instead:
await run("verify:verify", {
<other args>,
contract: "contracts/Example.sol:ExampleContract"
};
MyNFTContract.sol:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/finance/PaymentSplitter.sol";
contract MyNFTContract is PaymentSplitter {
// Addresses of payees
address[] private _CSPayees = [
0x23377d974d85C49E9CB6cfdF4e0EED1C0Fc85E6A,
0x85F68F10d3c13867FD36f2a353eeD56533f1C751
];
// Number of shares allocated per address in this contract. In same order as _CSPayees
uint256[] private _CSShares = [1, 2];
constructor() PaymentSplitter(_CSPayees, _CSShares) {}
}
My deploying script deploy.js:
async function main() {
const PaymentSplitter = await ethers.getContractFactory("MyNFTContract")
// Start deployment, returning a promise that resolves to a contract object
const myNFT = await PaymentSplitter.deploy()
console.log("Contract deployed to address:", myNFT.address)
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error)
process.exit(1)
})
I imported these
require("@nomiclabs/hardhat-waffle");
require("@nomiclabs/hardhat-etherscan");
and it worked