为什么无法从任何来源找到合约工件

问题描述 投票:0回答:3

我正在使用带有 truffle 和 ganache-cli 的 Windows 10。我有 2 个要部署的合约文件,其中包含合约中定义的其他合约的接口:

合同:

ERC721Mintable.sol

  • 可拥有
  • 可暂停即可拥有
  • ERC165
  • ERC721可暂停,ERC165
  • ERC721可枚举为ERC165、ERC721
  • ERC721MetaData是ERC721Enumerable,使用Oraclize
  • CraveuERC721Token 是 ERC721MetaData

验证器.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

ethereum truffle ganache
3个回答
4
投票

您的合约名称有错字

SolnSqaureVerifier
,应该是
SolnSquareVerifier


0
投票

将合约文件夹中的 .sol 文件重命名为您想要的任何名称。 然后再次

truffle migrate


0
投票

确保您的智能合约的文件名一致且为大写字母,例如

  • 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)
  }
© www.soinside.com 2019 - 2024. All rights reserved.