Entropy beacon

Entropy

A public beacon. A new pulse lands every ~2 s.

Each pulse hashes the live plasma state into a chain anyone can walk. Nothing on this page lights up unless a check passed in your browser — and the verifier is one shell line you run yourself.

Pulse

Emitted by one node · observed and Ed25519-cosigned by an independent witness

the band behind this text is a pulse-seeded rendering — decoration, not the beacon. the beacon is the numbers below.

What it is

A chain of physics-anchored pulses.

The Ledatic MHD solver advances one step every ~2 s. The resulting plasma state is hashed, concatenated with the previous pulse hash, and posted to a public store. Anyone can walk the chain. One node produces it; an independent Ed25519 witness observes it and cosigns what it saw.

Step 1

Advance

The 128² MHD grid advances one timestep. Real physics, conservation-checked.

Step 2

Hash

SHA-256 of the plasma state. Then SHA-256 of prev_hash || state_hash.

Step 3

Publish

Published as a new pulse to a public store at the edge. Visible to the world on this page.

The source

See what’s being hashed.

An Orszag-Tang vortex on a 128² periodic grid. Ideal-MHD, Lax-Friedrichs, conservation to machine precision (Δm/m < 10-15, ΔE/E < 10-15, ∇·B at 10-15 by construction). The frame below is the same frame that gets SHA-256’d into the chain. Plasma is chaotic — small perturbations blow up fast — which is exactly the property an honest entropy beacon needs.

Orszag-Tang
Grid 128×128 Var ρ Plane 64 KB Step

The viewport reads only the density plane of each published frame — the first 64 KB after the header, min-max normalized and color-mapped on your GPU. Every kept frame is a real keyframe from /entropy/frame/current; the dissolve between keyframes is presentation. If frames stop arriving, the panel says so: stale within seconds, and after ten quiet minutes it demotes itself to replay — recorded pixels, labeled as recorded.

Each frame also ships a signed record: — press it and the proof runs here, in your tab. It checks the witness signature over the frame's digest; the solver-state bytes themselves aren't published, so the tray will say so rather than pretend it re-hashed them.

Feed

Watch the chain walk.

Pulses land newest-first. Each arriving row is checked against the one before it — the link glyph fills only when prev_value_hex matches in your browser, and a break prints red. Click any row to re-fetch its published record and compare. The full log of the last 50 lives at /entropy/pulse/log.

JavaScript is off — the chain still walks without it: fetch /entropy/pulse/log and compare each prev_value_hex yourself, or use the one-liner under Verify below.
Witness

Independently observed.

A second machine on separate hardware polls the same public chain, checks each link it sees, and signs a receipt — pulse id, value, and the moment it watched — with its own Ed25519 key. The latest receipt is republished below, and its signature is re-checked in your browser against a key pinned in this site’s source.

Observed pulse
Watched at
Gap
Chain link
Signature
Pinned key

raw receipt: /witness/fleet0/latest — the signed message is pulse_id|value_hex|witnessed_at

Verify

Walk the chain yourself.

You don’t have to take this page’s word for any of it. Each pulse carries the previous pulse’s hash in prev_value_hex; the chain check is pure arithmetic on public JSON. Pin the witness key once, and every receipt after that is checkable too.

Shell

Verify the chain in one line

curl -s https://ledatic.org/entropy/pulse/log | jq -e '. as $l | all(range(1; length); $l[.].prev_value_hex == $l[.-1].value_hex)' && echo "chain OK" || echo "chain BROKEN"

Fetches the last 50 pulses and confirms each one’s prev_value_hex matches the previous pulse’s value_hex. If anyone rewrote history mid-chain, the link breaks and you’ll see chain BROKEN.

Pulses aren’t only for checking — you can spend one. Grow a small world from a pulse: the same hash that anchors the chain seeds 32 generations of Conway’s Life, and the whole history folds into one fingerprint anyone can re-derive. The beacon chains what the plasma did; Life chains what a hash implies. Same grammar, run in the other direction.

What these numbers are not.

This is a chain, and the chain holds: every pulse names its predecessor, the links verify, and the one-line check above is the whole proof. What the chain does not give you is unpredictability, and it is worth being exact about that rather than letting the word “entropy” do work it has not earned.

Each value is the SHA-256 of one simulation frame. Identical frames therefore produce identical values, and the plasma does revisit states. Measured on 2026-08-28 across 162,082 consecutive archived pulses: 96.96% of values were unique, 233 distinct values recurred, and 3.04% of pulses repeated a value that had already been published. The repeats are not scattered. The median gap between two occurrences of the same value is 5,196 pulses, and 86% of gaps fall between 5,000 and 5,500, which at roughly one pulse per second is a period of about 87 minutes.

So an observer who records a few hours of this feed can expect to see some values again. That rules the beacon out as a source of unpredictable randomness, and we would rather say so here than have you discover it. It does not affect the two things the chain is actually used for: the links still detect tampering, and release attestations bind through pulse_id, which is unique and strictly increasing whatever the value does.

We have measured this but not fully explained it. A recurring set of only 233 states, each appearing about twenty times, is consistent with the simulation passing near a periodic orbit, and also with a frame occasionally being re-hashed rather than re-rendered. Until we can tell those apart we are not going to claim which it is.

Shell

Check the repetition yourself

for i in $(seq 1 300); do curl -s https://ledatic.org/entropy/pulse | \
  python3 -c "import sys,json;print(json.load(sys.stdin)['value_hex'])"; sleep 1; \
done | sort | uniq -d

Five minutes of sampling is usually too short to catch a repeat at an 87-minute period. The honest way to see it is the archive: pull a few thousand consecutive pulses from /entropy/pulse/<id> and count duplicate value_hex. That is exactly how the figures above were produced.