Consumer ABI
- Native Ronin VRF
- requestRandomSeed, estimateRequestRandomFee, rawFulfillRandomSeed
- Randoo
- Same IRoninVRFCoordinatorForConsumers surface
Ronin VRF coordinator
Randoo is a drop-in VRF coordinator. One payable requestRandomSeed returns a seed the coordinator verifies on-chain before your callback, at half the native service fee.
// your game contract. Already compiles against Randoo contract Dice is VRFConsumer { function roll() external payable { uint256 fee = RANDOO.estimateRequestRandomFee(); // send the on-chain quote; unused gas is refunded RANDOO.requestRandomSeed{value: fee}( payable(msg.sender), "refund address" ); } function rawFulfillRandomSeed( uint256 requestId, uint256 seed ) internal override { _settle(requestId, seed); } }
What is Randoo?
Randoo is a drop-in VRF coordinator for the Ronin blockchain. Game contracts call requestRandomSeed, pay extra RON with the request, and receive a verifiable random seed on-chain in about two seconds. It implements the same IRoninVRFCoordinatorForConsumers ABI as native Ronin VRF at half the $0.01 service fee, with no subscription.
requestRandomSeed with RON. Same call as native Ronin VRF.rawFulfillRandomSeed runs with the seed. Unused gas is refunded.How it works
Add verifiable randomness to a Ronin game contract with the native VRFConsumer ABI and the Randoo coordinator.
Use VRFConsumer from the Ronin random beacon. Your contract already compiles against Randoo if it compiles against native Ronin VRF.
Pass 0xC66eB2e7EE91145875000Ad46B55600000000001 into the VRFConsumer constructor instead of the native proxy. Same CREATE3 address on Ronin mainnet and Saigon.
Call estimateRequestRandomFee, then requestRandomSeed with msg.value at least that quote and a non-zero refund address.
The oracle proves the seed. Your rawFulfillRandomSeed (or _fulfillRandomSeed) runs with the verified seed. Unused RON is refunded.
Randoo implements the Ronin VRF coordinator interface. Deploy your consumer with the Randoo coordinator instead of the native proxy. Nothing else in your contract changes.
import {VRFConsumer} from "@ronin-chain/ronin-random-beacon/contracts/consumer/VRFConsumer.sol";// your game contractcontract Dice is VRFConsumer {- constructor() VRFConsumer(0x16a62a921e7fec5BF867Ff5C805B662Db757b778) {}+ constructor() VRFConsumer(0xC66eB2e7EE91145875000Ad46B55600000000001) {}function roll() external payable {_requestRandomness(msg.value,250_000,20e9 + block.basefee * 2,msg.sender);}function _fulfillRandomSeed(bytes32 reqHash, uint256 seed) internal override { _settle(seed); }}
Same requestRandomSeed, same rawFulfillRandomSeed, same fee quoting. Your consumers compile against Randoo unchanged.
Versus native Ronin VRF
Native Ronin VRF (Sky Mavis) charges $0.01 plus gas. Randoo is a separate coordinator with the same consumer ABI. Games opt in by changing one constructor argument.
What VRF is for
If the outcome has to be random and the player has to be able to check it, request a seed. Typical uses: loot boxes, dice, NFT reveals, raffles.
Roll item rarity on-chain so players can verify the drop. The seed is proven before your callback assigns the item.
Settle a roll, shuffle, or critical hit with a seed the loser can check on the explorer, not a number the server picked.
Assign token IDs or reveal metadata from a VRF seed so mint order cannot be ground after the request is in flight.
Pick a winner from a snapshot of entries. The request is bound to a blockhash; the proof is checked on-chain.
Gas spikes, nonce races, stuck fulfill transactions, callback reverts. The oracle absorbs them; your consumer only sees a seed or a refund.
Confirmation is one block. The oracle picks the request up within milliseconds of that block and starts proving.
The coordinator checks the VRF proof on-chain before it calls you back. A bad proof never reaches your consumer.
About two seconds p50 from request to callback. Live p50 and success rate are at the top of this page.
A stuck fulfill transaction is resubmitted at 1.25× gas, up to three times, still billed at your declared price.
Pricing
Native Ronin VRF charges $0.01 plus gas per request. Randoo bills … in RON (…) plus estimated fulfillment gas. The price is quoted on-chain before you send.
Full pricing+ estimated fulfillment gas · overpayment refunded
Answers
Short answers. The structured data on this page uses the same wording, so what an answer engine quotes is what you read here.
Randoo is a drop-in VRF coordinator for Ronin. Game contracts call requestRandomSeed on the Randoo coordinator, pay extra RON with the request, and receive a verifiable random seed on-chain in about two seconds. It uses the same consumer ABI as native Ronin VRF at half the service fee.
A verifiable random function produces a random output plus a proof that the output was computed from a secret key and a public input. On-chain VRF lets a game contract trust a random seed without trusting the oracle that delivered it. The coordinator checks the proof before calling the consumer back.
A VRF coordinator is the on-chain contract that accepts randomness requests, holds the prepaid fee, and later calls the consumer with a verifiable random seed. On Ronin, consumers talk to a coordinator through requestRandomSeed, estimateRequestRandomFee, and rawFulfillRandomSeed.
A game contract sends RON with requestRandomSeed. An oracle waits for confirmations, produces a VRF proof bound to that request, and the coordinator verifies the proof on-chain before calling rawFulfillRandomSeed on the consumer. Unused gas is refunded to the refund address.
Inherit Ronin's VRFConsumer, deploy it with a coordinator address, quote estimateRequestRandomFee, and call requestRandomSeed with enough msg.value. The seed arrives in rawFulfillRandomSeed. Point the constructor at Randoo instead of the native coordinator to use Randoo.
Native Ronin VRF charges a $0.01 service fee in RON plus fulfillment gas. Randoo bills half that service fee, quoted on-chain, plus estimated fulfillment gas. There is no subscription. Overpayment is refunded after the callback.
Change the coordinator address in your consumer constructor to 0xC66eB2e7EE91145875000Ad46B55600000000001. That CREATE3 address is the same on Ronin mainnet and Saigon. Keep requestRandomSeed, estimateRequestRandomFee, and rawFulfillRandomSeed. No other consumer code has to change. Rehearse on Saigon before mainnet.
Yes. Randoo implements IRoninVRFCoordinatorForConsumers: requestRandomSeed, estimateRequestRandomFee, and rawFulfillRandomSeed. It is an ABI drop-in, not a semantic clone: seed derivation and deploy shape differ from the native proxy.
No. Randoo v1 is pay-per-request on Ronin. You send the fee with the request. There is no subscription ID, no LINK token, and no need to fund a Chainlink billing account.
Randoo targets about two seconds p50 from request to callback under normal conditions. Pickup is milliseconds after confirmation; the oracle then proves and fulfills. Live p50 and success rate are published on the homepage.
No. Native Ronin VRF is the Sky Mavis coordinator at a well-known proxy. Randoo is a separate coordinator with the same consumer ABI, a lower service fee, and its own oracle set. Games opt in by pointing at Randoo's address.
Race the native coordinator head to head and see whose seed lands first.