Dogecoin The first VRF on DogeOS

Randomness
you can prove.

DogeOS VRF gives any smart contract on DogeOS a verifiable random number — with a cryptographic proof that's checked on-chain before you ever see it. Built for games, raffles and anything that needs to be fair.

Dogecoin
Doge — wow
verifyProof(γ, c, s) ✓
…
Price per request
…
Requests served
…
Callback gas
DogeOS testnet
Network
Dogecoin Why DogeOS VRF

Fair by construction

Block hashes can be influenced and timed. A VRF can't — every number comes with proof that it was derived honestly.

Dogecoin

Unforgeable

Every random number ships with an ECVRF proof tied to our public key. A number we didn't honestly derive simply fails verification — not even we can pick the outcome.

Dogecoin

Verified on-chain

The coordinator contract checks each proof before your contract ever sees the number. You don't have to trust the oracle, the sequencer, or us.

Dogecoin

Pay in DOGE

A flat fee per request in native DOGE, gas for delivery included. No tokens to buy, no subscriptions, no accounts.

Dogecoin

Battle-tested math

Proof verification uses Chainlink's open-source (MIT) secp256k1 VRF verifier, unmodified — the same cryptography securing randomness across EVM chains.

Dogecoin How it works

Request, prove, verify, done

1

Your contract requests

Call requestRandomness(seed) with the fee. You get a request id.

2

Oracle proves

Our oracle derives the random number from your request with its secret key and builds a proof.

3

Contract verifies

The coordinator checks the proof on-chain. Invalid proofs are rejected.

4

You get called back

rawFulfillRandomness(id, randomness) lands in your contract. Done.

Integrate in minutes

Two functions. That's the integration.

Request with one call, receive the number in a callback. The docs walk through a complete, tested dice-roller contract and a JavaScript client you can run today.

Raffles & lotteriesGame loot & critsNFT trait revealsFair matchmakingRandom airdropsCard shuffles
Quickstart →
YourGame.sol (simplified)
function roll() external payable returns (uint256 requestId) {
    requestId = coordinator.requestRandomness{value: msg.value}(
        keccak256(abi.encode(msg.sender, block.number))
    );
}

// called back once the proof is verified on-chain
function rawFulfillRandomness(uint256 requestId, uint256 randomness) external {
    require(msg.sender == address(coordinator));
    uint256 dice = (randomness % 6) + 1;
}
Dogecoin

Already powering Doge Raffle

Every monthly jackpot draw on Doge Raffle is decided by DogeOS VRF, with the winning ticket recorded on-chain for anyone to check.

See the raffle