❔How does Gelato VRF Work?
Gelato VRF (Verifiable Random Function) provides a unique system offering trustable randomness on EVM-compatible blockchains. But what's the magic behind this reliable randomness? Let's see!
After reading this page:
You'll be able to understand the core components of Gelato VRF.
You'll understand how you can initiate a randomness request.
You'll be able to navigate the randomness delivery.
You'll understand how to integrate and utilize Gelato VRF.
Core Component
Drand: This is the heart of the randomness. Drand is a decentralized randomness beacon, ensuring the unpredictability and unbiased nature of the random numbers provided. To learn more about Drand and how it works, please refer to their documentation.
Top level Flow
1. Contract Deployment
The smart contract that developers need to interact with is located at GelatoVRFConsumerBase.sol
This contract serves as an interface to the Gelato VRF system, allowing other smart contracts to request and receive random numbers.
2. Requesting Randomness
Inside the GelatoVRFConsumer
contract, there's an event named RequestedRandomness
. When a randomness request is made, this event is emitted.
The RequestedRandomness
event serves as a beacon, signaling the Gelato VRF system about the need for a random number. It contains 2 parameters:
round
explicitly signifies which Drand round is targeted to fulfill the randomness,data
offers versatility for developers, it can be used to attach any supplementary information or context about the randomness request.
3. Processing the Randomness Request
Internally, the system leverages Web3 functions to listen for the emitted RequestedRandomness
event and to fetch the required random number from Drand
.
4. Delivering Randomness
Composable Callback with Arbitary Data
Internally, the system invokes the fulfillRandomness
function in the requesting contract.
Callback Invocation and Data Decoding
The random number (sourced from Drand
) is passed as the randomness
parameter to the function. Additionally, the data
parameter can carry any supplementary data provided during the original request or by the Gelato VRF.
Last updated