Verifiable Randomness Documentation

Verifiable Randomness Systems

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

Why Single-Party RNG Fails

Problem Statement

A common assumption in games, casinos, raffles, and applications is:

“If the server uses a cryptographically secure random number generator, the result is fair.”

This assumption is false.

Even when a server uses a high-quality CSPRNG, single-party control over randomness makes fairness impossible to verify. The issue is not randomness quality — it is who controls when and which random output is used.

This document explains why server-only RNGs fail structurally, not accidentally.


Randomness Quality vs Fairness

There is an important distinction that is often missed:

Randomness quality answers:
“Is this number statistically random?”

Fairness answers:
“Can any party influence or select outcomes without detection?”

A server can generate perfectly random numbers and still cheat — silently and undetectably.


The Fundamental Asymmetry

In a server-only RNG system:

The user or player:

This asymmetry alone is enough to break fairness.


Silent Outcome Selection

Consider a server generating a random number for a payout:

  1. The server generates a value
  2. If the value is unfavorable to the house, it generates another
  3. This repeats until a desirable outcome appears
  4. Only the final value is shown

From the outside:

This is not a bug. This is unavoidable in single-party RNG systems.


Post-Hoc Manipulation

Even if a server claims it generates randomness “once per request”:

Without precommitment, nothing binds the server to a specific random input before the result exists.


“We Log Everything” Is Not a Solution

Server logs do not solve the problem because:

An audit that depends on trust is not a cryptographic audit.


“We Use a CSPRNG” Is Not Enough

Cryptographically secure RNGs guarantee unpredictability — not fairness.

A CSPRNG ensures:

A CSPRNG does not ensure:

Security does not imply impartiality.


Insider Threat Model

Even in honest organizations, insider threats exist:

Single-party RNGs assume permanent honesty across all internal actors — an unrealistic model.


The Undetectability Problem

The most critical issue is this: A single-party RNG can cheat without leaving cryptographic evidence.

If cheating cannot be detected:

This is unacceptable in adversarial or value-bearing systems.


Why This Is a Structural Failure

This is not solved by:

The failure exists because one party controls randomness generation and disclosure.

As long as that remains true, fairness cannot be proven.


What Is Required Instead

To achieve verifiable fairness, a system must ensure:

  1. No single party controls the final random outcome
  2. Inputs are committed before outcomes are known
  3. Randomness depends on future, uncontrollable entropy
  4. Results can be independently recomputed

These ideas lead directly to:

These are explored starting in the next document.


Summary

Single-party RNG systems fail not because they are insecure, but because they are unverifiable.

Fairness requires removing unilateral control — not improving random number generators.

This is how BlockRand achieves this.