Contracts
Source lives in the repo under contracts/. Foundry script Deploy.s.sol targets Saigon then mainnet. Fulfillment verifies a Chainlink-format VRF proof with the audited, vendored Chainlink VRF.sol (the same verifier native Ronin VRF uses). The proof seed binds the request blockhash, request id, consumer and the oracle key hash; the oracle set is snapshotted per request, so neither the oracle nor the owner can produce a second valid output for the same request.
| Network | Chain ID | Coordinator | Status |
|---|---|---|---|
| Ronin mainnet | 2020 | 0xC66eB2e7EE91145875000Ad46B55600000000001 | live |
| Saigon | 202601 | 0xC66eB2e7EE91145875000Ad46B55600000000001 | live |
One CREATE3 address on both chains. Consumers always point at the coordinator address above; it is a proxy and the only address you use.
- RandooVRFCoordinator: Ronin pay-per-request. Subscriptions frozen.
- Drop-in for the standard
VRFConsumerbase: keep inheriting it and swap the coordinator address at deploy. - Payment is computed on-chain from gasleft × declared gasPrice.
- Same consumer interface as native Ronin VRF, not a semantic clone: seed derivation, events, and errors differ, and the coordinator is not the native proxy.
- VRF proving key and gas wallet are separate keys; oracles rotate in turn and misses are counted on-chain per key hash.
- DualVrfRace: playground harness that fires both coordinators in one transaction so the head-to-head shares a request block.
Last verified 2026-08-25.