Chainlink

Chainlink VRF中的fulfillRandomness?

  • March 29, 2021

執行requestRandomness 功能後

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

requestId預設返回,但它是否也返回randomness用作函式中的參數fulfillRandomness

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

或者我是否傳入任何隨機數作為fulfillRandomness函式的參數?

在您的請求交易requestRandomness中返回一個 bytes32 並發出一個鏈下 Chainlink 節點正在尋找的事件。

一旦鏈下 Chainlink 節點讀取到事件,它就會創建隨機數,並且該節點是呼叫fulfillRandomness函式的節點**,並將它創建的隨機數與原始 requestId 一起傳遞。

使用鏈下預言機遵循請求和接收週期。您在第二次交易中獲得隨機數。

**從技術上講,節點呼叫vrf coordinator,然後呼叫fulfillRandomness 函式。但是,如果它令人困惑,請不要擔心。

引用自:https://ethereum.stackexchange.com/questions/96342