Experimental app. Unaudited contracts. Funds may be at risk.Experimental app. Unaudited contracts. Funds may be at risk.Experimental app. Unaudited contracts. Funds may be at risk.Experimental app. Unaudited contracts. Funds may be at risk.
RANDOM PICKERPowered by Zama Protocol

cfdtl.xyz

Random
Picker

A provably fair draw tool. The winning index stays encrypted onchain until you reveal it — no one can predict or manipulate the outcome.

How it works

01

Create a draw

Give your draw a name and create it onchain. This registers you as the owner.

02

Add entries

Paste names, addresses, or any strings — one per line, or upload a CSV.

03

Confirm & draw

Commit the entry list onchain, then trigger the encrypted random draw.

04

Reveal the winner

Decrypt through Zama's relayer. The winner index is finalized onchain, publicly verifiable.

Why it works

Provably fair

The random value is generated and stored encrypted. Nobody — not even you — can know the outcome before the reveal.

Front-running proof

Because the value is encrypted onchain before selection, miners and observers have nothing to act on.

Publicly verifiable

Anyone can check that the entry list was committed before the draw and that the winner matches the onchain index.

Gas-efficient

Entries are stored off-chain with a Merkle root committed onchain, keeping transaction costs low regardless of draw size.

Technology

Fully Homomorphic
Encryption

FHE lets a program compute on encrypted data without ever seeing the plaintext. In Random Picker, the random index is generated as an encrypted integer (euint32) on Sepolia. The smart contract performs the modulo against the draw size — entirely on ciphertext — so the result is known to no one until you trigger the public decryption via Zama's relayer.

Once decrypted, the winner index is written onchain and the draw is permanently marked as completed. The full chain of custody is auditable by anyone.

Read the FHEVM docs ↗