获取合约工厂的代码如下
await ethers.getContractFactor该方法中支持两种传参方式:
1、直接传入合约名称
const contract = await ethers.getContractFactory("MockV3Aggregator")2、传入合约的具体地址+合约名称
const contract = await ethers.getContractFactory("contracts/MockV3Aggregator.sol:MockV3Aggregator2")
两种传参方式分别存在两种潜在的问题
1、直接传入合约名称
如果contracts目录下存在多个同名的合约,那么此时会报错,就必须通过具体路径来定位到合约
2、传入合约的具体地址+合约名称
如果该合约不是自定义的,而是直接导入的,那么该方式不支持,会直接报错,比如:
const contract = await ethers.getContractFactory("contracts/MockV3Aggregator.sol:MockV3Aggregator")由于合约
MockV3Aggregator是通过代码导入进来的,这种就不被支持import "@chainlink/contracts/src/v0.8/tests/MockV3Aggregator.sol";

