【问题标题】:Brownie parser error when trying to compile尝试编译时出现布朗尼解析器错误
【发布时间】:2022-01-20 01:05:34
【问题描述】:

我对编码非常陌生,在测试该合约是否可以编译时,我遇到了这个错误。我已经尝试在函数中添加一组括号,但感觉就像我越是尝试听布朗尼,它就开始对我看起来越陌生。我错过了什么吗?这是错误:

contracts/AdvancedCollectible.sol:28:18: ParserError: Expected '(' but got identifier 函数 createCollectible(uint256 userProvidedSeed, 字符串内存 tokenURI) ^---------------^

目前我写的如下:

pragma solidity 0.6.6;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@chainlink/contracts/src/v0.6/VRFConsumerBase.sol";

contract AdvancedCollectible is ERC721, VRFConsumerBase {
    
    bytes32 internal keyHash;
    uint256 internal fee;
    uint256 public tokenCounter;

    enum Color {Red, Blue, Green}
    // add other things
    mapping(bytes32 => address) public requestIdToSender;
    mapping(bytes32 => string) public requestIdToTokenURI;
    mapping(uint256 => Color) public tokenIdToColor;
    mapping(bytes32 => uint256) public requestIdToTokenId;
    event requestedCollectible(bytes32 indexed requestId); 

    constructor(address _VRFCoordinator, address _LinkToken, bytes32 _keyhash) public {
    VRFConsumerBase(_VRFCoordinator, _LinkToken);
    ERC721("Snails", "SNAIL");
        {
            keyHash = _keyhash;
            fee = 0.1 * 10**18; // 0.1 LINK
            tokenCounter = 0;
        }
        function createCollectible(uint256 userProvidedSeed, string memory tokenURI)
        public returns (bytes32)
        {
            bytes32 requestID = requestRandomness(keyhash, fee, userProvidedSeed);
            requestIdToSender[requestId] = msg.sender;
            requestIdToTokenURI [requestId] = tokenURI;
            emit requestedCollectible(requestId);
        }

        function fulfillRandomness(bytes32 requestID, uint256 randomNumber) internal override{
            address snailOwner = requestIdToSender[requestID];
            string memory tokenURI = requestIdToTokenURI[requestId];
            uint256 newItemId = tokenCounter; 
            _safeMint(snailOwner, newItemId);
            setTokenURI(newItemID, tokenURI);
            Color color = Color(randomNumber % 3);
            tokenIDToColor[newItemId] = color;
            requestIdToTokenId[requestID] = newItemId;
            tokenCounter = tokenCounter + 1; 
            }
    }

感谢大家的帮助!

【问题讨论】:

    标签: solidity brownie


    【解决方案1】:

    您的构造函数中有一个额外的大括号{。此外,父构造函数调用不应以分号 ; 结尾。

    constructor(address _VRFCoordinator, address _LinkToken, bytes32 _keyhash)
    public // removed the extra `{`
    VRFConsumerBase(_VRFCoordinator, _LinkToken) // removed the `;`
    ERC721("Snails", "SNAIL") // removed the `;`
    {
        keyHash = _keyhash;
        fee = 0.1 * 10**18; // 0.1 LINK
        tokenCounter = 0;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-04
      相关资源
      最近更新 更多