Verifiable Randomness Documentation

Verifiable Randomness Systems

View the Project on GitHub blockrand-api/blockrand-js

The Double-Blind Entropy Model

Why neither the player nor the server should ever control randomness alone — and how combining secrets with public entropy fixes it.

The Problem

Most randomness systems fail for the same fundamental reason:
Someone controls the entropy.

If a single party can influence, delay, or observe randomness before committing to an action, fairness collapses. This applies whether that party is:

Even well-intentioned systems fail under incentives.

The core question is:
How do you design randomness so that no participant can bias the outcome?

Why Single-Source Entropy Always Fails

Let’s examine the usual approaches.

Server-Only Randomness

The server generates a random number and returns it.

Problems:

Even if the math is correct, trust is required.

Player-Only Randomness

The client generates randomness and submits it.

Problems:

This is especially dangerous in adversarial games.

Third-Party Randomness (Oracles)

Randomness comes from an external service.

Problems:

Trust is simply outsourced, not eliminated.

The Core Insight

Fair randomness requires multiple independent entropy sources.

Specifically:

  1. No single party should know the final randomness in advance
  2. No single party should be able to change it after the fact
  3. The final output must be reproducible by anyone

This leads to the double-blind entropy model.

What “Double-Blind” Means Here

In a double-blind randomness system:

  1. The player contributes secret entropy
  2. The server contributes secret entropy
  3. A public, future entropy source finalizes the result

Crucially:

Neither side is trusted. Both are constrained.

The Three Entropy Components

1. Player Secret

The player provides a secret value.

Properties:

This prevents the server from fully controlling outcomes.

2. Server Secret

The server provides its own secret.

Properties:

This prevents the player from brute-forcing outcomes.

3. Public Future Entropy

A publicly verifiable entropy source, revealed later.

Examples:

Properties:

This locks the system in time.

How They Combine

At reveal time, all three inputs are combined deterministically.

Conceptually:

final_randomness = hash(player_secret, server_secret, public_entropy)

Important characteristics:

The system becomes self-auditing.

Why This Model Works

No Advance Knowledge

No one can predict outcomes in advance.

No Post-Hoc Manipulation

Cheating leaves fingerprints.

Independent Verification

Anyone can:

  1. Recompute the final randomness
  2. Verify all commitments
  3. Confirm the public entropy source

Trust shifts from people to math.

Where This Matters

The double-blind entropy model is essential in:

If incentives exist, this model is mandatory.

What This Model Does Not Solve

It does not:

It strictly guarantees unbiased randomness generation.
Nothing more. Nothing less.

The Takeaway

If one party controls randomness, the system is unfair.
If multiple parties contribute entropy but can see each other’s inputs, the system is manipulable.

Only a double-blind, multi-entropy design produces truly verifiable randomness.

Everything else is a trust assumption in disguise. This Double-Blind Entropy Model with public (drand) entropy is the backbone of BlockRand