|Φ⁺⟩ENTANGLEMENT $ENTNGL · 𝕏 @entngl
05 · DAILY DRAW

One holder wins every day

The rule is fixed before the qubits are measured. Neither the qubits nor the drand round can be chosen by us, so the winner can't be either. Prizes come from creator fees.

Rule
  • HoldersSnapshot at 17:50 UTC, written on Solana first. Every program-owned account is left out automatically: bonding curve, pools, vaults and lockers.
  • JobRight after: the day's experiment (the holders' vote) on an IBM quantum processor, thousands of shots.
  • CommitThe hash of the raw outcomes is written on Solana as soon as the job ends. Only the first commit of the day counts.
  • SealThe first drand round after the commit is on chain. Nobody can know it in advance, so the timing can't be gamed.
  • OddsProportional to the tokens you hold, above the minimum balance. Every token is a ticket, so splitting a bag across wallets gains nothing.
  • Prize30% of all creator fees goes straight to the prize vault (20% to buybacks, 50% to the team) through pump.fun's own fee sharing, locked: the team cannot change it. Sent automatically around 18:00 UTC with the day's Entanglement Certificate. Nothing to claim.
  • ProofJob id, backend, raw counts, S, drand round, value, snapshot hash and payout transaction, all public.
Sample draw · 12 example holders · odds by balance
value → ticket —
07 · ORACLE

Every daily Bell test, on Solana

Each day's job becomes an account on Solana: the backend, the job id, the raw counts, the measured S, the drand round that sealed it and the final value. Any program can read it.

DayIBM jobShotsS meas.drand roundValueCheck
oracle feed · sample data
10 · VERIFY

Check it yourself

Every input is published. Recompute the value from the raw counts and the drand round, compare it with the oracle, then recompute the winner from the snapshot.

// 1. the day's published run: backend, job id, raw outcomes in shot order
const run = await fetch("/runs/2026-10-10.json").then(r => r.json())
const raw = run.settings.map(k => k + ":" + run.raw_outcomes[k].join("")).join(";")  // settings order, not object key order

// 2. the commit stored on Solana BEFORE the drand round existed must match the raw outcomes
const rec = await oracle.account.dailyRecord.fetch(recordPda(run.day))
assert(hex(sha256(raw)) === hex(rec.commit))

// 3. the drand quicknet round that sealed it (nobody controls drand)
const QUICKNET = "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"
const beacon = await fetch(`https://api.drand.sh/${QUICKNET}/public/${rec.drandRound}`).then(r => r.json())

// 4. value = SHA-256(raw outcomes ‖ drand randomness bytes), must match the oracle
assert(hex(sha256(concat(utf8(raw), fromHex(beacon.randomness)))) === hex(rec.value))

// 5. the winner from the published snapshot (rejection sampling keeps every entry equal)
const winner = pickUniform(rec.value, snapshot.holders)