XCH RAFFLEDecentralized. Secure. Truly random.

Security status · evidence, not slogans

Evidence you can inspect. No external audit is planned.

The deployed puzzle rules are public on Chia. The current source has an internal adversarial review, automated CLVM and Python tests, consensus-level signature validation and live Testnet11 runs. That is meaningful evidence, but it is not a third-party security audit or a guarantee of zero defects.

Internal findingsFixed · report not published
Independent external auditNot planned · replaced by an adversarial live-run and puzzle freeze
Current deploymentTestnet11 only

Evidence gates

What the project actually checks.

No single test proves the whole system safe. The useful claim is narrower: independent layers are compared, malformed cases are rejected, and transactions that reach the network are checked by the same consensus validator used to judge a spend bundle.

Economics

Python totals match pot.clsp

The storefront’s prize forecast is compared against the real CLVM payout conditions, including one, two and three-winner cases, sponsor thresholds, bounty, jackpot and rollover.

Consensus

Signatures are truly validated

Before broadcast, the signed spend bundle passes Chia’s consensus-level CLVM and aggregate-signature validator with Testnet11 constants. Condition extraction alone is not treated as signature proof.

Adversarial

Negative paths must fail

Tests cover forged claims, wrong beacons, late tickets, payout redirection, duplicate or oversized inputs, reorg cache cleanup and malformed external responses.

Live chain

Real Testnet11 transactions

Deployment, Sage WalletConnect signing, mempool acceptance, ticket claims and settlement have been exercised against a real Testnet11 full node.

Randomness

drand proof inside CLVM

The fixed Quicknet group key and round message are used to verify the published BLS signature. A signature for another round does not satisfy the puzzle.

Accounting

Every mojo has a destination

Winner outputs, the 1% executor bounty, jackpot reserve and next-table output conserve the pool; integer rounding goes into rollover rather than disappearing.

Permissionless settlement

Anyone may verify or submit the draw.

Independent verification is read-only. A person can read the genesis, ticket coins and drand signature, then reproduce every score without this website. The Verify page is a convenient view, not an extra source of truth.

Settlement is permissionless. Anyone may independently calculate and submit a valid census, merge, payout, refund or sweep transaction. A public reference claimer is planned before mainnet to make those steps reproducible without the operator’s tooling. The first valid census submitter may receive the published 1% executor bounty, but cannot replace the winner, refund owner or protocol destinations.

Terminology matters. Running the raffle verifier or settlement driver does not make someone a Chia consensus “validator.” It makes them an independent verifier and transaction submitter. Chia consensus remains the network’s job.
Verify a tableOpen repository · URL pending

Public source map

Where each claim can be checked.

The official repository URL has not been supplied, so the site deliberately shows a disabled placeholder instead of linking to an invented or unverified account.

  • puzzles/ticket.clspClaim authentication, strict ticket birth deadline and permissionless refund to the embedded owner.
  • puzzles/leaderboard.clspThe production singleton state, embedded drand BLS verifier, unsigned ranking and authenticated top three.
  • puzzles/pot.clspPool merge, conservation, one payout, winner/bounty/jackpot/rollover destinations and delayed sweep.
  • puzzles/drand_beacon.clspA standalone verified-randomness primitive and test reference. Production currently uses the intentionally duplicated verifier inside the leaderboard.
  • puzzles/round_params.pyEvery address and time boundary derived from one published genesis.
  • driver/indexer.pyChain-derived tickets, sponsors and payouts used for independent reconstruction.
  • driver/ranker.py · verify.pyNear-miss standing and independent drand/ranking reproduction outside the browser storefront.
  • Reference claimer · plannedA public implementation for independently calculating and submitting settlement transactions before mainnet.
  • tests/Economic parity, CLVM execution, hostile-input, end-to-end and web contract tests.

Open limitations

What the evidence does not promise.

The protocol still depends on Chia consensus, the embedded drand Quicknet threshold key, correct genesis publication and users verifying the Sage transaction output. A website or API outage can delay convenient access even though it cannot rewrite the puzzles.

Temporary node failure, settlement liveness and archive availability remain operational risks. Connected archive files define what the website can show historically; an omitted archive is missing display data, not a rewritten chain.

Accepted P-1 boundary: mempool ordering can change how much sponsor/seed value plays now. A competitor may submit a valid partial merge and payout before the normal settlement transaction. They cannot steal funds, redirect a winner or reduce the payout below the ticket-funded share, but omitted sponsor/seed value can roll into a later table instead of increasing the current prizes. The settlement fee mitigates this race; the puzzle does not eliminate it.
Composition assumption: the pot puzzle authenticates the leaderboard result but does not independently cap the supplied place list at three. The deployed leaderboard always maintains at most three, so this is unreachable in the current composition; any future leaderboard replacement must preserve and re-audit that invariant.