导入 OpenZeppelin 的 ERC721Full.sol 库时解析错误

时间:2021-07-14 16:45:29

标签: solidity openzeppelin nft

当我尝试使用 truffle 编译我的智能合约时,出现了以下错误: 解析@openzeppelin/contracts/token/ERC721/ERC721.sol 时出错:ParsedContract.sol:51:72:ParserError:应为“{”,但保留关键字“override”。

我的智能合约:

pragma solidity 0.5.0;

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

contract Color is ERC721 {} 

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

1 个答案:

答案 0 :(得分: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