RNGInterface
Provides an interface for requesting random numbers from 3rd-party RNG services (Chainlink VRF, Starkware VDF, etc..)
Functions
getLastRequestId
function getLastRequestId(
) external returns (uint32 requestId)
Gets the last request id used by the RNG service
Return Values:
Type | Description |
---|---|
uint32 | requestId The last request id used in the last request |
getRequestFee
function getRequestFee(
) external returns (address feeToken, uint256 requestFee)
Gets the Fee for making a Request against an RNG service
Return Values:
Type | Description |
---|---|
address | feeToken The address of the token that is used to pay fees |
uint256 | requestFee The fee required to be paid to make a request |
requestRandomNumber
function requestRandomNumber(
) external returns (uint32 requestId, uint32 lockBlock)
Sends a request for a random number to the 3rd-party service
Some services will complete the request immediately, others may have a time-delay Some services require payment in the form of a token, such as $LINK for Chainlink VRF
Return Values:
Type | Description |
---|---|
uint32 | requestId The ID of the request used to get the results of the RNG service |
uint32 | lockBlock The block number at which the RNG service will start generating time-delayed randomness. |
The calling contract should "lock" all activity until the result is available via the requestId
isRequestComplete
function isRequestComplete(
uint32 requestId
) external returns (bool isCompleted)
Checks if the request for randomness from the 3rd-party service has completed
For time-delayed requests, this function is used to check/confirm completion
Parameters:
Name | Type | Description |
---|---|---|
requestId | uint32 | The ID of the request used to get the results of the RNG service |
Return Values:
Type | Description |
---|---|
bool | isCompleted True if the request has completed and a random number is available, false otherwise |
randomNumber
function randomNumber(
uint32 requestId
) external returns (uint256 randomNum)
Gets the random number produced by the 3rd-party service
Parameters:
Name | Type | Description |
---|---|---|
requestId | uint32 | The ID of the request used to get the results of the RNG service |
Return Values:
Type | Description |
---|---|
uint256 | randomNum The random number |
Events
RandomNumberRequested
event RandomNumberRequested(
uint32 requestId,
address sender
)
Emitted when a new request for a random number has been submitted
Parameters:
Name | Type | Description |
---|---|---|
requestId | uint32 | The indexed ID of the request used to get the results of the RNG service |
sender | address | The indexed address of the sender of the request |
RandomNumberCompleted
event RandomNumberCompleted(
uint32 requestId,
uint256 randomNumber
)
Emitted when an existing request for a random number has been completed
Parameters:
Name | Type | Description |
---|---|---|
requestId | uint32 | The indexed ID of the request used to get the results of the RNG service |
randomNumber | uint256 | The random number produced by the 3rd-party service |