Skip to main content
Version: V4

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:

TypeDescription
uint32requestId 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:

TypeDescription
addressfeeToken The address of the token that is used to pay fees
uint256requestFee 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:

TypeDescription
uint32requestId The ID of the request used to get the results of the RNG service
uint32lockBlock 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:

NameTypeDescription
requestIduint32The ID of the request used to get the results of the RNG service

Return Values:

TypeDescription
boolisCompleted 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:

NameTypeDescription
requestIduint32The ID of the request used to get the results of the RNG service

Return Values:

TypeDescription
uint256randomNum The random number

Events

RandomNumberRequested

  event RandomNumberRequested(
uint32 requestId,
address sender
)

Emitted when a new request for a random number has been submitted

Parameters:

NameTypeDescription
requestIduint32The indexed ID of the request used to get the results of the RNG service
senderaddressThe 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:

NameTypeDescription
requestIduint32The indexed ID of the request used to get the results of the RNG service
randomNumberuint256The random number produced by the 3rd-party service