0

当我尝试使用 truffle 编译我的智能合约时,会出现以下错误:错误解析 @openzeppelin/contracts/token/ERC721/ERC721.sol: ParsedContract.sol:51:72: ParserError: Expected '{' but got reserved关键字“覆盖”。

我的智能合约:

pragma solidity 0.5.0;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

contract Color is ERC721 {} 

有谁知道如何解决这一问题?我知道这不是一个新问题,但我还没有找到对我有用的堆栈溢出或其他论坛解决方案。提前致谢。

4

1 回答 1

0

所以你的问题是在ERC721合约中有一个constructor(string memory, string memory)函数接受两个参数,第一个是 NFT 代币名称,第二个是 NFT 代币符号。
当您在合同中继承ERC721合同时,您color必须定义一个constructor触发合同constructor的函数ERC721
简而言之,您应该如下修改您的合同:

  contract Color is ERC721 { 
    constructor(string memory name, string memory symbol) ERC721(name, symbol) { }
  }

或者如果你想有预设的名称和符号,你可以这样做:

  contract Color is ERC721 { 
    constructor()  ERC721("Name", "Symbol") { }
  }

编辑

使您的文件的代码如下:

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

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

contract MyCollectible is ERC721 {
    constructor() ERC721("MyCollectible", "MCO") {
    }
}

还要确保你已经运行npm install @openzeppelin/contracts

于 2021-07-16T19:18:39.720 回答