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
Create a draw
Give your draw a name and create it onchain. This registers you as the owner.
Add entries
Paste names, addresses, or any strings — one per line, or upload a CSV.
Confirm & draw
Commit the entry list onchain, then trigger the encrypted random draw.
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 ↗