请求 Chainlink VRF 随机数不成功

我在合约中,通过 Chainlink VRF 申请随机数,requestRandomWords()和官方文档中的是一样的
image.png

这个是我的输入

image.png

以下是我的 fulfillRandomWords 函数:

function fulfillRandomWords(
        uint256 _requestId,
        uint256[] memory _randomWords
    ) internal verifyMinimumHolder {
        if (block.timestamp > lastRequestTime.add(randomNumberInterval)) {
            _requestCounter.increment();
            randomWords[_requestCounter.current()] = _randomWords;
            isRequestInitialised = false;
            lastFulfilledId = _requestId;
            requestIds.push(_requestId);
            lastRequestTime = block.timestamp;
            isAvailableForInitialize = true;
            emit FulfilledRequest(
                _requestId,
                _requestCounter.current(),
                _randomWords[0],
                _randomWords[1]
            );
        }
    }

但是我的 fulfillRandomWords 一直没有被执行。

请先 登录 后评论

1 个回答

Frank|Chainlink - 开发者大使

一般 VRF 不成功,有两个原因:
第一是 VRF subscription 的 balance 不满足 minimum balance。
第二是 callbackgaslimit 设置的太低了,VRF 没法完成 fulfillRandomWords 中的操作。

你的 Callbackgaslimit 设置的是 200k,可能有点低了,改高一点试试,上限是 2.5M。

请先 登录 后评论
  • 1 关注
  • 0 收藏,2858 浏览
  • Chainlink 提出于 2022-08-17 14:49