The 30-second summary
drand is a public, distributed randomness beacon run by the League of Entropy. Every round (typically every 3-30 seconds) a network of independent nodes produces a single BLS-threshold-signed random value that nobody could have predicted in advance. It's genuinely impressive infrastructure — and it solves a slightly different problem.
Provable.io is a per-call API. You bring a clientSeed, the server publishes a hash of its seed in advance, and the response is reproducible by anyone with the seeds. drand gives you "the same global random number everyone else is using right now"; Provable.io gives you "a private draw with a published proof."
Feature matrix
| Capability | Provable.io | drand |
|---|---|---|
| Model | Per-call commit-reveal API | Public distributed beacon (BLS threshold sig) |
| Trust assumption | Server publishes serverHash before draw | Threshold of drand nodes is honest |
| Latency | ~tens of ms (network) | Round-based (e.g. 3s, 30s) |
| Same value for everyone? | No — per-call, scoped to your clientSeed | Yes — every round is global |
| Pre-commitment | Yes — explicit | Implicit — round number is published in advance |
| Game primitives | dice, shuffle, weighted pick, bytes, distributions | Raw 32-byte value per round |
| Self-hostable | Yes | Yes (run your own drand network) |
| Best for | Per-user draws, raffles, A/B buckets, shuffles | Cross-system coordination, lotteries with global timing |
When drand is the right answer
drand shines when you need a value that everyone sees at the same time and no single party produced:
- Cross-system lotteries with a public, predictable schedule ("the round at 2026-06-01 00:00 UTC determines the winner").
- Anchoring off-chain state to a value no participant could have biased.
- Distributed protocols needing a common coin.
When Provable.io is the right answer
drand gives you one global value per round. Most app-level draws need per-call, per-user, and at arbitrary times. Reach for Provable.io when:
- Each user gets their own draw (raffle entries, gacha pulls, deck shuffles). See card shuffler.
- You need higher-level primitives like
NdMdice or weighted pick out of the box. See dice & coins. - You need sub-second response rather than waiting for the next beacon round.
- The draw is private and only the proof is public.
Try it now
A per-call draw with a published proof — no waiting for the next beacon round.
curl "https://api.provable.io/api/ints?clientSeed=vs-drand-demo&count=1&min=1&max=1000000"
FAQ
Can I use a drand round as my clientSeed?
Yes, and it's a great pattern. Use a future drand round as the clientSeed: neither side controls it, and the result becomes verifiable against both Provable.io and drand.
Is drand stronger?
Different shape, not stronger. drand removes the single-operator trust assumption that Provable.io has; Provable.io removes the global-timing and primitive-poverty constraints that drand has. They compose well.
What's the Cloudflare randomness beacon?
Cloudflare operates a public drand endpoint. See the dedicated comparison.