Provably delivers cryptographically fair winner selection for XRPL raffles, NFT mints, and giveaways — anchored on-ledger, replayable by anyone, with no smart contracts and no oracle gas.
Like Chainlink VRF, randomness is requested before the outcome matters and verified after — but Provably runs natively on XRPL using ledger-close entropy instead of cross-chain oracle callbacks.
Provably generates a server seed, publishes only its hash, and anchors that hash on XRPL before entries close and before the entropy ledger exists.
Entries lock. A target XRPL ledger closes. Its hash becomes public entropy nobody could predict at commit time — the XRPL equivalent of waiting for a block hash.
The server seed is revealed. Anyone independently reruns Fisher-Yates selection and gets the same winner — or catches a cheat instantly.
Chainlink VRF solves randomness on Ethereum and L2s. Provably solves it where XRPL projects actually live.
| Chainlink VRF | Provably | |
|---|---|---|
| Network | EVM chains (ETH, Polygon, …) | XRPL mainnet |
| Smart contracts | Required | Not required |
| Public entropy | Block hash via oracle | XRPL ledger hash |
| On-ledger proof | Contract events | Commit / reveal memos |
| Independent verify | Yes | Yes — open source verifier |
| Gas per draw | LINK + gas fees | ~2 drops (memo txs) + $WAFFL |
Tier 1 is live today on the Provably API (mainnet). Tier 2 multiparty seeds are on the roadmap — same verifier philosophy, stronger operator resistance.
"Provably fair and independently verifiable"
"No single party can manipulate this draw"
Your app never touches randomness logic. Commit when the raffle opens, reveal when it closes, post the verify URL with the winner.
// Drop-in client — same pattern as Chainlink VRF request/fulfill const { ProvablyClient } = require('provably/src/client'); const provably = new ProvablyClient({ apiKey: 'pb_live_…', baseUrl: 'https://api.provably.waffl.fun', }); // When your raffle opens — lock the commitment const { drawId } = await provably.commit({ winnerCount: 1 }); // When your raffle closes — reveal winner + proof const entries = raffle.entrants.map(e => e.wallet); const { winners, verifyUrl } = await provably.reveal(drawId, entries); console.log(`Winner: ${winners[0]} — verify: ${verifyUrl}`);
Any project that picks a winner from a list and needs to prove they didn't rig it.
Ticket-based draws with destination tags — prove the winner after the pool closes.
Fair winner selection for XLS-20 collections without custom contract logic.
Launchpads and community sites run provably fair draws via the WAFFL embed API.
Lock a holder list hash, draw from it, publish a verify link with the result.
Random allocation of whitelist slots with an auditable proof.
Any XRPL app that needs unbiased randomness without building crypto from scratch.
Don't trust the operator. Don't trust Provably's server. Run the check yourself.
Prepaid $WAFFL balance — fund once, draw as needed. Each commit debits your account (Tier 1 draws today).
Per commit (winner selection). Reveal + public verify URL included.
pb_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxNo. XRPL has no general-purpose smart contracts. Provably uses commit-reveal memos, ledger-close entropy, and deterministic selection — all verifiable off-chain and anchored on-ledger.
Chainlink VRF delivers randomness to EVM contracts via oracle callbacks. Provably delivers the same guarantee to XRPL projects using ledger hashes instead of block callbacks, with no contract deployment.
Yes. The verifier shares no state with our servers. Download the proof, run node src/verifier.js proof.json, or use the public verify page.
No. Provably is a standalone service. Your live raffles keep working exactly as they do today until you opt in per campaign.
Tier 1 only. Commit-reveal, three entropy inputs, Fisher-Yates selection, and public verification are on mainnet today. Tier 2 (multiparty seed contributors) is planned for a later phase — not available in the API yet.
We issue a pb_live_… API key. Send $WAFFL to your assigned treasury address with that key in the transaction memo. Each commit costs 1200 $WAFFL from your prepaid balance.
Next phase. Multiple independent parties would each commit a seed hash before the draw; the combined seed would be verified from all reveals — so no single operator, including WAFFL, could pick the seed alone. Same direction as drand / League of Entropy, not shipped yet.