尝试编译时布朗尼解析器错误

Brownie parser error when trying to compile

我对编码很陌生,在测试这个合约是否会编译我 运行 到这个错误时。我试过在函数中添加一组括号,但感觉我越是尝试听 brownie the st运行ger 它就开始看我了。我错过了什么吗?这是错误:

contracts/AdvancedCollectible.sol:28:18: ParserError: 应为 '(' 但得到标识符 函数 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; 
            }
    }

谢谢大家的帮助!

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

结尾
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;
}