繁体   English   中英

当我从 chainlink VRF v1 调用 getRandomNumber() function 时交易失败

[英]transaction fails when I call getRandomNumber() function from chainlink VRF v1

我正在使用 chainlink VRF v1 来获取随机数。 我正在使用 ethers.js 调用 getRandomNumber() function 但它总是失败并显示此消息: Error: transaction failed [ See: https://links.ethers.org/v5-errors-CALL_EXCEPTION ]

我的合同中有足够的 LINK,所以这不是原因。 我的代码是否还有其他可能或有任何问题?

我的智能合约:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.12;

import "@chainlink/contracts/src/v0.8/VRFConsumerBase.sol";

contract VRFConsumer is VRFConsumerBase {
    bytes32 keyHash;
    uint256 requiredFee;
    uint256 public randomResult;

    constructor()
        VRFConsumerBase(
            0x844ECf0B33EB65e1EC34AEa0d082D39879169890,
            0xa36085F69e2889c224210F603D836748e7dC0088
        )
    {
        keyHash = 0x6c3699283bda56ad74f6b855546325b68d482e983852a7a82979cc4807b641f4;
        requiredFee = 0.1 * 10**18;
    }

    function getRandomNumber() public returns (bytes32 requestId) {
        require(
            LINK.balanceOf(address(this)) >= requiredFee,
            "Not enough LINK - fill contract with faucet"
        );
        return requestRandomness(keyHash, requiredFee);
    }

    function fulfillRandomness(
        bytes32, /*requestId*/
        uint256 randomness
    ) internal override {
        randomResult = randomness;
    }
}

我的前端代码:

const provider: ethers.providers.Web3Provider = new ethers.providers.Web3Provider((window as any).ethereum;
      );
const signer: ethers.providers.JsonRpcSigner = provider.getSigner();
    const vrfConsumer = new ethers.Contract(
      this.address,
      vrfConsumerABI,
      provider
    );
    console.log("Start");
    const vrfConsumerWithSigner = vrfConsumer.connect(signer);
    const tx = await vrfConsumerWithSigner.getRandomNumber({
      gasPrice: 3000000000,
      gasLimit: 2000000,
    });
    await tx.wait();
    const result: BigNumber = await vrfConsumer.randomResult();
    console.log(result.toNumber());
    console.log("done");

我建议你检查一下Chainlink hardhat-starter-kit中的一些功能

  • 辅助函数.js
  • 任务\随机数消费者\请求随机数.js
  • 任务\随机数消费者\读取随机数.js

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM