Почему не удалось найти артефакты для контракта из каких-либо источников
Я использую Windows 10 с трюфелем и Ganache-Cli. У меня есть 2 файла контрактов для развертывания, которые содержат интерфейсы других контрактов, определенных в контракте:
Контракты:
ERC721Mintable.sol
- Ownable
- Паузу можно
- ERC165
- ERC721 является паузой, ERC165
- ERC721Номерным является ERC165, ERC721
- ERC721MetaData является ERC721Numerable, используя Oraclize
- CraveuERC721Token является ERC721MetaData
Verifier.sol
SolnSquareVerifier.sol
pragma solidity >=0.4.21 <0.6.0;
import "./ERC721Mintable.sol";
import "./Verifier.sol";
contract SolnSqaureVerifier is CraveuERC721Token {
SquareVerifier squareVerifier;
constructor(address verifierAddress) public {
squareVerifier = SquareVerifier(verifierAddress);
}
Вот мой файл deploy_contracts.js:
const SquareVerifier = artifacts.require("Verifier");
const SolnSquareVerifier = artifacts.require("SolnSquareVerifier");
module.exports = function(deployer) {
deployer.deploy(SquareVerifier).then( () => {
return deployer.deploy(SolnSquareVerifier, SquareVerifier.address);
});
};
Я использую трюфель версии 5.0.18
Произошла ошибка: ошибка: ошибка: не удалось найти артефакты для SolnSquareVerifier из каких-либо источников
3 ответа
В вашем контракте есть опечатка SolnSqaureVerifier
, так должно быть SolnSquareVerifier
Убедитесь, что имя файла вашего смарт-контракта единообразно и написано заглавными буквами, например
-
HealthContract.sol
, не называй это такhealtcontract.sol
илиhealth_contract.sol
. - Внутри смарт-контракта сохраните то же соглашение об именах, указав его как
contract HealthContract
.
Пример
solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract HealthContract {
// Smart contract logic
}
С последующим
var HealthRecord = artifacts.require('HealthContract');
module.exports = function (deployer) {
deployer.deploy(HealthRecord)
}
Переименуйте файл .sol в папке контракта на любое имя, которое вы хотите. Затемtruffle migrate
снова.