当我尝试使用 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 {}
有谁知道如何解决这个问题?我知道这不是一个新问题,但我还没有找到对我有用的堆栈溢出或其他论坛解决方案。提前致谢。
答案 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