Security and risks · Ethereum

Know the risks and controls.

The contract has extensive automated and AI-assisted testing. An independent professional audit remains outstanding. Fixed code and verified source do not guarantee safe funds: stakes and bankroll capital remain at risk.

Contract controlNon-upgradeable

Deployed bytecode cannot be replaced through a proxy or administrator.

Source publicationSourcify source match

The build omits the metadata fingerprint required for Sourcify’s exact-match designation. A source match verifies code provenance, not contract safety.

Cryptographic checksOfficial + differential

Ethereum vectors, drand beacons, Noble comparisons, and four execution clients are covered.

SettlementRequires a transaction

Anyone can submit a proof. Miss the deadline and all round stakes go to the bankroll, without a winner or refund.

Recorded test evidence

Reproducible checks, with limits.

The repository’s README records the 8 September 2026 review, commands, fixtures, and results. Tests cover selected properties and scenarios; they do not prove the whole contract is free of defects.

01

Authoritative precompile vectors

All 64 valid and invalid cases used by production for G1 addition, pairing, and map-to-G1 pass against pinned Ethereum execution-spec vectors.

02

Official drand implementation

64 Quicknet beacons accepted by the official Go implementation reproduce the same hash-to-curve points and accepted signatures in Solidity.

03

Noble implementation comparison

32 generated key/signature pairs match Noble’s G1 hash-to-curve output; correct pairs pass and the full wrong-key matrix fails.

04

Execution-client comparisons

An earlier Geth, Reth, Besu, and Nethermind campaign completed 199,216 calls with zero cross-client mismatches. The 8 September review repeated live checks on Geth and Reth and 49,804 local Anvil calls.

05

Gas boundary checks

Local, mainnet, and Sepolia checks cover the exact native precompile gas boundaries used by the verifier.

06

Deployment verification gates

Release tooling checks recorded source and runtime hashes, constructor values, and the canonical Sourcify URL. The operator must independently establish the source match before activation.

07

Settlement boundary tests

Unit and invariant coverage exercises the inclusive close, +132 RANDAO source, delayed Quicknet round, proof deadline, freeze gating, beneficiary-only refunds, and redemption with unpaid refunds.

08

Symbolic and static checks

Z3 checks an arithmetic model; Halmos proves early rejection paths. Neither proves full EVM correctness or BLS unforgeability. Slither and regression tests add checks within their configured scope.

External dependencies

Public inputs still depend on live infrastructure.

  • Ethereum network liveness, canonical block history, and working EIP-2935 storage
  • Correct EIP-2537 behavior across the execution clients processing transactions
  • Quicknet beacon availability and the pinned distributed public key
  • RPC availability for reads, transaction submission, and recent-block confirmation
  • Sufficient transaction fees and inclusion before the settlement proof deadline
  • A funded resolver willing to submit each proof; execution and resolver rewards are not built in
Your ticket

Know what needs a transaction.

  • Check that your fixed payout address is correct and can receive ETH before signing.
  • Save your ticket ID and check the confirmed on-chain receipt.
  • Monitor your round and submit a complete proof before its deadline.
  • Check the payout and submit a claim 3 hours after settlement, unless an emergency halt is active.
  • After ordinary freeze, complete claims, refunds, and withdrawals before the 365-day recovery delay ends. Emergency drain is immediate.
Read the settlement rules →
Fixed code. Explicit owner powers.

No discretionary odds. Defined wind-down controls.

The owner cannot upgrade the bytecode, edit ticket terms, pick a winner, or redirect a payout. It still has the following contract powers.

Emergency inconsistency halt

Winner payouts open 3 hours after settlement. An accepted conflicting result permanently halts public actions; reads remain available. The watcher checks official drand results and must submit a conflicting proof before a malicious payout is claimed. A post-payment recheck can still trigger the halt. All other owner actions are also blocked; only owner drain remains available, immediately and without freezing. Settlement accounting changes immediately. Read the exact checks →

Freeze and owner capital

Only the owner can freeze, when no closed round awaits settlement or expiry and no emergency halt is active. Open rounds are cancelled for full stake refunds to their fixed beneficiaries; betting and investment stop permanently. The owner supplies at least 1 ETH at deployment. Its shares stay locked against redemption and transfer until shutdown.

Owner cash recovery

The recovery failsafe lets the owner transfer all remaining cash immediately during an inconsistency halt, or otherwise 365 days after freeze, including funds backing unpaid claims, refunds, and bankroll shares. Accounting records remain, but the cash may be gone. Emergency recovery can remove all cash backing while claims, refunds, and withdrawals are blocked.

Reproduce locally

Run the contract checks.

These commands require a repository checkout and the README’s development dependencies. Historical fork and live-client checks additionally need read-only RPC configuration. Packaged source, compiler input, hashes, and ABI are available from the resources page.

cd contracts
make security-corpus-test
make security-generated-check
make security-formal
make check