【问题标题】:Parsing Error when importing OpenZeppelin's ERC721Full.sol Library导入 OpenZeppelin 的 ERC721Full.sol 库时出现解析错误
【发布时间】:2023-03-29 18:00:01
【问题描述】:

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

我的智能合约:

pragma solidity 0.5.0;

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

contract Color is ERC721 {} 

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

【问题讨论】:

    标签: solidity openzeppelin nft


    【解决方案1】:

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

      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

    【讨论】:

    • 我做了这些更改,但我仍然遇到同样的错误。
    猜你喜欢
    • 2014-08-12
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 2017-08-31
    相关资源
    最近更新 更多